diff --git a/CHANGELOG.md b/CHANGELOG.md index 1695a3cc..b258ba0b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,7 +1,7 @@ # @vladmandic/human Version: **1.2.4** -Description: **Human: AI-powered 3D Face Detection, Face Embedding & Recognition, Body Pose Tracking, Hand & Finger Tracking, Iris Analysis, Age & Gender & Emotion Prediction & Gesture Recognition** +Description: **Human: AI-powered 3D Face Detection, Face Description & Recognition, Body Pose Tracking, Hand & Finger Tracking, Iris Analysis, Age & Gender & Emotion Prediction & Gesture Recognition** Author: **Vladimir Mandic ** License: **MIT** @@ -11,6 +11,1275 @@ Repository: **** ### **HEAD -> main** 2021/03/23 mandic00@live.com +- improve fact matching + +### **1.2.4** 2021/03/23 mandic00@live.com + + +### **1.2.3** 2021/03/21 mandic00@live.com + + +### **1.2.2** 2021/03/21 mandic00@live.com + +- precise face rotation + +### **1.2.1** 2021/03/21 mandic00@live.com + +- new module: face description + +### **1.1.11** 2021/03/21 mandic00@live.com + +- refactor face classes + +### **1.1.10** 2021/03/18 mandic00@live.com + +- cleanup +- redefine tensor +- enforce types +- regen type declarations +- switch to single jumbo dts +- type definitions + +### **1.1.9** 2021/03/17 mandic00@live.com + +- fix box clamping and raw output +- hierarchical readme notes + +### **1.1.8** 2021/03/17 mandic00@live.com + +- add experimental nanodet object detection +- full models signature +- cleanup + +### **1.1.7** 2021/03/16 mandic00@live.com + +- fix for seedrandom +- custom typedoc + +### **1.1.6** 2021/03/15 mandic00@live.com + +- implement human.match and embedding demo + +### **1.1.5** 2021/03/15 mandic00@live.com + +- full rebuild + +### **1.1.4** 2021/03/14 mandic00@live.com + +- fix broken build + +### **1.1.3** 2021/03/14 mandic00@live.com + +- added api specs +- add typedocs and types +- strong typings + +### **1.1.2** 2021/03/12 mandic00@live.com + +- distance based on minkowski space and limited euclidean space +- guard against invalid input images + +### **1.1.1** 2021/03/12 mandic00@live.com + +- switched face embedding to mobileface + +### **1.0.4** 2021/03/11 mandic00@live.com + +- add face return tensor +- add test for face descriptors +- wip on embedding +- simplify face box coordinate calculations +- annotated models and removed gender-ssrnet +- autodetect inputsizes + +### **1.0.3** 2021/03/10 mandic00@live.com + +- strong typing for public classes and hide private classes +- re-added blazeface-front +- enhanced age, gender, emotion detection +- full rebuild + +### **1.0.2** 2021/03/09 mandic00@live.com + +- remove blazeface-front, blazepose-upper, faceboxes +- remove blazeface-front and faceboxes + +### **release: 1.0.1** 2021/03/09 mandic00@live.com + + +### **1.0.1** 2021/03/09 mandic00@live.com + +- fix for face detector when mesh is disabled +- optimize for npm + +### **0.40.9** 2021/03/08 mandic00@live.com + +- fix performance issue when running with low confidence + +### **0.40.8** 2021/03/08 mandic00@live.com + + +### **0.40.7** 2021/03/06 mandic00@live.com + +- implemented 3d face angle calculations + +### **0.40.6** 2021/03/06 mandic00@live.com + +- add curve draw output + +### **0.40.5** 2021/03/05 mandic00@live.com + +- fix human.draw + +### **0.40.4** 2021/03/05 mandic00@live.com + +- cleanup blazepose code +- fix demo + +### **0.40.3** 2021/03/05 mandic00@live.com + + +### **0.40.2** 2021/03/05 mandic00@live.com + +- added blazepose-upper + +### **0.40.1** 2021/03/04 mandic00@live.com + +- implement blazepose and update demos +- add todo list + +### **0.30.6** 2021/03/03 mandic00@live.com + +- fine tuning age and face models + +### **0.30.5** 2021/03/02 mandic00@live.com + +- add debug logging flag + +### **0.30.4** 2021/03/01 mandic00@live.com + +- added skipinitial flag + +### **0.30.3** 2021/02/28 mandic00@live.com + +- typo + +### **0.30.2** 2021/02/26 mandic00@live.com + +- rebuild +- fix typo + +### **0.30.1** 2021/02/25 mandic00@live.com + + +### **0.20.11** 2021/02/24 mandic00@live.com + + +### **0.20.10** 2021/02/22 mandic00@live.com + + +### **0.20.9** 2021/02/21 mandic00@live.com + +- remove extra items +- simmilarity fix + +### **0.20.8** 2021/02/21 mandic00@live.com + +- embedding fix + +### **0.20.7** 2021/02/21 mandic00@live.com + +- build fix + +### **0.20.6** 2021/02/21 mandic00@live.com + +- embedding fix + +### **0.20.5** 2021/02/21 mandic00@live.com + +- fix imagefx and add dev builds + +### **0.20.4** 2021/02/19 mandic00@live.com + +- 0.20.4 + +### **0.20.3** 2021/02/17 mandic00@live.com + +- rebuild + +### **0.20.2** 2021/02/13 mandic00@live.com + +- merge branch 'main' of https://github.com/vladmandic/human into main +- create codeql-analysis.yml +- create security.md +- add templates + +### **0.20.1** 2021/02/08 mandic00@live.com + +- menu fixes +- convert to typescript + +### **0.11.5** 2021/02/06 mandic00@live.com + +- added faceboxes alternative model + +### **0.11.4** 2021/02/06 mandic00@live.com + + +### **0.11.3** 2021/02/02 mandic00@live.com + + +### **0.11.2** 2021/01/30 mandic00@live.com + +- added warmup for nodejs + +### **update for tfjs 3.0.0** 2021/01/29 mandic00@live.com + + +### **0.11.1** 2021/01/29 mandic00@live.com + + +### **0.10.2** 2021/01/22 mandic00@live.com + + +### **0.10.1** 2021/01/20 mandic00@live.com + + +### **0.9.26** 2021/01/18 mandic00@live.com + +- fix face detection when mesh is disabled +- added minification notes +- version bump + +### **0.9.25** 2021/01/13 mandic00@live.com + +- added humangl custom backend +- rebuild +- code cleanup and enable minification +- fix safari incopatibility + +### **0.9.24** 2021/01/12 mandic00@live.com + +- work on blazepose +- full rebuild + +### **0.9.23** 2021/01/11 mandic00@live.com + +- added iris gesture +- fix emotion labels +- full rebuild + +### **0.9.22** 2021/01/05 mandic00@live.com + +- remove iris coords if iris is disabled +- web worker fix + +### **0.9.21** 2021/01/03 mandic00@live.com + + +### **0.9.20** 2021/01/03 mandic00@live.com + +- stricter linting, fix face annotations + +### **0.9.19** 2020/12/23 mandic00@live.com + +- added rawbox and rawmesh +- variable name changes, setting .rawcoords only if necessary +- option to return raw data (mesh, box) for facemesh / "preserve aspect ratio" fix from facemesh upstream + +### **0.9.18** 2020/12/16 mandic00@live.com + +- add z axis scaling +- major work on body module +- republish due to tfjs 2.8.0 issues + +### **0.9.17** 2020/12/15 mandic00@live.com + +- added custom webgl backend + +### **0.9.16** 2020/12/12 mandic00@live.com + +- change default ports + +### **0.9.15** 2020/12/11 mandic00@live.com + +- improved caching and warmup +- rebuild + +### **0.9.14** 2020/12/10 mandic00@live.com + +- conditional hand rotation +- staggered skipframes +- fix permissions + +### **0.9.13** 2020/12/08 mandic00@live.com + +- implemented face and hand boundary checks +- embedded sample for warmup +- switch to central logger + +### **0.9.12** 2020/11/26 mandic00@live.com + +- minor compatibility fixes + +### **0.9.11** 2020/11/23 mandic00@live.com + +- implement multi-person gestures +- modularize pipeline models + +### **0.9.10** 2020/11/21 mandic00@live.com + +- changed build for optimized node & browser + +### **0.9.9** 2020/11/21 mandic00@live.com + +- new screenshots +- camera exception handling + +### **0.9.8** 2020/11/19 mandic00@live.com + +- force f16 textures +- bugfix embedding check + +### **0.9.7** 2020/11/19 mandic00@live.com + +- ui redesign + +### **0.9.6** 2020/11/18 mandic00@live.com + +- optimize camera resize on mobile +- completed tfjs wrapper + +### **0.9.5** 2020/11/17 mandic00@live.com + +- fix serious performance bug around skipframes +- swtich to custom tfjs bundle + +### **0.9.4** 2020/11/17 mandic00@live.com + +- swtich to tfjs source import + +### **0.9.3** 2020/11/16 mandic00@live.com + +- switched to minified build + +### **release: 1.2** 2020/11/15 mandic00@live.com + +- full rebuild + +### **0.9.2** 2020/11/14 mandic00@live.com + +- fix camera restart on resize + +### **0.9.1** 2020/11/13 mandic00@live.com + +- version bump +- full rebuild +- implemented face embedding +- added internal benchmark tool + +### **0.8.8** 2020/11/12 mandic00@live.com + +- reduced bundle size +- implemented buffered processing +- fix for conditional model loading + +### **0.8.7** 2020/11/11 mandic00@live.com + +- added performance notes +- added notes on models +- fix bug in async ops and change imports +- fix wiki links + +### **0.8.6** 2020/11/09 mandic00@live.com + +- add wasm bundle + +### **0.8.5** 2020/11/09 mandic00@live.com + +- reimplemented blazeface processing + +### **0.8.4** 2020/11/09 mandic00@live.com + +- added additional gestures +- implemented blink detection +- fix wasm module + +### **0.8.3** 2020/11/08 mandic00@live.com + +- refresh +- optimizations + +### **0.8.2** 2020/11/08 mandic00@live.com + +- fix typos +- commit + +### **0.8.1** 2020/11/07 mandic00@live.com + +- fix hand detection performance +- optimized model loader +- merge branch 'main' of https://github.com/vladmandic/human into main +- created wiki +- delete bug_report.md +- optimize font resizing +- fix nms sync call + +### **0.7.6** 2020/11/06 mandic00@live.com + +- fixed memory leaks and updated docs +- model tuning +- cache invalidation improvements +- full async operations + +### **0.7.5** 2020/11/05 mandic00@live.com + +- implemented dev-server + +### **0.7.4** 2020/11/05 mandic00@live.com + +- fix canvas size on different orientation +- switched from es2020 to es2018 build target + +### **0.7.3** 2020/11/05 mandic00@live.com + +- optimized camera and mobile layout +- fixed worker and filter compatibility +- removed test code + +### **0.7.2** 2020/11/04 mandic00@live.com + +- major work on handpose model + +### **0.7.1** 2020/11/04 mandic00@live.com + +- changed demo build process + +### **0.6.7** 2020/11/04 mandic00@live.com + +- implemented simple gesture recognition + +### **0.6.6** 2020/11/04 mandic00@live.com + +- remove debug code + +### **0.6.5** 2020/11/04 mandic00@live.com + +- redo hand detection + +### **0.6.4** 2020/11/03 mandic00@live.com + +- added manifest + +### **0.6.3** 2020/11/03 mandic00@live.com + +- enhanced processing resolution +- fix pause restart +- complete model refactoring +- fixed typo + +### **0.6.2** 2020/11/02 mandic00@live.com + +- optimized demo +- package update + +### **0.6.1** 2020/11/02 mandic00@live.com + +- major performance improvements for all models +- revert "optimized canvas handling" +- optimized canvas handling +- minor optimization to imagefx +- fix demo image sample +- added tfjs-vis to distribution + +### **0.5.5** 2020/11/01 mandic00@live.com + +- changed defaults + +### **0.5.4** 2020/11/01 mandic00@live.com + +- implemented memory profiler + +### **0.5.3** 2020/10/30 mandic00@live.com + +- improved debug logging + +### **0.5.2** 2020/10/30 mandic00@live.com + +- added wasm and webgpu backends + +### **0.5.1** 2020/10/30 mandic00@live.com + +- improve demo line continous draws + +### **0.4.10** 2020/10/30 mandic00@live.com + +- fix for seedrandom + +### **0.4.9** 2020/10/29 mandic00@live.com + + +### **0.4.8** 2020/10/28 mandic00@live.com + +- revert "updated menu handler" +- fix webpack compatibility issue + +### **0.4.7** 2020/10/27 mandic00@live.com + + +### **0.4.6** 2020/10/27 mandic00@live.com + +- fix firefox compatibility bug + +### **0.4.5** 2020/10/27 mandic00@live.com + + +### **0.4.4** 2020/10/27 mandic00@live.com + +- implelented input resizing + +### **0.4.3** 2020/10/22 mandic00@live.com + + +### **0.4.2** 2020/10/20 mandic00@live.com + +- log initialization + +### **0.4.1** 2020/10/19 mandic00@live.com + +- breaking change: convert to object class +- compatibility notes + +### **0.3.9** 2020/10/18 mandic00@live.com + +- implemented image filters +- pure tensor pipeline without image converts +- autodetect skipframes + +### **0.3.8** 2020/10/17 mandic00@live.com + +- new menu layout + +### **0.3.7** 2020/10/17 mandic00@live.com + +- added diagnostics output +- parallelized agegender operations + +### **0.3.6** 2020/10/17 mandic00@live.com + +- fixed webcam initialization +- fixed memory leaks and added scoped runs +- modularized draw +- added state handling +- refactored package file layout + +### **0.3.5** 2020/10/16 mandic00@live.com + +- added auto-generated changelog + +### **0.3.4** 2020/10/16 mandic00@live.com + +- added camera selection +- optimized blazeface anchors +- added error handling + +### **0.3.3** 2020/10/15 mandic00@live.com + +- added blazeface back and front models + +### **0.3.2** 2020/10/15 mandic00@live.com + +- reduced web worker latency +- added debugging and versioning +- optimized demos and added scoped runs +- added multi backend support + +### **0.3.1** 2020/10/14 mandic00@live.com + + +### **0.2.10** 2020/10/14 mandic00@live.com + +- added emotion backend +- module parametrization and performance monitoring +- implemented multi-hand support +- fixed documentation typos + +### **0.2.9** 2020/10/13 mandic00@live.com + +- added node build and demo + +### **0.2.8** 2020/10/13 mandic00@live.com + +- added example image + +### **0.2.7** 2020/10/13 mandic00@live.com + +- new examples + +### **0.2.6** 2020/10/13 mandic00@live.com + +- enable all models by default + +### **0.2.5** 2020/10/12 mandic00@live.com + +- fixed memory leak + +### **0.2.4** 2020/10/12 mandic00@live.com + +- removed extra files + +### **0.2.3** 2020/10/12 mandic00@live.com + + +### **0.2.2** 2020/10/12 mandic00@live.com + + +### **release: 1.0** 2020/10/12 mandic00@live.com + + +### **0.2.1** 2020/10/12 mandic00@live.com + +- added sample image +- initial public commit +- initial commit + +### **HEAD -> main** 2021/03/23 mandic00@live.com + +- improve fact matching + +### **1.2.4** 2021/03/23 mandic00@live.com + + +### **1.2.3** 2021/03/21 mandic00@live.com + + +### **1.2.2** 2021/03/21 mandic00@live.com + +- precise face rotation + +### **1.2.1** 2021/03/21 mandic00@live.com + +- new module: face description + +### **1.1.11** 2021/03/21 mandic00@live.com + +- refactor face classes + +### **1.1.10** 2021/03/18 mandic00@live.com + +- cleanup +- redefine tensor +- enforce types +- regen type declarations +- switch to single jumbo dts +- type definitions + +### **1.1.9** 2021/03/17 mandic00@live.com + +- fix box clamping and raw output +- hierarchical readme notes + +### **1.1.8** 2021/03/17 mandic00@live.com + +- add experimental nanodet object detection +- full models signature +- cleanup + +### **1.1.7** 2021/03/16 mandic00@live.com + +- fix for seedrandom +- custom typedoc + +### **1.1.6** 2021/03/15 mandic00@live.com + +- implement human.match and embedding demo + +### **1.1.5** 2021/03/15 mandic00@live.com + +- full rebuild + +### **1.1.4** 2021/03/14 mandic00@live.com + +- fix broken build + +### **1.1.3** 2021/03/14 mandic00@live.com + +- added api specs +- add typedocs and types +- strong typings + +### **1.1.2** 2021/03/12 mandic00@live.com + +- distance based on minkowski space and limited euclidean space +- guard against invalid input images + +### **1.1.1** 2021/03/12 mandic00@live.com + +- switched face embedding to mobileface + +### **1.0.4** 2021/03/11 mandic00@live.com + +- add face return tensor +- add test for face descriptors +- wip on embedding +- simplify face box coordinate calculations +- annotated models and removed gender-ssrnet +- autodetect inputsizes + +### **1.0.3** 2021/03/10 mandic00@live.com + +- strong typing for public classes and hide private classes +- re-added blazeface-front +- enhanced age, gender, emotion detection +- full rebuild + +### **1.0.2** 2021/03/09 mandic00@live.com + +- remove blazeface-front, blazepose-upper, faceboxes +- remove blazeface-front and faceboxes + +### **release: 1.0.1** 2021/03/09 mandic00@live.com + + +### **1.0.1** 2021/03/09 mandic00@live.com + +- fix for face detector when mesh is disabled +- optimize for npm + +### **0.40.9** 2021/03/08 mandic00@live.com + +- fix performance issue when running with low confidence + +### **0.40.8** 2021/03/08 mandic00@live.com + + +### **0.40.7** 2021/03/06 mandic00@live.com + +- implemented 3d face angle calculations + +### **0.40.6** 2021/03/06 mandic00@live.com + +- add curve draw output + +### **0.40.5** 2021/03/05 mandic00@live.com + +- fix human.draw + +### **0.40.4** 2021/03/05 mandic00@live.com + +- cleanup blazepose code +- fix demo + +### **0.40.3** 2021/03/05 mandic00@live.com + + +### **0.40.2** 2021/03/05 mandic00@live.com + +- added blazepose-upper + +### **0.40.1** 2021/03/04 mandic00@live.com + +- implement blazepose and update demos +- add todo list + +### **0.30.6** 2021/03/03 mandic00@live.com + +- fine tuning age and face models + +### **0.30.5** 2021/03/02 mandic00@live.com + +- add debug logging flag + +### **0.30.4** 2021/03/01 mandic00@live.com + +- added skipinitial flag + +### **0.30.3** 2021/02/28 mandic00@live.com + +- typo + +### **0.30.2** 2021/02/26 mandic00@live.com + +- rebuild +- fix typo + +### **0.30.1** 2021/02/25 mandic00@live.com + + +### **0.20.11** 2021/02/24 mandic00@live.com + + +### **0.20.10** 2021/02/22 mandic00@live.com + + +### **0.20.9** 2021/02/21 mandic00@live.com + +- remove extra items +- simmilarity fix + +### **0.20.8** 2021/02/21 mandic00@live.com + +- embedding fix + +### **0.20.7** 2021/02/21 mandic00@live.com + +- build fix + +### **0.20.6** 2021/02/21 mandic00@live.com + +- embedding fix + +### **0.20.5** 2021/02/21 mandic00@live.com + +- fix imagefx and add dev builds + +### **0.20.4** 2021/02/19 mandic00@live.com + +- 0.20.4 + +### **0.20.3** 2021/02/17 mandic00@live.com + +- rebuild + +### **0.20.2** 2021/02/13 mandic00@live.com + +- merge branch 'main' of https://github.com/vladmandic/human into main +- create codeql-analysis.yml +- create security.md +- add templates + +### **0.20.1** 2021/02/08 mandic00@live.com + +- menu fixes +- convert to typescript + +### **0.11.5** 2021/02/06 mandic00@live.com + +- added faceboxes alternative model + +### **0.11.4** 2021/02/06 mandic00@live.com + + +### **0.11.3** 2021/02/02 mandic00@live.com + + +### **0.11.2** 2021/01/30 mandic00@live.com + +- added warmup for nodejs + +### **update for tfjs 3.0.0** 2021/01/29 mandic00@live.com + + +### **0.11.1** 2021/01/29 mandic00@live.com + + +### **0.10.2** 2021/01/22 mandic00@live.com + + +### **0.10.1** 2021/01/20 mandic00@live.com + + +### **0.9.26** 2021/01/18 mandic00@live.com + +- fix face detection when mesh is disabled +- added minification notes +- version bump + +### **0.9.25** 2021/01/13 mandic00@live.com + +- added humangl custom backend +- rebuild +- code cleanup and enable minification +- fix safari incopatibility + +### **0.9.24** 2021/01/12 mandic00@live.com + +- work on blazepose +- full rebuild + +### **0.9.23** 2021/01/11 mandic00@live.com + +- added iris gesture +- fix emotion labels +- full rebuild + +### **0.9.22** 2021/01/05 mandic00@live.com + +- remove iris coords if iris is disabled +- web worker fix + +### **0.9.21** 2021/01/03 mandic00@live.com + + +### **0.9.20** 2021/01/03 mandic00@live.com + +- stricter linting, fix face annotations + +### **0.9.19** 2020/12/23 mandic00@live.com + +- added rawbox and rawmesh +- variable name changes, setting .rawcoords only if necessary +- option to return raw data (mesh, box) for facemesh / "preserve aspect ratio" fix from facemesh upstream + +### **0.9.18** 2020/12/16 mandic00@live.com + +- add z axis scaling +- major work on body module +- republish due to tfjs 2.8.0 issues + +### **0.9.17** 2020/12/15 mandic00@live.com + +- added custom webgl backend + +### **0.9.16** 2020/12/12 mandic00@live.com + +- change default ports + +### **0.9.15** 2020/12/11 mandic00@live.com + +- improved caching and warmup +- rebuild + +### **0.9.14** 2020/12/10 mandic00@live.com + +- conditional hand rotation +- staggered skipframes +- fix permissions + +### **0.9.13** 2020/12/08 mandic00@live.com + +- implemented face and hand boundary checks +- embedded sample for warmup +- switch to central logger + +### **0.9.12** 2020/11/26 mandic00@live.com + +- minor compatibility fixes + +### **0.9.11** 2020/11/23 mandic00@live.com + +- implement multi-person gestures +- modularize pipeline models + +### **0.9.10** 2020/11/21 mandic00@live.com + +- changed build for optimized node & browser + +### **0.9.9** 2020/11/21 mandic00@live.com + +- new screenshots +- camera exception handling + +### **0.9.8** 2020/11/19 mandic00@live.com + +- force f16 textures +- bugfix embedding check + +### **0.9.7** 2020/11/19 mandic00@live.com + +- ui redesign + +### **0.9.6** 2020/11/18 mandic00@live.com + +- optimize camera resize on mobile +- completed tfjs wrapper + +### **0.9.5** 2020/11/17 mandic00@live.com + +- fix serious performance bug around skipframes +- swtich to custom tfjs bundle + +### **0.9.4** 2020/11/17 mandic00@live.com + +- swtich to tfjs source import + +### **0.9.3** 2020/11/16 mandic00@live.com + +- switched to minified build + +### **release: 1.2** 2020/11/15 mandic00@live.com + +- full rebuild + +### **0.9.2** 2020/11/14 mandic00@live.com + +- fix camera restart on resize + +### **0.9.1** 2020/11/13 mandic00@live.com + +- version bump +- full rebuild +- implemented face embedding +- added internal benchmark tool + +### **0.8.8** 2020/11/12 mandic00@live.com + +- reduced bundle size +- implemented buffered processing +- fix for conditional model loading + +### **0.8.7** 2020/11/11 mandic00@live.com + +- added performance notes +- added notes on models +- fix bug in async ops and change imports +- fix wiki links + +### **0.8.6** 2020/11/09 mandic00@live.com + +- add wasm bundle + +### **0.8.5** 2020/11/09 mandic00@live.com + +- reimplemented blazeface processing + +### **0.8.4** 2020/11/09 mandic00@live.com + +- added additional gestures +- implemented blink detection +- fix wasm module + +### **0.8.3** 2020/11/08 mandic00@live.com + +- refresh +- optimizations + +### **0.8.2** 2020/11/08 mandic00@live.com + +- fix typos +- commit + +### **0.8.1** 2020/11/07 mandic00@live.com + +- fix hand detection performance +- optimized model loader +- merge branch 'main' of https://github.com/vladmandic/human into main +- created wiki +- delete bug_report.md +- optimize font resizing +- fix nms sync call + +### **0.7.6** 2020/11/06 mandic00@live.com + +- fixed memory leaks and updated docs +- model tuning +- cache invalidation improvements +- full async operations + +### **0.7.5** 2020/11/05 mandic00@live.com + +- implemented dev-server + +### **0.7.4** 2020/11/05 mandic00@live.com + +- fix canvas size on different orientation +- switched from es2020 to es2018 build target + +### **0.7.3** 2020/11/05 mandic00@live.com + +- optimized camera and mobile layout +- fixed worker and filter compatibility +- removed test code + +### **0.7.2** 2020/11/04 mandic00@live.com + +- major work on handpose model + +### **0.7.1** 2020/11/04 mandic00@live.com + +- changed demo build process + +### **0.6.7** 2020/11/04 mandic00@live.com + +- implemented simple gesture recognition + +### **0.6.6** 2020/11/04 mandic00@live.com + +- remove debug code + +### **0.6.5** 2020/11/04 mandic00@live.com + +- redo hand detection + +### **0.6.4** 2020/11/03 mandic00@live.com + +- added manifest + +### **0.6.3** 2020/11/03 mandic00@live.com + +- enhanced processing resolution +- fix pause restart +- complete model refactoring +- fixed typo + +### **0.6.2** 2020/11/02 mandic00@live.com + +- optimized demo +- package update + +### **0.6.1** 2020/11/02 mandic00@live.com + +- major performance improvements for all models +- revert "optimized canvas handling" +- optimized canvas handling +- minor optimization to imagefx +- fix demo image sample +- added tfjs-vis to distribution + +### **0.5.5** 2020/11/01 mandic00@live.com + +- changed defaults + +### **0.5.4** 2020/11/01 mandic00@live.com + +- implemented memory profiler + +### **0.5.3** 2020/10/30 mandic00@live.com + +- improved debug logging + +### **0.5.2** 2020/10/30 mandic00@live.com + +- added wasm and webgpu backends + +### **0.5.1** 2020/10/30 mandic00@live.com + +- improve demo line continous draws + +### **0.4.10** 2020/10/30 mandic00@live.com + +- fix for seedrandom + +### **0.4.9** 2020/10/29 mandic00@live.com + + +### **0.4.8** 2020/10/28 mandic00@live.com + +- revert "updated menu handler" +- fix webpack compatibility issue + +### **0.4.7** 2020/10/27 mandic00@live.com + + +### **0.4.6** 2020/10/27 mandic00@live.com + +- fix firefox compatibility bug + +### **0.4.5** 2020/10/27 mandic00@live.com + + +### **0.4.4** 2020/10/27 mandic00@live.com + +- implelented input resizing + +### **0.4.3** 2020/10/22 mandic00@live.com + + +### **0.4.2** 2020/10/20 mandic00@live.com + +- log initialization + +### **0.4.1** 2020/10/19 mandic00@live.com + +- breaking change: convert to object class +- compatibility notes + +### **0.3.9** 2020/10/18 mandic00@live.com + +- implemented image filters +- pure tensor pipeline without image converts +- autodetect skipframes + +### **0.3.8** 2020/10/17 mandic00@live.com + +- new menu layout + +### **0.3.7** 2020/10/17 mandic00@live.com + +- added diagnostics output +- parallelized agegender operations + +### **0.3.6** 2020/10/17 mandic00@live.com + +- fixed webcam initialization +- fixed memory leaks and added scoped runs +- modularized draw +- added state handling +- refactored package file layout + +### **0.3.5** 2020/10/16 mandic00@live.com + +- added auto-generated changelog + +### **0.3.4** 2020/10/16 mandic00@live.com + +- added camera selection +- optimized blazeface anchors +- added error handling + +### **0.3.3** 2020/10/15 mandic00@live.com + +- added blazeface back and front models + +### **0.3.2** 2020/10/15 mandic00@live.com + +- reduced web worker latency +- added debugging and versioning +- optimized demos and added scoped runs +- added multi backend support + +### **0.3.1** 2020/10/14 mandic00@live.com + + +### **0.2.10** 2020/10/14 mandic00@live.com + +- added emotion backend +- module parametrization and performance monitoring +- implemented multi-hand support +- fixed documentation typos + +### **0.2.9** 2020/10/13 mandic00@live.com + +- added node build and demo + +### **0.2.8** 2020/10/13 mandic00@live.com + +- added example image + +### **0.2.7** 2020/10/13 mandic00@live.com + +- new examples + +### **0.2.6** 2020/10/13 mandic00@live.com + +- enable all models by default + +### **0.2.5** 2020/10/12 mandic00@live.com + +- fixed memory leak + +### **0.2.4** 2020/10/12 mandic00@live.com + +- removed extra files + +### **0.2.3** 2020/10/12 mandic00@live.com + + +### **0.2.2** 2020/10/12 mandic00@live.com + + +### **release: 1.0** 2020/10/12 mandic00@live.com + + +### **0.2.1** 2020/10/12 mandic00@live.com + +- added sample image +- initial public commit +- initial commit + +### **HEAD -> main** 2021/03/23 mandic00@live.com + +- improve fact matching ### **1.2.4** 2021/03/23 mandic00@live.com diff --git a/README.md b/README.md index f1b03d59..f7770a3f 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ # Human Library -**3D Face Detection & Rotation Tracking, Face Embedding & Recognition,** +**3D Face Detection & Rotation Tracking, Face Description & Recognition,** **Body Pose Tracking, 3D Hand & Finger Tracking,** **Iris Analysis, Age & Gender & Emotion Prediction,** **Gesture Recognition** @@ -46,8 +46,9 @@ Check out [**Live Demo**](https://vladmandic.github.io/human/demo/index.html) fo - [**Usage & Functions**](https://github.com/vladmandic/human/wiki/Usage) - [**Configuration Details**](https://github.com/vladmandic/human/wiki/Configuration) - [**Output Details**](https://github.com/vladmandic/human/wiki/Outputs) -- [**Face Recognition & Face Embedding**](https://github.com/vladmandic/human/wiki/Embedding) +- [**Face Recognition & Face Description**](https://github.com/vladmandic/human/wiki/Embedding) - [**Gesture Recognition**](https://github.com/vladmandic/human/wiki/Gesture) +- [**Common Issues**](https://github.com/vladmandic/human/wiki/Issues)
@@ -144,12 +145,10 @@ Default models in Human library are: - **Face Detection**: MediaPipe BlazeFace-Back - **Face Mesh**: MediaPipe FaceMesh +- **Face Description**: HSE FaceRes - **Face Iris Analysis**: MediaPipe Iris - **Emotion Detection**: Oarriaga Emotion -- **Gender Detection**: Oarriaga Gender -- **Age Detection**: SSR-Net Age IMDB - **Body Analysis**: PoseNet -- **Face Embedding**: BecauseofAI MobileFace Embedding Note that alternative models are provided and can be enabled via configuration For example, `PoseNet` model can be switched for `BlazePose` model depending on the use case diff --git a/demo/embedding.html b/demo/facematch.html similarity index 88% rename from demo/embedding.html rename to demo/facematch.html index b74cd5fa..77c29dca 100644 --- a/demo/embedding.html +++ b/demo/facematch.html @@ -13,7 +13,7 @@ - + "),this.dom=o,this.dom.addEventListener("click",()=>{this.trackGPU=!this.trackGPU,this.updateUI()}),this.paramLogger=((l,c,u)=>{let h=["gl-cpu","gl-gpu","gl-mem","gl-fps","gl-gpu-svg","gl-chart"],d={...h};return h.forEach(p=>d[p]=c.getElementsByClassName(p)),this.nodes=d,(p,f,m,A,y,g,w)=>{d["gl-cpu"][p].style.strokeDasharray=(f*.27).toFixed(0)+" 100",d["gl-gpu"][p].style.strokeDasharray=(m*.27).toFixed(0)+" 100",d["gl-mem"][p].innerHTML=u[p]?u[p]:A?"mem: "+A.toFixed(0)+"mb":"",d["gl-fps"][p].innerHTML="FPS: "+y.toFixed(1),l(u[p],f,m,A,y,g,w)}})(this.paramLogger,this.dom,this.names),this.chartLogger=((l,c)=>{let u={"gl-chart":c.getElementsByClassName("gl-chart")};return(h,d,p)=>{let f="",m=d.length;for(let A=0;A=1e3){let a=this.frameId-this.paramFrame,s=a/r*1e3;for(let i=0;i{this.gpuAccums[i]=0,this.finished=[]})}this.paramFrame=this.frameId,this.paramTime=n}}if(!this.detected||!this.chartFrame)this.chartFrame=this.frameId,this.chartTime=n,this.circularId=0;else{let r=n-this.chartTime,a=this.chartHz*r/1e3;for(;--a>0&&this.detected;){let i=(this.frameId-this.chartFrame)/r*1e3;this.chart[this.circularId%this.chartLen]=i;for(let o=0;o0)||((a=(r=e==null?void 0:e.face[0])==null?void 0:r.embedding)==null?void 0:a.length)<=64)return;if(!wa.original)if(wa.original=e,Fn("setting face compare baseline:",e.face[0]),e.face[0].tensor){let l=re.enhance(e.face[0]);if(l){let c=document.getElementById("orig"),u=l.squeeze(),h=u.div(255);re.tf.browser.toPixels(h,c),l.dispose(),u.dispose(),h.dispose()}}else document.getElementById("compare-canvas").getContext("2d").drawImage(wa.original.canvas,0,0,200,200);let t=re.similarity((i=(s=wa.original)==null?void 0:s.face[0])==null?void 0:i.embedding,(o=e==null?void 0:e.face[0])==null?void 0:o.embedding);document.getElementById("similarity").innerText=`similarity: ${Math.trunc(1e3*t)/10}%`}var L4=performance.now();async function e1(e){let t=Q0,n=document.getElementById("canvas");if(he.drawFPS.push(1e3/(performance.now()-L4)),he.drawFPS.length>he.maxFPSframes&&he.drawFPS.shift(),L4=performance.now(),await Ae.process.updateChart("FPS",he.detectFPS),he.buffered||!t.canvas){let h=await re.image(e);t.canvas=h.canvas,re.tf.dispose(h.tensor)}let r=n.getContext("2d");r.fillStyle=he.baseBackground,r.fillRect(0,0,n.width,n.height),t.canvas?(t.canvas.width!==n.width&&(n.width=t.canvas.width),t.canvas.height!==n.height&&(n.height=t.canvas.height),r.drawImage(t.canvas,0,0,t.canvas.width,t.canvas.height,0,0,t.canvas.width,t.canvas.height)):r.drawImage(e,0,0,e.width,e.height,0,0,n.width,n.height),re.draw.face(n,t.face),re.draw.body(n,t.body),re.draw.hand(n,t.hand),re.draw.object(n,t.object),re.draw.gesture(n,t.gesture),await wse(t);let a=re.tf.engine(),s=a.backendInstance?`gpu: ${(a.backendInstance.numBytesInGPU?a.backendInstance.numBytesInGPU:0).toLocaleString()} bytes`:"",i=`system: ${a.state.numBytes.toLocaleString()} bytes ${s} | tensors: ${a.state.numTensors.toLocaleString()}`,o=t.canvas?`processing: ${t.canvas.width} x ${t.canvas.height}`:"",l=Math.trunc(10*he.detectFPS.reduce((h,d)=>h+d,0)/he.detectFPS.length)/10,c=Math.trunc(10*he.drawFPS.reduce((h,d)=>h+d,0)/he.drawFPS.length)/10,u=he.detectFPS.length>5&&l<5?'warning: your performance is low: try switching to higher performance backend, lowering resolution or disabling some models':"";document.getElementById("log").innerHTML=` - video: ${he.camera.name} | facing: ${he.camera.facing} | screen: ${window.innerWidth} x ${window.innerHeight} camera: ${he.camera.width} x ${he.camera.height} ${o}
- backend: ${re.tf.getBackend()} | ${i}
- performance: ${xse(t.performance)}ms FPS process:${l} refresh:${c}
- ${u}
- `,he.framesDraw++,he.lastFrame=performance.now(),he.buffered?he.drawThread=requestAnimationFrame(()=>e1(e,n)):!he.buffered&&he.drawThread&&(Fn("stopping buffered refresh"),cancelAnimationFrame(he.drawThread),he.drawThread=null)}async function t1(){var c;if(he.busy)return null;he.busy=!0;let e=document.getElementById("video"),t=document.getElementById("canvas"),n=document.getElementById("log"),r=e.srcObject?e.srcObject.getVideoTracks()[0].readyState==="live"&&e.readyState>2&&!e.paused:!1,a="";if(tr("setting up camera"),!navigator.mediaDevices)return a="camera access not supported",n.innerText+=` -${a}`,Fn(a),tr(a),he.busy=!1,a;let s,i={audio:!1,video:{facingMode:he.facing?"user":"environment",resizeMode:he.crop?"crop-and-scale":"none"}};window.innerWidth>window.innerHeight?i.video.width={ideal:window.innerWidth}:i.video.height={ideal:window.innerHeight-document.getElementById("menubar").offsetHeight};try{s=await navigator.mediaDevices.getUserMedia(i)}catch(u){return u.name==="PermissionDeniedError"||u.name==="NotAllowedError"?a="camera permission denied":u.name==="SourceUnavailableError"?a="camera not available":a=`camera error: ${u.message||u}`,n.innerText+=` -${a}`,tr(a),Fn("camera error:",u),he.busy=!1,a}if(s)e.srcObject=s;else return he.busy=!1,"camera stream empty";let o=s.getVideoTracks()[0],l=o.getSettings();return he.camera={name:(c=o.label)==null?void 0:c.toLowerCase(),width:l.width,height:l.height,facing:l.facingMode==="user"?"front":"back"},new Promise(u=>{e.onloadeddata=async()=>{e.width=e.videoWidth,e.height=e.videoHeight,t.width=e.width,t.height=e.height,t.style.width=t.width>t.height?"100vw":"",t.style.height=t.width>t.height?"":"100vh",he.menuWidth.input.setAttribute("value",e.width),he.menuHeight.input.setAttribute("value",e.height),r&&e.play(),r&&!he.detectThread&&nh(e,t),he.busy=!1,tr(""),u()}})}function W4(){if(!Vi){let e=null;Vi=new P4(e,{trackGPU:!1,chartHz:20,chartLen:20}),Vi.begin()}}function bse(e,t,n,r){J0||(Fn("creating worker thread"),J0=new Worker(he.worker,{type:"module"}),J0.addEventListener("message",a=>{a.data.result.performance&&a.data.result.performance.total&&he.detectFPS.push(1e3/a.data.result.performance.total),he.detectFPS.length>he.maxFPSframes&&he.detectFPS.shift(),he.bench&&(Vi||W4(),Vi.nextFrame(r)),document.getElementById("gl-bench")&&(document.getElementById("gl-bench").style.display=he.bench?"block":"none"),Q0=a.data.result,he.framesDetect++,he.drawThread||e1(e),he.detectThread=requestAnimationFrame(s=>nh(e,n,s))})),J0.postMessage({image:t.data.buffer,width:n.width,height:n.height,userConfig:os},[t.data.buffer])}function nh(e,t,n){var a;if(!(e.srcObject&&e.srcObject.getVideoTracks()[0].readyState==="live"&&e.readyState>2&&!e.paused)&&e.srcObject){he.drawThread&&cancelAnimationFrame(he.drawThread),he.detectThread&&cancelAnimationFrame(he.detectThread),he.drawThread=null,he.detectThread=null,e.paused?Fn("camera paused"):e.srcObject.getVideoTracks()[0].readyState==="live"&&e.readyState<=2?setTimeout(()=>nh(e,t),500):Fn(`camera not ready: track state: ${(a=e.srcObject)==null?void 0:a.getVideoTracks()[0].readyState} stream state: ${e.readyState}`),clearTimeout(he.drawThread),he.drawThread=null,Fn("frame statistics: process:",he.framesDetect,"refresh:",he.framesDraw),Fn("memory",re.tf.engine().memory());return}if(tr(""),he.useWorker){let s=typeof OffscreenCanvas!="undefined"?new OffscreenCanvas(t.width,t.height):document.createElement("canvas");s.width=t.width,s.height=t.height;let i=s.getContext("2d");i.drawImage(e,0,0,e.width,e.height,0,0,t.width,t.height);let o=i.getImageData(0,0,t.width,t.height);bse(e,o,t,os,n)}else re.detect(e,os).then(s=>{s.performance&&s.performance.total&&he.detectFPS.push(1e3/s.performance.total),he.detectFPS.length>he.maxFPSframes&&he.detectFPS.shift(),he.bench&&(Vi||W4(),Vi.nextFrame(n)),document.getElementById("gl-bench")&&(document.getElementById("gl-bench").style.display=he.bench?"block":"none"),s.error?(Fn(s.error),document.getElementById("log").innerText+=` -Human error: ${s.error}`):(Q0=s,he.drawThread||e1(e),he.framesDetect++,he.detectThread=requestAnimationFrame(i=>nh(e,t,i)))})}async function _se(e){return new Promise(t=>{let n=new Image;n.onload=async()=>{Fn("processing image:",encodeURI(n.src));let r=document.getElementById("canvas");n.width=n.naturalWidth,n.height=n.naturalHeight,r.width=re.config.filter.width&&re.config.filter.width>0?re.config.filter.width:n.naturalWidth,r.height=re.config.filter.height&&re.config.filter.height>0?re.config.filter.height:n.naturalHeight;let a=await re.detect(n,os);Q0=a,await e1(n);let s=document.createElement("canvas");s.className="thumbnail",s.width=window.innerWidth/(he.columns+.1),s.height=s.width*r.height/r.width,a.face&&a.face.length>0?s.title=a.face.map((o,l)=>`#${l} face: ${Math.trunc(100*o.faceConfidence)}% box: ${Math.trunc(100*o.boxConfidence)}% age: ${Math.trunc(o.age)} gender: ${Math.trunc(100*o.genderConfidence)}% ${o.gender}`).join(" | "):s.title="no face detected",s.getContext("2d").drawImage(r,0,0,r.width,r.height,0,0,s.width,s.height),document.getElementById("samples-container").appendChild(s),n.src="",t(!0)},n.src=e})}async function B4(){document.getElementById("samples-container").style.display="none",document.getElementById("canvas").style.display="block";let e=document.getElementById("video"),t=document.getElementById("canvas");if(e.srcObject!==null&&!e.paused)document.getElementById("play").style.display="block",document.getElementById("btnStart").className="button button-start",document.getElementById("btnStart").innerHTML="start
video",tr("paused"),e.pause();else{let n=await t1();if(n)tr(n);else{document.getElementById("play").style.display="none";for(let r of Object.values(Ae))r.hide();tr(""),document.getElementById("btnStart").className="button button-stop",document.getElementById("btnStart").innerHTML="pause
video",await e.play(),he.detectThread||nh(e,t)}}}async function vse(){os.videoOptimized=!1,document.getElementById("play").style.display="none",document.getElementById("canvas").style.display="none",document.getElementById("samples-container").style.display="block",Fn("running detection of sample images"),tr("processing images"),document.getElementById("samples-container").innerHTML="";for(let e of Object.values(Ae))e.hide();for(let e of he.samples)await _se(e);tr("")}function kse(){let e=[];window.innerWidth>800?e=[`${document.getElementById("btnDisplay").offsetLeft-50}px`,`${document.getElementById("btnImage").offsetLeft-50}px`,`${document.getElementById("btnProcess").offsetLeft-50}px`,`${document.getElementById("btnModel").offsetLeft-50}px`]:e=["0rem","11rem","21.1rem","33rem"],Ae.display=new th(document.body,"",{top:`${document.getElementById("menubar").offsetHeight}px`,left:e[0]}),Ae.display.addBool("perf monitor",he,"bench",t=>he.bench=t),Ae.display.addBool("buffered output",he,"buffered",t=>he.buffered=t),Ae.display.addBool("crop & scale",he,"crop",t=>{he.crop=t,t1()}),Ae.display.addBool("camera facing",he,"facing",t=>{he.facing=t,t1()}),Ae.display.addHTML('
'),Ae.display.addBool("use 3D depth",re.draw.drawOptions,"useDepth"),Ae.display.addBool("draw with curves",re.draw.drawOptions,"useCurves"),Ae.display.addBool("print labels",re.draw.drawOptions,"drawLabels"),Ae.display.addBool("draw points",re.draw.drawOptions,"drawPoints"),Ae.display.addBool("draw boxes",re.draw.drawOptions,"drawBoxes"),Ae.display.addBool("draw polygons",re.draw.drawOptions,"drawPolygons"),Ae.display.addBool("fill polygons",re.draw.drawOptions,"fillPolygons"),Ae.image=new th(document.body,"",{top:`${document.getElementById("menubar").offsetHeight}px`,left:e[1]}),Ae.image.addBool("enabled",re.config.filter,"enabled",t=>re.config.filter.enabled=t),he.menuWidth=Ae.image.addRange("image width",re.config.filter,"width",0,3840,10,t=>re.config.filter.width=parseInt(t)),he.menuHeight=Ae.image.addRange("image height",re.config.filter,"height",0,2160,10,t=>re.config.filter.height=parseInt(t)),Ae.image.addHTML('
'),Ae.image.addRange("brightness",re.config.filter,"brightness",-1,1,.05,t=>re.config.filter.brightness=parseFloat(t)),Ae.image.addRange("contrast",re.config.filter,"contrast",-1,1,.05,t=>re.config.filter.contrast=parseFloat(t)),Ae.image.addRange("sharpness",re.config.filter,"sharpness",0,1,.05,t=>re.config.filter.sharpness=parseFloat(t)),Ae.image.addRange("blur",re.config.filter,"blur",0,20,1,t=>re.config.filter.blur=parseInt(t)),Ae.image.addRange("saturation",re.config.filter,"saturation",-1,1,.05,t=>re.config.filter.saturation=parseFloat(t)),Ae.image.addRange("hue",re.config.filter,"hue",0,360,5,t=>re.config.filter.hue=parseInt(t)),Ae.image.addRange("pixelate",re.config.filter,"pixelate",0,32,1,t=>re.config.filter.pixelate=parseInt(t)),Ae.image.addHTML('
'),Ae.image.addBool("negative",re.config.filter,"negative",t=>re.config.filter.negative=t),Ae.image.addBool("sepia",re.config.filter,"sepia",t=>re.config.filter.sepia=t),Ae.image.addBool("vintage",re.config.filter,"vintage",t=>re.config.filter.vintage=t),Ae.image.addBool("kodachrome",re.config.filter,"kodachrome",t=>re.config.filter.kodachrome=t),Ae.image.addBool("technicolor",re.config.filter,"technicolor",t=>re.config.filter.technicolor=t),Ae.image.addBool("polaroid",re.config.filter,"polaroid",t=>re.config.filter.polaroid=t),Ae.process=new th(document.body,"",{top:`${document.getElementById("menubar").offsetHeight}px`,left:e[2]}),Ae.process.addList("backend",["cpu","webgl","wasm","humangl"],re.config.backend,t=>re.config.backend=t),Ae.process.addBool("async operations",re.config,"async",t=>re.config.async=t),Ae.process.addBool("use web worker",he,"useWorker"),Ae.process.addHTML('
'),Ae.process.addLabel("model parameters"),Ae.process.addRange("max objects",re.config.face.detector,"maxFaces",1,50,1,t=>{re.config.face.detector.maxFaces=parseInt(t),re.config.body.maxDetections=parseInt(t),re.config.hand.maxHands=parseInt(t)}),Ae.process.addRange("skip frames",re.config.face.detector,"skipFrames",0,50,1,t=>{re.config.face.detector.skipFrames=parseInt(t),re.config.face.emotion.skipFrames=parseInt(t),re.config.face.age.skipFrames=parseInt(t),re.config.hand.skipFrames=parseInt(t)}),Ae.process.addRange("min confidence",re.config.face.detector,"minConfidence",0,1,.05,t=>{re.config.face.detector.minConfidence=parseFloat(t),re.config.face.gender.minConfidence=parseFloat(t),re.config.face.emotion.minConfidence=parseFloat(t),re.config.hand.minConfidence=parseFloat(t)}),Ae.process.addRange("score threshold",re.config.face.detector,"scoreThreshold",.1,1,.05,t=>{re.config.face.detector.scoreThreshold=parseFloat(t),re.config.hand.scoreThreshold=parseFloat(t),re.config.body.scoreThreshold=parseFloat(t)}),Ae.process.addRange("overlap",re.config.face.detector,"iouThreshold",.1,1,.05,t=>{re.config.face.detector.iouThreshold=parseFloat(t),re.config.hand.iouThreshold=parseFloat(t)}),Ae.process.addBool("detection rotation",re.config.face.detector,"rotation",t=>{re.config.face.detector.rotation=t,re.config.hand.rotation=t}),Ae.process.addHTML('
'),Ae.process.addButton("process sample images","process images",()=>vse()),Ae.process.addHTML('
'),Ae.process.addChart("FPS","FPS"),Ae.models=new th(document.body,"",{top:`${document.getElementById("menubar").offsetHeight}px`,left:e[3]}),Ae.models.addBool("face detect",re.config.face,"enabled",t=>re.config.face.enabled=t),Ae.models.addBool("face mesh",re.config.face.mesh,"enabled",t=>re.config.face.mesh.enabled=t),Ae.models.addBool("face iris",re.config.face.iris,"enabled",t=>re.config.face.iris.enabled=t),Ae.models.addBool("face description",re.config.face.description,"enabled",t=>re.config.face.age.description=t),Ae.models.addBool("face emotion",re.config.face.emotion,"enabled",t=>re.config.face.emotion.enabled=t),Ae.models.addHTML('
'),Ae.models.addBool("body pose",re.config.body,"enabled",t=>re.config.body.enabled=t),Ae.models.addBool("hand pose",re.config.hand,"enabled",t=>re.config.hand.enabled=t),Ae.models.addHTML('
'),Ae.models.addBool("gestures",re.config.gesture,"enabled",t=>re.config.gesture.enabled=t),Ae.models.addHTML('
'),Ae.models.addBool("object detection",re.config.object,"enabled",t=>re.config.object.enabled=t),Ae.models.addHTML('
'),Ae.models.addBool("face compare",wa,"enabled",t=>{wa.enabled=t,wa.original=null}),document.getElementById("btnDisplay").addEventListener("click",t=>Ae.display.toggle(t)),document.getElementById("btnImage").addEventListener("click",t=>Ae.image.toggle(t)),document.getElementById("btnProcess").addEventListener("click",t=>Ae.process.toggle(t)),document.getElementById("btnModel").addEventListener("click",t=>Ae.models.toggle(t)),document.getElementById("btnStart").addEventListener("click",()=>B4()),document.getElementById("play").addEventListener("click",()=>B4())}async function Ise(e){let t=document.getElementById("canvas");t.width=e.canvas.width,t.height=e.canvas.height,t.getContext("2d").drawImage(e.canvas,0,0,e.canvas.width,e.canvas.height,0,0,t.width,t.height),await re.draw.all(t,e)}async function Nse(){if(Fn("demo starting ..."),kse(),document.getElementById("log").innerText=`Human: version ${re.version}`,he.modelsPreload&&!he.useWorker){tr("loading"),await re.load(os);let e=Object.keys(re.models).filter(t=>re.models[t]);Fn("demo loaded models:",e)}if(!he.useWorker){tr("initializing");let e=await re.warmup(os);e&&e.canvas&&he.drawWarmup&&await Ise(e)}tr("human: ready"),document.getElementById("loader").style.display="none",document.getElementById("play").style.display="block",Fn("demo ready...")}window.onload=Nse;window.onresize=t1; -/** - * @license - * Copyright 2017 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ -/** - * @license - * Copyright 2018 Google LLC - * - * Use of this source code is governed by an MIT-style - * license that can be found in the LICENSE file or at - * https://opensource.org/licenses/MIT. - * ============================================================================= - */ -/** - * @license - * Copyright 2018 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * ============================================================================= - */ -/** - * @license - * Copyright 2018 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ -/** - * @license - * Copyright 2019 Google LLC - * - * Use of this source code is governed by an MIT-style - * license that can be found in the LICENSE file or at - * https://opensource.org/licenses/MIT. - * ============================================================================= - */ -/** - * @license - * Copyright 2019 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * ============================================================================= - */ -/** - * @license - * Copyright 2019 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ -/** - * @license - * Copyright 2020 Google Inc. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ -/** - * @license - * Copyright 2020 Google LLC - * - * Use of this source code is governed by an MIT-style - * license that can be found in the LICENSE file or at - * https://opensource.org/licenses/MIT. - * ============================================================================= - */ -/** - * @license - * Copyright 2020 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ -/** - * @license - * Copyright 2020 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the License); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ -/** - * @license - * Copyright 2021 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ -/** @license See the LICENSE file. */ + `; +var GLBench = class { + constructor(gl, settings = {}) { + this.css = UICSS; + this.svg = UISVG; + this.paramLogger = () => { + }; + this.chartLogger = () => { + }; + this.chartLen = 20; + this.chartHz = 20; + this.names = []; + this.cpuAccums = []; + this.gpuAccums = []; + this.activeAccums = []; + this.chart = new Array(this.chartLen); + this.now = () => performance && performance.now ? performance.now() : Date.now(); + this.updateUI = () => { + [].forEach.call(this.nodes["gl-gpu-svg"], (node) => node.style.display = this.trackGPU ? "inline" : "none"); + }; + Object.assign(this, settings); + this.detected = 0; + this.finished = []; + this.isFramebuffer = 0; + this.frameId = 0; + let rafId; + let n = 0; + let t0; + const loop = (t) => { + if (++n < 20) { + rafId = requestAnimationFrame(loop); + } else { + this.detected = Math.ceil(1e3 * n / (t - t0) / 70); + cancelAnimationFrame(rafId); + } + if (!t0) + t0 = t; + }; + requestAnimationFrame(loop); + if (gl) { + const glFinish = async (t, activeAccums) => Promise.resolve(setTimeout(() => { + gl.getError(); + const dt = this.now() - t; + activeAccums.forEach((active, i) => { + if (active) + this.gpuAccums[i] += dt; + }); + }, 0)); + const addProfiler = (fn2, self2, target) => { + const t = self2.now(); + fn2.apply(target, arguments); + if (self2.trackGPU) + self2.finished.push(glFinish(t, self2.activeAccums.slice(0))); + }; + const fn = "drawElements"; + if (gl[fn]) { + gl[fn] = addProfiler(gl[fn], this, gl); + } else { + console.log("bench: cannot attach to webgl function"); + } + } + if (!this.withoutUI) { + if (!this.dom) + this.dom = document.body; + const elm = document.createElement("div"); + elm.id = "gl-bench"; + this.dom.appendChild(elm); + this.dom.insertAdjacentHTML("afterbegin", '"); + this.dom = elm; + this.dom.addEventListener("click", () => { + this.trackGPU = !this.trackGPU; + this.updateUI(); + }); + this.paramLogger = ((logger, dom, names) => { + const classes = ["gl-cpu", "gl-gpu", "gl-mem", "gl-fps", "gl-gpu-svg", "gl-chart"]; + const nodes = {...classes}; + classes.forEach((c) => nodes[c] = dom.getElementsByClassName(c)); + this.nodes = nodes; + return (i, cpu, gpu, mem, fps, totalTime, frameId) => { + nodes["gl-cpu"][i].style.strokeDasharray = (cpu * 0.27).toFixed(0) + " 100"; + nodes["gl-gpu"][i].style.strokeDasharray = (gpu * 0.27).toFixed(0) + " 100"; + nodes["gl-mem"][i].innerHTML = names[i] ? names[i] : mem ? "mem: " + mem.toFixed(0) + "mb" : ""; + nodes["gl-fps"][i].innerHTML = "FPS: " + fps.toFixed(1); + logger(names[i], cpu, gpu, mem, fps, totalTime, frameId); + }; + })(this.paramLogger, this.dom, this.names); + this.chartLogger = ((logger, dom) => { + const nodes = {"gl-chart": dom.getElementsByClassName("gl-chart")}; + return (i, chart, circularId) => { + let points = ""; + const len = chart.length; + for (let j = 0; j < len; j++) { + const id = (circularId + j + 1) % len; + if (chart[id] !== void 0) + points = points + " " + (60 * j / (len - 1)).toFixed(1) + "," + (45 - chart[id] * 0.5 / this.detected).toFixed(1); + } + nodes["gl-chart"][i].setAttribute("points", points); + logger(this.names[i], chart, circularId); + }; + })(this.chartLogger, this.dom); + } + } + addUI(name) { + if (this.names.indexOf(name) === -1) { + this.names.push(name); + if (this.dom) { + this.dom.insertAdjacentHTML("beforeend", this.svg); + this.updateUI(); + } + this.cpuAccums.push(0); + this.gpuAccums.push(0); + this.activeAccums.push(false); + } + } + nextFrame(now3) { + this.frameId++; + const t = now3 || this.now(); + if (this.frameId <= 1) { + this.paramFrame = this.frameId; + this.paramTime = t; + } else { + const duration = t - this.paramTime; + if (duration >= 1e3) { + const frameCount = this.frameId - this.paramFrame; + const fps = frameCount / duration * 1e3; + for (let i = 0; i < this.names.length; i++) { + const cpu = this.cpuAccums[i] / duration * 100; + const gpu = this.gpuAccums[i] / duration * 100; + const mem = performance && performance.memory ? performance.memory.usedJSHeapSize / (1 << 20) : 0; + this.paramLogger(i, cpu, gpu, mem, fps, duration, frameCount); + this.cpuAccums[i] = 0; + Promise.all(this.finished).then(() => { + this.gpuAccums[i] = 0; + this.finished = []; + }); + } + this.paramFrame = this.frameId; + this.paramTime = t; + } + } + if (!this.detected || !this.chartFrame) { + this.chartFrame = this.frameId; + this.chartTime = t; + this.circularId = 0; + } else { + const timespan = t - this.chartTime; + let hz = this.chartHz * timespan / 1e3; + while (--hz > 0 && this.detected) { + const frameCount = this.frameId - this.chartFrame; + const fps = frameCount / timespan * 1e3; + this.chart[this.circularId % this.chartLen] = fps; + for (let i = 0; i < this.names.length; i++) + this.chartLogger(i, this.chart, this.circularId); + this.circularId++; + this.chartFrame = this.frameId; + this.chartTime = t; + } + } + } + begin(name) { + this.updateAccums(name); + } + end(name) { + this.updateAccums(name); + } + updateAccums(name) { + let nameId = this.names.indexOf(name); + if (nameId === -1) { + nameId = this.names.length; + this.addUI(name); + } + const t = this.now(); + const dt = t - this.t0; + for (let i = 0; i < nameId + 1; i++) { + if (this.activeAccums[i]) + this.cpuAccums[i] += dt; + } + this.activeAccums[nameId] = !this.activeAccums[nameId]; + this.t0 = t; + } +}; +var gl_bench_default = GLBench; + +// demo/browser.js +var userConfig = {backend: "webgl"}; +var human = new Human(userConfig); +var ui = { + baseBackground: "rgba(50, 50, 50, 1)", + crop: true, + columns: 2, + facing: true, + useWorker: false, + worker: "worker.js", + samples: ["../assets/sample6.jpg", "../assets/sample1.jpg", "../assets/sample4.jpg", "../assets/sample5.jpg", "../assets/sample3.jpg", "../assets/sample2.jpg"], + compare: "../assets/sample-me.jpg", + console: true, + maxFPSframes: 10, + modelsPreload: true, + busy: false, + menuWidth: 0, + menuHeight: 0, + camera: {}, + detectFPS: [], + drawFPS: [], + buffered: false, + drawWarmup: false, + drawThread: null, + detectThread: null, + framesDraw: 0, + framesDetect: 0, + bench: true, + lastFrame: 0 +}; +var menu = {}; +var worker; +var bench; +var lastDetectedResult = {}; +function str(...msg) { + if (!Array.isArray(msg)) + return msg; + let line = ""; + for (const entry of msg) { + if (typeof entry === "object") + line += JSON.stringify(entry).replace(/{|}|"|\[|\]/g, "").replace(/,/g, ", "); + else + line += entry; + } + return line; +} +function log5(...msg) { + const dt = new Date(); + const ts = `${dt.getHours().toString().padStart(2, "0")}:${dt.getMinutes().toString().padStart(2, "0")}:${dt.getSeconds().toString().padStart(2, "0")}.${dt.getMilliseconds().toString().padStart(3, "0")}`; + if (ui.console) + console.log(ts, ...msg); +} +function status(msg) { + const div3 = document.getElementById("status"); + if (div3) + div3.innerText = msg; +} +var compare = {enabled: false, original: null}; +async function calcSimmilariry(result) { + var _a, _b, _c, _d, _e, _f; + document.getElementById("compare-container").style.display = compare.enabled ? "block" : "none"; + if (!compare.enabled) + return; + if (!(((_a = result == null ? void 0 : result.face) == null ? void 0 : _a.length) > 0) || ((_c = (_b = result == null ? void 0 : result.face[0]) == null ? void 0 : _b.embedding) == null ? void 0 : _c.length) <= 64) + return; + if (!compare.original) { + compare.original = result; + log5("setting face compare baseline:", result.face[0]); + if (result.face[0].tensor) { + const enhanced = human.enhance(result.face[0]); + if (enhanced) { + const c = document.getElementById("orig"); + const squeeze2 = enhanced.squeeze(); + const norm2 = squeeze2.div(255); + human.tf.browser.toPixels(norm2, c); + enhanced.dispose(); + squeeze2.dispose(); + norm2.dispose(); + } + } else { + document.getElementById("compare-canvas").getContext("2d").drawImage(compare.original.canvas, 0, 0, 200, 200); + } + } + const similarity3 = human.similarity((_e = (_d = compare.original) == null ? void 0 : _d.face[0]) == null ? void 0 : _e.embedding, (_f = result == null ? void 0 : result.face[0]) == null ? void 0 : _f.embedding); + document.getElementById("similarity").innerText = `similarity: ${Math.trunc(1e3 * similarity3) / 10}%`; +} +var lastDraw = performance.now(); +async function drawResults(input2) { + const result = lastDetectedResult; + const canvas2 = document.getElementById("canvas"); + ui.drawFPS.push(1e3 / (performance.now() - lastDraw)); + if (ui.drawFPS.length > ui.maxFPSframes) + ui.drawFPS.shift(); + lastDraw = performance.now(); + await menu.process.updateChart("FPS", ui.detectFPS); + if (ui.buffered || !result.canvas) { + const image3 = await human.image(input2); + result.canvas = image3.canvas; + human.tf.dispose(image3.tensor); + } + const ctx = canvas2.getContext("2d"); + ctx.fillStyle = ui.baseBackground; + ctx.fillRect(0, 0, canvas2.width, canvas2.height); + if (result.canvas) { + if (result.canvas.width !== canvas2.width) + canvas2.width = result.canvas.width; + if (result.canvas.height !== canvas2.height) + canvas2.height = result.canvas.height; + ctx.drawImage(result.canvas, 0, 0, result.canvas.width, result.canvas.height, 0, 0, result.canvas.width, result.canvas.height); + } else { + ctx.drawImage(input2, 0, 0, input2.width, input2.height, 0, 0, canvas2.width, canvas2.height); + } + human.draw.face(canvas2, result.face); + human.draw.body(canvas2, result.body); + human.draw.hand(canvas2, result.hand); + human.draw.object(canvas2, result.object); + human.draw.gesture(canvas2, result.gesture); + await calcSimmilariry(result); + const engine2 = human.tf.engine(); + const gpu = engine2.backendInstance ? `gpu: ${(engine2.backendInstance.numBytesInGPU ? engine2.backendInstance.numBytesInGPU : 0).toLocaleString()} bytes` : ""; + const memory2 = `system: ${engine2.state.numBytes.toLocaleString()} bytes ${gpu} | tensors: ${engine2.state.numTensors.toLocaleString()}`; + const processing = result.canvas ? `processing: ${result.canvas.width} x ${result.canvas.height}` : ""; + const avgDetect = Math.trunc(10 * ui.detectFPS.reduce((a, b) => a + b, 0) / ui.detectFPS.length) / 10; + const avgDraw = Math.trunc(10 * ui.drawFPS.reduce((a, b) => a + b, 0) / ui.drawFPS.length) / 10; + const warning = ui.detectFPS.length > 5 && avgDetect < 5 ? 'warning: your performance is low: try switching to higher performance backend, lowering resolution or disabling some models' : ""; + document.getElementById("log").innerHTML = ` + video: ${ui.camera.name} | facing: ${ui.camera.facing} | screen: ${window.innerWidth} x ${window.innerHeight} camera: ${ui.camera.width} x ${ui.camera.height} ${processing}
+ backend: ${human.tf.getBackend()} | ${memory2}
+ performance: ${str(result.performance)}ms FPS process:${avgDetect} refresh:${avgDraw}
+ ${warning}
+ `; + ui.framesDraw++; + ui.lastFrame = performance.now(); + if (ui.buffered) { + ui.drawThread = requestAnimationFrame(() => drawResults(input2, canvas2)); + } else if (!ui.buffered && ui.drawThread) { + log5("stopping buffered refresh"); + cancelAnimationFrame(ui.drawThread); + ui.drawThread = null; + } +} +async function setupCamera() { + var _a; + if (ui.busy) + return null; + ui.busy = true; + const video = document.getElementById("video"); + const canvas2 = document.getElementById("canvas"); + const output = document.getElementById("log"); + const live = video.srcObject ? video.srcObject.getVideoTracks()[0].readyState === "live" && video.readyState > 2 && !video.paused : false; + let msg = ""; + status("setting up camera"); + if (!navigator.mediaDevices) { + msg = "camera access not supported"; + output.innerText += ` +${msg}`; + log5(msg); + status(msg); + ui.busy = false; + return msg; + } + let stream; + const constraints = { + audio: false, + video: {facingMode: ui.facing ? "user" : "environment", resizeMode: ui.crop ? "crop-and-scale" : "none"} + }; + if (window.innerWidth > window.innerHeight) + constraints.video.width = {ideal: window.innerWidth}; + else + constraints.video.height = {ideal: window.innerHeight - document.getElementById("menubar").offsetHeight}; + try { + stream = await navigator.mediaDevices.getUserMedia(constraints); + } catch (err) { + if (err.name === "PermissionDeniedError" || err.name === "NotAllowedError") + msg = "camera permission denied"; + else if (err.name === "SourceUnavailableError") + msg = "camera not available"; + else + msg = `camera error: ${err.message || err}`; + output.innerText += ` +${msg}`; + status(msg); + log5("camera error:", err); + ui.busy = false; + return msg; + } + if (stream) + video.srcObject = stream; + else { + ui.busy = false; + return "camera stream empty"; + } + const track = stream.getVideoTracks()[0]; + const settings = track.getSettings(); + ui.camera = {name: (_a = track.label) == null ? void 0 : _a.toLowerCase(), width: settings.width, height: settings.height, facing: settings.facingMode === "user" ? "front" : "back"}; + return new Promise((resolve) => { + video.onloadeddata = async () => { + video.width = video.videoWidth; + video.height = video.videoHeight; + canvas2.width = video.width; + canvas2.height = video.height; + canvas2.style.width = canvas2.width > canvas2.height ? "100vw" : ""; + canvas2.style.height = canvas2.width > canvas2.height ? "" : "100vh"; + ui.menuWidth.input.setAttribute("value", video.width); + ui.menuHeight.input.setAttribute("value", video.height); + if (live) + video.play(); + if (live && !ui.detectThread) + runHumanDetect(video, canvas2); + ui.busy = false; + status(""); + resolve(); + }; + }); +} +function initPerfMonitor() { + if (!bench) { + const gl = null; + bench = new gl_bench_default(gl, { + trackGPU: false, + chartHz: 20, + chartLen: 20 + }); + bench.begin(); + } +} +function webWorker(input2, image3, canvas2, timestamp) { + if (!worker) { + log5("creating worker thread"); + worker = new Worker(ui.worker, {type: "module"}); + worker.addEventListener("message", (msg) => { + if (msg.data.result.performance && msg.data.result.performance.total) + ui.detectFPS.push(1e3 / msg.data.result.performance.total); + if (ui.detectFPS.length > ui.maxFPSframes) + ui.detectFPS.shift(); + if (ui.bench) { + if (!bench) + initPerfMonitor(); + bench.nextFrame(timestamp); + } + if (document.getElementById("gl-bench")) + document.getElementById("gl-bench").style.display = ui.bench ? "block" : "none"; + lastDetectedResult = msg.data.result; + ui.framesDetect++; + if (!ui.drawThread) + drawResults(input2); + ui.detectThread = requestAnimationFrame((now3) => runHumanDetect(input2, canvas2, now3)); + }); + } + worker.postMessage({image: image3.data.buffer, width: canvas2.width, height: canvas2.height, userConfig}, [image3.data.buffer]); +} +function runHumanDetect(input2, canvas2, timestamp) { + var _a; + const live = input2.srcObject && input2.srcObject.getVideoTracks()[0].readyState === "live" && input2.readyState > 2 && !input2.paused; + if (!live && input2.srcObject) { + if (ui.drawThread) + cancelAnimationFrame(ui.drawThread); + if (ui.detectThread) + cancelAnimationFrame(ui.detectThread); + ui.drawThread = null; + ui.detectThread = null; + if (input2.paused) + log5("camera paused"); + else if (input2.srcObject.getVideoTracks()[0].readyState === "live" && input2.readyState <= 2) + setTimeout(() => runHumanDetect(input2, canvas2), 500); + else + log5(`camera not ready: track state: ${(_a = input2.srcObject) == null ? void 0 : _a.getVideoTracks()[0].readyState} stream state: ${input2.readyState}`); + clearTimeout(ui.drawThread); + ui.drawThread = null; + log5("frame statistics: process:", ui.framesDetect, "refresh:", ui.framesDraw); + log5("memory", human.tf.engine().memory()); + return; + } + status(""); + if (ui.useWorker) { + const offscreen = typeof OffscreenCanvas !== "undefined" ? new OffscreenCanvas(canvas2.width, canvas2.height) : document.createElement("canvas"); + offscreen.width = canvas2.width; + offscreen.height = canvas2.height; + const ctx = offscreen.getContext("2d"); + ctx.drawImage(input2, 0, 0, input2.width, input2.height, 0, 0, canvas2.width, canvas2.height); + const data2 = ctx.getImageData(0, 0, canvas2.width, canvas2.height); + webWorker(input2, data2, canvas2, userConfig, timestamp); + } else { + human.detect(input2, userConfig).then((result) => { + if (result.performance && result.performance.total) + ui.detectFPS.push(1e3 / result.performance.total); + if (ui.detectFPS.length > ui.maxFPSframes) + ui.detectFPS.shift(); + if (ui.bench) { + if (!bench) + initPerfMonitor(); + bench.nextFrame(timestamp); + } + if (document.getElementById("gl-bench")) + document.getElementById("gl-bench").style.display = ui.bench ? "block" : "none"; + if (result.error) { + log5(result.error); + document.getElementById("log").innerText += ` +Human error: ${result.error}`; + } else { + lastDetectedResult = result; + if (!ui.drawThread) + drawResults(input2); + ui.framesDetect++; + ui.detectThread = requestAnimationFrame((now3) => runHumanDetect(input2, canvas2, now3)); + } + }); + } +} +async function processImage(input2) { + return new Promise((resolve) => { + const image3 = new Image(); + image3.onload = async () => { + log5("processing image:", encodeURI(image3.src)); + const canvas2 = document.getElementById("canvas"); + image3.width = image3.naturalWidth; + image3.height = image3.naturalHeight; + canvas2.width = human.config.filter.width && human.config.filter.width > 0 ? human.config.filter.width : image3.naturalWidth; + canvas2.height = human.config.filter.height && human.config.filter.height > 0 ? human.config.filter.height : image3.naturalHeight; + const result = await human.detect(image3, userConfig); + lastDetectedResult = result; + await drawResults(image3); + const thumb = document.createElement("canvas"); + thumb.className = "thumbnail"; + thumb.width = window.innerWidth / (ui.columns + 0.1); + thumb.height = thumb.width * canvas2.height / canvas2.width; + if (result.face && result.face.length > 0) { + thumb.title = result.face.map((a, i) => `#${i} face: ${Math.trunc(100 * a.faceConfidence)}% box: ${Math.trunc(100 * a.boxConfidence)}% age: ${Math.trunc(a.age)} gender: ${Math.trunc(100 * a.genderConfidence)}% ${a.gender}`).join(" | "); + } else { + thumb.title = "no face detected"; + } + const ctx = thumb.getContext("2d"); + ctx.drawImage(canvas2, 0, 0, canvas2.width, canvas2.height, 0, 0, thumb.width, thumb.height); + document.getElementById("samples-container").appendChild(thumb); + image3.src = ""; + resolve(true); + }; + image3.src = input2; + }); +} +async function detectVideo() { + document.getElementById("samples-container").style.display = "none"; + document.getElementById("canvas").style.display = "block"; + const video = document.getElementById("video"); + const canvas2 = document.getElementById("canvas"); + if (video.srcObject !== null && !video.paused) { + document.getElementById("play").style.display = "block"; + document.getElementById("btnStart").className = "button button-start"; + document.getElementById("btnStart").innerHTML = "start
video"; + status("paused"); + video.pause(); + } else { + const cameraError = await setupCamera(); + if (!cameraError) { + document.getElementById("play").style.display = "none"; + for (const m of Object.values(menu)) + m.hide(); + status(""); + document.getElementById("btnStart").className = "button button-stop"; + document.getElementById("btnStart").innerHTML = "pause
video"; + await video.play(); + if (!ui.detectThread) + runHumanDetect(video, canvas2); + } else { + status(cameraError); + } + } +} +async function detectSampleImages() { + userConfig.videoOptimized = false; + document.getElementById("play").style.display = "none"; + document.getElementById("canvas").style.display = "none"; + document.getElementById("samples-container").style.display = "block"; + log5("running detection of sample images"); + status("processing images"); + document.getElementById("samples-container").innerHTML = ""; + for (const m of Object.values(menu)) + m.hide(); + for (const image3 of ui.samples) + await processImage(image3); + status(""); +} +function setupMenu() { + let x = []; + if (window.innerWidth > 800) { + x = [`${document.getElementById("btnDisplay").offsetLeft - 50}px`, `${document.getElementById("btnImage").offsetLeft - 50}px`, `${document.getElementById("btnProcess").offsetLeft - 50}px`, `${document.getElementById("btnModel").offsetLeft - 50}px`]; + } else { + x = ["0rem", "11rem", "21.1rem", "33rem"]; + } + menu.display = new menu_default(document.body, "", {top: `${document.getElementById("menubar").offsetHeight}px`, left: x[0]}); + menu.display.addBool("perf monitor", ui, "bench", (val) => ui.bench = val); + menu.display.addBool("buffered output", ui, "buffered", (val) => ui.buffered = val); + menu.display.addBool("crop & scale", ui, "crop", (val) => { + ui.crop = val; + setupCamera(); + }); + menu.display.addBool("camera facing", ui, "facing", (val) => { + ui.facing = val; + setupCamera(); + }); + menu.display.addHTML('
'); + menu.display.addBool("use 3D depth", human.draw.drawOptions, "useDepth"); + menu.display.addBool("draw with curves", human.draw.drawOptions, "useCurves"); + menu.display.addBool("print labels", human.draw.drawOptions, "drawLabels"); + menu.display.addBool("draw points", human.draw.drawOptions, "drawPoints"); + menu.display.addBool("draw boxes", human.draw.drawOptions, "drawBoxes"); + menu.display.addBool("draw polygons", human.draw.drawOptions, "drawPolygons"); + menu.display.addBool("fill polygons", human.draw.drawOptions, "fillPolygons"); + menu.image = new menu_default(document.body, "", {top: `${document.getElementById("menubar").offsetHeight}px`, left: x[1]}); + menu.image.addBool("enabled", human.config.filter, "enabled", (val) => human.config.filter.enabled = val); + ui.menuWidth = menu.image.addRange("image width", human.config.filter, "width", 0, 3840, 10, (val) => human.config.filter.width = parseInt(val)); + ui.menuHeight = menu.image.addRange("image height", human.config.filter, "height", 0, 2160, 10, (val) => human.config.filter.height = parseInt(val)); + menu.image.addHTML('
'); + menu.image.addRange("brightness", human.config.filter, "brightness", -1, 1, 0.05, (val) => human.config.filter.brightness = parseFloat(val)); + menu.image.addRange("contrast", human.config.filter, "contrast", -1, 1, 0.05, (val) => human.config.filter.contrast = parseFloat(val)); + menu.image.addRange("sharpness", human.config.filter, "sharpness", 0, 1, 0.05, (val) => human.config.filter.sharpness = parseFloat(val)); + menu.image.addRange("blur", human.config.filter, "blur", 0, 20, 1, (val) => human.config.filter.blur = parseInt(val)); + menu.image.addRange("saturation", human.config.filter, "saturation", -1, 1, 0.05, (val) => human.config.filter.saturation = parseFloat(val)); + menu.image.addRange("hue", human.config.filter, "hue", 0, 360, 5, (val) => human.config.filter.hue = parseInt(val)); + menu.image.addRange("pixelate", human.config.filter, "pixelate", 0, 32, 1, (val) => human.config.filter.pixelate = parseInt(val)); + menu.image.addHTML('
'); + menu.image.addBool("negative", human.config.filter, "negative", (val) => human.config.filter.negative = val); + menu.image.addBool("sepia", human.config.filter, "sepia", (val) => human.config.filter.sepia = val); + menu.image.addBool("vintage", human.config.filter, "vintage", (val) => human.config.filter.vintage = val); + menu.image.addBool("kodachrome", human.config.filter, "kodachrome", (val) => human.config.filter.kodachrome = val); + menu.image.addBool("technicolor", human.config.filter, "technicolor", (val) => human.config.filter.technicolor = val); + menu.image.addBool("polaroid", human.config.filter, "polaroid", (val) => human.config.filter.polaroid = val); + menu.process = new menu_default(document.body, "", {top: `${document.getElementById("menubar").offsetHeight}px`, left: x[2]}); + menu.process.addList("backend", ["cpu", "webgl", "wasm", "humangl"], human.config.backend, (val) => human.config.backend = val); + menu.process.addBool("async operations", human.config, "async", (val) => human.config.async = val); + menu.process.addBool("use web worker", ui, "useWorker"); + menu.process.addHTML('
'); + menu.process.addLabel("model parameters"); + menu.process.addRange("max objects", human.config.face.detector, "maxFaces", 1, 50, 1, (val) => { + human.config.face.detector.maxFaces = parseInt(val); + human.config.body.maxDetections = parseInt(val); + human.config.hand.maxHands = parseInt(val); + }); + menu.process.addRange("skip frames", human.config.face.detector, "skipFrames", 0, 50, 1, (val) => { + human.config.face.detector.skipFrames = parseInt(val); + human.config.face.emotion.skipFrames = parseInt(val); + human.config.face.age.skipFrames = parseInt(val); + human.config.hand.skipFrames = parseInt(val); + }); + menu.process.addRange("min confidence", human.config.face.detector, "minConfidence", 0, 1, 0.05, (val) => { + human.config.face.detector.minConfidence = parseFloat(val); + human.config.face.gender.minConfidence = parseFloat(val); + human.config.face.emotion.minConfidence = parseFloat(val); + human.config.hand.minConfidence = parseFloat(val); + }); + menu.process.addRange("score threshold", human.config.face.detector, "scoreThreshold", 0.1, 1, 0.05, (val) => { + human.config.face.detector.scoreThreshold = parseFloat(val); + human.config.hand.scoreThreshold = parseFloat(val); + human.config.body.scoreThreshold = parseFloat(val); + }); + menu.process.addRange("overlap", human.config.face.detector, "iouThreshold", 0.1, 1, 0.05, (val) => { + human.config.face.detector.iouThreshold = parseFloat(val); + human.config.hand.iouThreshold = parseFloat(val); + }); + menu.process.addBool("detection rotation", human.config.face.detector, "rotation", (val) => { + human.config.face.detector.rotation = val; + human.config.hand.rotation = val; + }); + menu.process.addHTML('
'); + menu.process.addButton("process sample images", "process images", () => detectSampleImages()); + menu.process.addHTML('
'); + menu.process.addChart("FPS", "FPS"); + menu.models = new menu_default(document.body, "", {top: `${document.getElementById("menubar").offsetHeight}px`, left: x[3]}); + menu.models.addBool("face detect", human.config.face, "enabled", (val) => human.config.face.enabled = val); + menu.models.addBool("face mesh", human.config.face.mesh, "enabled", (val) => human.config.face.mesh.enabled = val); + menu.models.addBool("face iris", human.config.face.iris, "enabled", (val) => human.config.face.iris.enabled = val); + menu.models.addBool("face description", human.config.face.description, "enabled", (val) => human.config.face.age.description = val); + menu.models.addBool("face emotion", human.config.face.emotion, "enabled", (val) => human.config.face.emotion.enabled = val); + menu.models.addHTML('
'); + menu.models.addBool("body pose", human.config.body, "enabled", (val) => human.config.body.enabled = val); + menu.models.addBool("hand pose", human.config.hand, "enabled", (val) => human.config.hand.enabled = val); + menu.models.addHTML('
'); + menu.models.addBool("gestures", human.config.gesture, "enabled", (val) => human.config.gesture.enabled = val); + menu.models.addHTML('
'); + menu.models.addBool("object detection", human.config.object, "enabled", (val) => human.config.object.enabled = val); + menu.models.addHTML('
'); + menu.models.addBool("face compare", compare, "enabled", (val) => { + compare.enabled = val; + compare.original = null; + }); + document.getElementById("btnDisplay").addEventListener("click", (evt) => menu.display.toggle(evt)); + document.getElementById("btnImage").addEventListener("click", (evt) => menu.image.toggle(evt)); + document.getElementById("btnProcess").addEventListener("click", (evt) => menu.process.toggle(evt)); + document.getElementById("btnModel").addEventListener("click", (evt) => menu.models.toggle(evt)); + document.getElementById("btnStart").addEventListener("click", () => detectVideo()); + document.getElementById("play").addEventListener("click", () => detectVideo()); +} +async function drawWarmup(res) { + const canvas2 = document.getElementById("canvas"); + canvas2.width = res.canvas.width; + canvas2.height = res.canvas.height; + const ctx = canvas2.getContext("2d"); + ctx.drawImage(res.canvas, 0, 0, res.canvas.width, res.canvas.height, 0, 0, canvas2.width, canvas2.height); + await human.draw.all(canvas2, res); +} +async function main() { + log5("demo starting ..."); + setupMenu(); + document.getElementById("log").innerText = `Human: version ${human.version}`; + if (ui.modelsPreload && !ui.useWorker) { + status("loading"); + await human.load(userConfig); + const loaded = Object.keys(human.models).filter((a) => human.models[a]); + log5("demo loaded models:", loaded); + } + if (!ui.useWorker) { + status("initializing"); + const res = await human.warmup(userConfig); + if (res && res.canvas && ui.drawWarmup) + await drawWarmup(res); + } + status("human: ready"); + document.getElementById("loader").style.display = "none"; + document.getElementById("play").style.display = "block"; + log5("demo ready..."); +} +window.onload = main; +window.onresize = setupCamera; //# sourceMappingURL=demo-browser-index.js.map diff --git a/dist/demo-browser-index.js.map b/dist/demo-browser-index.js.map index a1a9499f..4faf2911 100644 --- a/dist/demo-browser-index.js.map +++ b/dist/demo-browser-index.js.map @@ -1,7 +1,7 @@ { "version": 3, "sources": ["../src/blazeface/facemesh.ts", "../src/posenet/keypoints.ts", "../src/helpers.ts", "../src/sysinfo.ts", "../node_modules/.pnpm/node-fetch@2.6.1/node_modules/node-fetch/browser.js", "../node_modules/.pnpm/seedrandom@2.4.3/node_modules/seedrandom/lib/alea.js", "../node_modules/.pnpm/seedrandom@2.4.3/node_modules/seedrandom/lib/xor128.js", "../node_modules/.pnpm/seedrandom@2.4.3/node_modules/seedrandom/lib/xorwow.js", "../node_modules/.pnpm/seedrandom@2.4.3/node_modules/seedrandom/lib/xorshift7.js", "../node_modules/.pnpm/seedrandom@2.4.3/node_modules/seedrandom/lib/xor4096.js", "../node_modules/.pnpm/seedrandom@2.4.3/node_modules/seedrandom/lib/tychei.js", "(disabled):crypto", "../node_modules/.pnpm/seedrandom@2.4.3/node_modules/seedrandom/seedrandom.js", "../node_modules/.pnpm/seedrandom@2.4.3/node_modules/seedrandom/index.js", "(disabled):path", "(disabled):worker_threads", "(disabled):perf_hooks", "../node_modules/.pnpm/@tensorflow/tfjs-backend-wasm@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-wasm/wasm-out/tfjs-backend-wasm-threaded-simd.js", "../node_modules/.pnpm/@tensorflow/tfjs-backend-wasm@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-wasm/wasm-out/tfjs-backend-wasm.js", "../node_modules/.pnpm/seedrandom@3.0.5/node_modules/seedrandom/lib/alea.js", "../node_modules/.pnpm/seedrandom@3.0.5/node_modules/seedrandom/lib/xor128.js", "../node_modules/.pnpm/seedrandom@3.0.5/node_modules/seedrandom/lib/xorwow.js", "../node_modules/.pnpm/seedrandom@3.0.5/node_modules/seedrandom/lib/xorshift7.js", "../node_modules/.pnpm/seedrandom@3.0.5/node_modules/seedrandom/lib/xor4096.js", "../node_modules/.pnpm/seedrandom@3.0.5/node_modules/seedrandom/lib/tychei.js", "../node_modules/.pnpm/seedrandom@3.0.5/node_modules/seedrandom/seedrandom.js", "../node_modules/.pnpm/seedrandom@3.0.5/node_modules/seedrandom/index.js", "../node_modules/.pnpm/string_decoder@1.1.1/node_modules/string_decoder/lib/string_decoder.js", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/backends/backend.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/util_base.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/environment.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/global_util.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/kernel_names.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/kernel_registry.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/util.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/profiler.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/tape.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/tensor_format.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/tensor.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/tensor_util.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/types.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/engine.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/device_util.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/flags.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/tensor_util_env.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/operation.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/complex.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/tensor_ops_util.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/tensor.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/io/types.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/io/io_utils.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/io/router_registry.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/io/indexed_db.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/io/local_storage.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/io/model_management.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/platforms/platform_browser.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/platforms/platform_node.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/buffer.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/cast.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/clone.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/print.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/base_side_effects.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/io/io.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/io/browser_files.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/io/progress.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/io/weights_loader.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/io/http.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/io/passthrough.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/math.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/mat_mul.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/one_hot.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/transpose.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/confusion_matrix.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/browser.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/tensor3d.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/gather_nd_util.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/scatter_nd_util.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/slice_util.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/serialization.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/test_util.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/version.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/globals.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/add.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/floorDiv.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/div.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/mul.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/abs.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/acos.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/acosh.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/add_n.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/all.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/any.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/arg_max.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/arg_min.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/asin.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/asinh.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/atan.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/atan2.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/atanh.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/conv_util.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/reshape.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/avg_pool.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/avg_pool_3d.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/concat.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/sigmoid.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/slice.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/tanh.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/basic_lstm_cell.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/batch_to_space_nd.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/batchnorm_util.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/batchnorm.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/batchnorm2d.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/batchnorm3d.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/batchnorm4d.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/bincount.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/broadcast_to.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/ceil.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/clip_by_value.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/concat_1d.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/concat_2d.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/concat_3d.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/concat_4d.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/conv2d.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/conv1d.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/conv2d_backprop_input.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/conv2d_transpose.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/conv3d.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/conv3d_backprop_input.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/conv3d_transpose.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/cos.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/cosh.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/cumsum.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/dense_bincount.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/depth_to_space.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/depthwise_conv2d.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/diag.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/dilation2d.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/broadcast_util.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/equal.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/where.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/zeros_like.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/div_no_nan.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/dot.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/elu.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/erf.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/exp.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/expand_dims.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/expm1.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/tile.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/eye.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/fill.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/floor.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/gather.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/greater.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/greater_equal.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/imag.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/is_finite.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/is_inf.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/is_nan.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/leaky_relu.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/less.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/less_equal.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/linspace.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/local_response_normalization.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/log.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/log1p.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/gradients.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/neg.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/softplus.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/log_sigmoid.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/max.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/sub.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/sum.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/log_softmax.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/axis_util.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/log_sum_exp.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/logical_and.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/logical_not.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/logical_or.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/logical_xor.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/max_pool.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/max_pool_3d.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/max_pool_with_argmax.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/maximum.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/mean.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/min.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/minimum.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/mirror_pad.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/mod.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/square.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/moments.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/multi_rnn_cell.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/multinomial.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/not_equal.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/zeros.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/ones.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/ones_like.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/outer_product.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/pad.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/pad1d.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/pad2d.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/pad3d.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/pad4d.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/space_to_batch_nd.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/pool.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/pow.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/prelu.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/prod.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/rand.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/rand_util.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/random_gamma.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/random_normal.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/random_uniform.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/range.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/real.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/reciprocal.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/relu.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/relu6.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/reverse.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/reverse_1d.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/reverse_2d.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/reverse_3d.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/reverse_4d.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/round.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/rsqrt.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/scalar.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/selu.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/separable_conv2d.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/setdiff1d_async.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/sign.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/sin.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/sinh.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/slice1d.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/slice2d.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/slice3d.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/slice4d.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/softmax.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/spectral/fft.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/spectral/ifft.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/spectral/irfft.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/split.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/spectral/rfft.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/sqrt.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/squared_difference.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/squeeze.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/stack.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/step.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/strided_slice.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/tan.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/tensor1d.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/tensor2d.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/tensor4d.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/tensor5d.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/tensor6d.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/topk.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/truncated_normal.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/unique.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/unsorted_segment_sum.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/unstack.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/variable.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/backends/where_impl.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/where_async.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/boolean_mask.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/norm.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/moving_average.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/scatter_nd.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/sparse_to_dense_util.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/sparse_to_dense.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/gather_nd.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/dropout_util.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/dropout.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/signal_ops_util.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/in_top_k.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/fused_ops.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/conv2d_backprop_filter.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/fused_util.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/fused/conv2d.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/depthwise_conv2d_native_backprop_filter.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/depthwise_conv2d_native_backprop_input.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/fused/depthwise_conv2d.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/fused/mat_mul.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/signal/hamming_window.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/signal/hann_window.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/signal/frame.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/signal/stft.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/image/crop_and_resize.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/image/flip_left_right.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/image/rotate_with_offset.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/nonmax_util.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/backends/non_max_suppression_util.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/backends/non_max_suppression_impl.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_async.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_with_score.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_with_score_async.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_padded.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_padded_async.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/image/resize_bilinear.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/image/resize_nearest_neighbor.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/image/transform.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/linalg/band_part.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/linalg/gram_schmidt.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/linalg/qr.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/loss_ops_utils.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/losses/compute_weighted_loss.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/losses/absolute_difference.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/losses/cosine_distance.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/losses/hinge_loss.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/losses/huber_loss.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/losses/log_loss.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/losses/mean_squared_error.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/losses/sigmoid_cross_entropy.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/losses/softmax_cross_entropy.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/ops.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/optimizers/optimizer.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/optimizers/adadelta_optimizer.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/optimizers/adagrad_optimizer.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/optimizers/adam_optimizer.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/optimizers/adamax_optimizer.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/optimizers/sgd_optimizer.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/optimizers/momentum_optimizer.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/optimizers/rmsprop_optimizer.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/optimizers/optimizer_constructors.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/train.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/browser_util.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/backends/backend_util.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/concat_util.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/reduce_util.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/rotate_util.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/array_ops_util.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/selu_util.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/erf_util.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/log.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/backends/complex_util.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/split_util.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/segment_util.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/backends/kernel_impls.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/index.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/cpu_util.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/backend_cpu.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/shared.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Abs.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/utils/binary_impl.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Complex.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/utils/zeros_impl.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Identity.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Real.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Cast.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/utils/binary_utils.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Add.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Bincount_impl.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/utils/unary_impl.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/utils/unary_utils.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Ceil.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Concat_impl.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Exp.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Expm1.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Floor.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/GatherV2_impl.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Greater.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Less.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LinSpace_impl.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Log.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Max_impl.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Maximum.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Minimum.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Multiply.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Neg.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/NotEqual.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Transpose_impl.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Transpose.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Prod.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Range_impl.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Rsqrt.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Slice.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/SquaredDifference.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/StridedSlice_impl.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sub.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Tile_impl.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/TopK_impl.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Unique_impl.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/version.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/base.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Elu.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LeakyRelu.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Prelu.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Relu.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Relu6.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/utils/fused_utils.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Reshape.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/BatchMatMul.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/_FusedMatMul.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Acos.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Acosh.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/AddN.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/All.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Any.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ArgMax.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ArgMin.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Asin.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Asinh.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Atan.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Atan2.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Atanh.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/utils/pool_utils.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/AvgPool.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/AvgPool3D.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/AvgPool3DGrad.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/AvgPoolGrad.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/BatchNorm.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/BatchToSpaceND.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Bincount.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Clip.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ComplexAbs.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Imag.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Concat.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv2D.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv2DBackpropFilter.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv2DBackpropInput.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv3D.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv3DBackpropFilterV2.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv3DBackpropInputV2.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Cos.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Cosh.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/CropAndResize.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Cumsum.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/DenseBincount.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/DepthToSpace.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/DepthwiseConv2dNative.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/DepthwiseConv2dNativeBackpropFilter.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/DepthwiseConv2dNativeBackpropInput.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Diag.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Dilation2D.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Dilation2DBackpropFilter.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Dilation2DBackpropInput.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/EluGrad.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Equal.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Erf.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ExpandDims.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/RealDiv.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/utils/fft_utils.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FFT.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Fill.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FlipLeftRight.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FloorDiv.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FusedConv2D.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FusedDepthwiseConv2D.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/GatherNd.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/GatherV2.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/GreaterEqual.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/IFFT.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/IsFinite.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/IsInf.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/IsNaN.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LessEqual.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LinSpace.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Log1p.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LogicalAnd.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LogicalNot.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LogicalOr.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LRN.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LRNGrad.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Max.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPool.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPool3D.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPool3DGrad.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPoolGrad.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPoolWithArgmax_impl.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPoolWithArgmax.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sum.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Mean.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Min.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MirrorPad.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Mod.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Multinomial.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Softmax.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/NonMaxSuppressionV3.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/NonMaxSuppressionV4.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/NonMaxSuppressionV5.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/OneHot.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ZerosLike.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/OnesLike.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Pack.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/PadV2.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Pow.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Range.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Reciprocal.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ResizeBilinear.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ResizeBilinearGrad.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ResizeNearestNeighbor.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ResizeNearestNeighborGrad.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Reverse.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/RotateWithOffset.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Round.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Scatter_impl.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ScatterNd.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Select.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Selu.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sigmoid.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sign.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sin.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sinh.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Softplus.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/SpaceToBatchND.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/SparseToDense.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/SplitV.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sqrt.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Square.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Step.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/StridedSlice.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Tan.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Tanh.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Tile.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/TopK.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Transform.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Unique.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Unpack.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/UnsortedSegmentSum.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/register_all_kernels.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-cpu@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-cpu/src/index.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/webgl_util.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/canvas_util.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/tex_util.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/flags_webgl.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/glsl_version.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/shader_compiler_util.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/decode_matrix_gpu.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/decode_matrix_packed_gpu.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/encode_float_gpu.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/encode_float_packed_gpu.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/encode_matrix_gpu.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/encode_matrix_packed_gpu.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/gpgpu_util.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/gpgpu_context.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/shader_compiler.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/gpgpu_math.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/shared.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/packing_util.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/pack_gpu.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/reshape_packed_gpu.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/texture_manager.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/unaryop_gpu.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/unaryop_packed_gpu.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/unpack_gpu.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/backend_webgl.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/version.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/webgl.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/base.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/binaryop_gpu.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/binaryop_packed_gpu.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Identity.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Complex.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LeakyRelu.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Prelu.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/kernel_funcs_utils.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/mulmat_packed_gpu.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/binaryop_complex_gpu.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Multiply.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/reshape.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Reshape.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/mean_gpu.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/reduce_gpu.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/reduce.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/transpose_gpu.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/transpose_packed_gpu.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Transpose_impl.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sum_impl.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sum.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Transpose.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/BatchMatMul_impl.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/_FusedMatMul.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Abs.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Acos.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Acosh.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Add.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/addn_gpu.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/addn_packed_gpu.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/AddN.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/All.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Any.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/argminmax_gpu.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/argminmax_packed_gpu.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/arg_min_max.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ArgMax.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ArgMin.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Asin.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Asinh.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Atan.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Atan2.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Atanh.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/pool_gpu.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/AvgPool.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/AvgPool3D.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/avg_pool_backprop_gpu.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/AvgPool3DGrad.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/AvgPoolGrad.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/BatchMatMul.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/batchnorm_gpu.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/batchnorm_packed_gpu.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/BatchNorm.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/slice_gpu.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/slice_packed_gpu.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Slice.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/BatchToSpaceND.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Bincount.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/NotEqual.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Real.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/int.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Cast.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Ceil.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/clip_gpu.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/clip_packed_gpu.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ClipByValue.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/complex_abs_gpu.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ComplexAbs.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/concat_gpu.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/concat_packed_gpu.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Imag.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Concat_impl.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Concat.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/conv_gpu.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/im2col_packed_gpu.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv2D_impl.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv2D.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/conv_backprop_gpu.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv2DBackpropFilter.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv2DBackpropInput.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv3D.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv3DBackpropFilterV2.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv3DBackpropInputV2.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Cos.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Cosh.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/crop_and_resize_gpu.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/CropAndResize.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/cumsum_gpu.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Cumsum.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/DenseBincount.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/depth_to_space_gpu.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/DepthToSpace.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/conv_gpu_depthwise.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/conv_packed_gpu_depthwise.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/DepthwiseConv2dNative.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/conv_backprop_gpu_depthwise.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/DepthwiseConv2dNativeBackpropFilter.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/DepthwiseConv2dNativeBackpropInput.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/diag_gpu.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Diag.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/dilation_gpu.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Dilation2D.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Elu.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/EluGrad.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Equal.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Erf.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Exp.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ExpandDims.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Expm1.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/fft_gpu.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FFT_impl.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FFT.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/fill_gpu.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Fill.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/flip_left_right_gpu.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FlipLeftRight.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Floor.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FloorDiv.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FromPixels_utils/from_pixels_gpu.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FromPixels_utils/from_pixels_packed_gpu.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FromPixels.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FusedConv2D.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FusedDepthwiseConv2D.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/gather_nd_gpu.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/GatherNd.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/gather_gpu.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/GatherV2.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Greater.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/GreaterEqual.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/IFFT.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/IsFinite.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/IsInf.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/IsNaN.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Less.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LessEqual.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LinSpace.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Log.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Log1p.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LogicalAnd.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LogicalNot.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LogicalOr.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/lrn_gpu.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/lrn_packed_gpu.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LRN.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/lrn_grad_gpu.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LRNGrad.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Max_impl.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Max.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Maximum.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPool.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPool3D.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/max_pool_backprop_gpu.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPool3DGrad.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPoolGrad.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPoolWithArgmax_impl.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPoolWithArgmax.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Mean_impl.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Mean.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Min.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Minimum.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/mirror_pad_gpu.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/mirror_pad_packed_gpu.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MirrorPad.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Mod.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/multinomial_gpu.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/RealDiv.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sub.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Softmax.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Multinomial.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Neg.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/NonMaxSuppressionV3.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/NonMaxSuppressionV4.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/NonMaxSuppressionV5.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/onehot_gpu.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/OneHot.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ZerosLike.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/OnesLike.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Pack.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/pad_gpu.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/pad_packed_gpu.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/PadV2.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Pow.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Prod.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Range.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Reciprocal.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Relu.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Relu6.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/resize_bilinear_gpu.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/resize_bilinear_packed_gpu.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ResizeBilinear.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/resize_bilinear_backprop_gpu.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ResizeBilinearGrad.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/resize_nearest_neighbor_gpu.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ResizeNearestNeighbor.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/resize_nearest_neighbor_backprop_gpu.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ResizeNearestNeighborGrad.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/reverse_gpu.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/reverse_packed_gpu.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Reverse.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/rotate_gpu.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/RotateWithOffset.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Round.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Rsqrt.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/scatter_gpu.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ScatterNd.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/select_gpu.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Select.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Selu.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sigmoid.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sign.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sin.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sinh.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Softplus.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/SpaceToBatchND.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/SparseToDense.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/SplitV.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sqrt.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Square.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/SquaredDifference.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Step.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/strided_slice_gpu.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/StridedSlice.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Tan.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Tanh.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/tile_gpu.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Tile.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/TopK.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/transform_gpu.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Transform.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Unique.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Unpack.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/segment_gpu.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/UnsortedSegmentSum.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/register_all_kernels.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-webgl@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-webgl/src/index.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-wasm@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/types.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-wasm@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/_FusedMatMul.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-wasm@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/unary_kernel.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-wasm@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Abs.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-wasm@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/binary_kernel.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-wasm@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Add.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-wasm@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/AddN.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-wasm@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Identity.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-wasm@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Transpose.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-wasm@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/kernel_utils.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-wasm@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ArgMax.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-wasm@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/AvgPool.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-wasm@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Reshape.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-wasm@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/BatchMatMul.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-wasm@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Cast.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-wasm@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Ceil.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-wasm@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ClipByValue.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-wasm@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Concat.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-wasm@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Conv2D.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-wasm@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Conv2DBackpropInput.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-wasm@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Cos.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-wasm@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/CropAndResize.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-wasm@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Cumsum.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-wasm@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/DepthToSpace.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-wasm@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/DepthwiseConv2dNative.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-wasm@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Equal.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-wasm@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Exp.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-wasm@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ExpandDims.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-wasm@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Fill.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-wasm@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FlipLeftRight.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-wasm@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Floor.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-wasm@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FloorDiv.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-wasm@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FusedBatchNorm.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-wasm@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FusedConv2D.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-wasm@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FusedDepthwiseConv2D.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-wasm@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/GatherNd.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-wasm@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/GatherV2.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-wasm@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Greater.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-wasm@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/GreaterEqual.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-wasm@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/LeakyRelu.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-wasm@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Less.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-wasm@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/LessEqual.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-wasm@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Log.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-wasm@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/LogicalAnd.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-wasm@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Max.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-wasm@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Maximum.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-wasm@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/MaxPool.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-wasm@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Mean.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-wasm@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Min.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-wasm@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Minimum.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-wasm@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Multiply.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-wasm@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Neg.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-wasm@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NonMaxSuppression_util.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-wasm@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NonMaxSuppressionV3.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-wasm@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NonMaxSuppressionV4.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-wasm@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NonMaxSuppressionV5.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-wasm@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NotEqual.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-wasm@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/OneHot.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-wasm@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/OnesLike.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-wasm@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Pack.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-wasm@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/PadV2.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-wasm@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Pow.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-wasm@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Prelu.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-wasm@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Prod.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-wasm@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Range.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-wasm@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/RealDiv.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-wasm@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Relu.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-wasm@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Relu6.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-wasm@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ResizeBilinear.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-wasm@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Reverse.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-wasm@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/RotateWithOffset.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-wasm@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Round.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-wasm@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Rsqrt.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-wasm@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ScatterNd.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-wasm@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Select.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-wasm@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sigmoid.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-wasm@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sin.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-wasm@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Slice.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-wasm@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Softmax.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-wasm@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/SplitV.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-wasm@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sqrt.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-wasm@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Square.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-wasm@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/SquaredDifference.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-wasm@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Step.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-wasm@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/StridedSlice.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-wasm@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sub.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-wasm@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sum.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-wasm@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Tanh.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-wasm@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Tile.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-wasm@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/TopK.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-wasm@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Unpack.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-wasm@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ZerosLike.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-wasm@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-wasm/src/register_all_kernels.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-wasm@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-wasm/src/flags_wasm.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-wasm@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-wasm/src/backend_wasm.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-wasm@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-wasm/wasm-out/tfjs-backend-wasm-threaded-simd.worker.js", "../node_modules/.pnpm/@tensorflow/tfjs-backend-wasm@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-wasm/src/version.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-wasm@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-wasm/src/base.ts", "../node_modules/.pnpm/@tensorflow/tfjs-backend-wasm@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-backend-wasm/src/index.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/abs.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/acos.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/acosh.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/add.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/all.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/any.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/arg_max.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/arg_min.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as_scalar.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as_type.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as1d.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as2d.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as3d.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as4d.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as5d.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/asin.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/asinh.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/atan.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/atan2.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/atanh.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/avg_pool.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/batch_to_space_nd.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/batchnorm.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/broadcast_to.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/cast.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/ceil.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/clip_by_value.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/concat.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/conv1d.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/conv2d_transpose.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/conv2d.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/cos.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/cosh.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/cumsum.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/depth_to_space.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/depthwise_conv2d.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/dilation2d.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/div_no_nan.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/div.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/dot.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/elu.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/equal.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/erf.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/exp.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/expand_dims.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/expm1.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/fft.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/flatten.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/floor.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/floorDiv.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/gather.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/greater_equal.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/greater.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/ifft.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/irfft.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/is_finite.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/is_inf.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/is_nan.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/leaky_relu.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/less_equal.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/less.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/local_response_normalization.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log_sigmoid.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log_softmax.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log_sum_exp.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log1p.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/logical_and.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/logical_not.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/logical_or.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/logical_xor.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mat_mul.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/max_pool.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/max.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/maximum.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mean.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/min.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/minimum.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mirror_pad.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mod.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mul.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/neg.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/norm.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/not_equal.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/one_hot.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/ones_like.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/pad.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/pool.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/pow.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/prelu.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/prod.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/reciprocal.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/relu.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/relu6.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/reshape_as.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/reshape.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/resize_bilinear.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/resize_nearest_neighbor.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/reverse.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/rfft.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/round.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/rsqrt.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/selu.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/separable_conv2d.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sigmoid.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sign.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sin.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sinh.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/slice.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/softmax.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/softplus.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/space_to_batch_nd.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/split.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sqrt.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/square.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/squared_difference.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/squeeze.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/stack.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/step.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/strided_slice.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sub.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sum.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/tan.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/tanh.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/tile.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/to_bool.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/to_float.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/to_int.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/topk.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/transpose.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/unique.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/unsorted_segment_sum.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/unstack.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/where.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/zeros_like.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/public/chained_ops/register_all_chained_ops.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/gradients/Abs_grad.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/gradients/Acos_grad.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/gradients/Acosh_grad.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/gradients/Add_grad.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/gradients/AddN_grad.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/gradients/ArgMax_grad.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/gradients/ArgMin_grad.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/gradients/Asin_grad.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/gradients/Asinh_grad.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/gradients/Atan2_grad.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/gradients/Atan_grad.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/gradients/Atanh_grad.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/avg_pool_3d_grad.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/gradients/AvgPool3D_grad.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/avg_pool_grad.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/gradients/AvgPool_grad.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/gradients/BatchMatMul_grad.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/gradients/BatchToSpaceND_grad.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/gradients/BroadcastTo_grad.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/gradients/Cast_grad.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/gradients/Ceil_grad.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/gradients/ClipByValue_grad.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/gradients/ComplexAbs_grad.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/gradients/Concat_grad.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/gradients/Conv2D_grad.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/gradients/Conv2DBackpropInput_grad.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/conv3d_backprop_filter.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/gradients/Conv3D_grad.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/gradients/Cos_grad.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/gradients/Cosh_grad.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/gradients/Cumsum_grad.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/gradients/DepthwiseConv2dNative_grad.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/gradients/Dilation2D_grad.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/gradients/Elu_grad.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/gradients/Erf_grad.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/gradients/Exp_grad.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/gradients/ExpandDims_grad.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/gradients/Expm1_grad.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/gradients/Floor_grad.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/gradients/FloorDiv_grad.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/gradients/FusedBatchNorm_grad.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/gradients/GatherV2_grad.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/gradients/GreaterEqual_grad.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/gradients/Identity_grad.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/gradients/IsFinite_grad.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/gradients/IsInf_grad.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/gradients/IsNan_grad.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/gradients/LeakyRelu_grad.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/gradients/Log1p_grad.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/gradients/Log_grad.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/gradients/LogSoftmax_grad.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/local_response_normalization_backprop.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/gradients/LRN_grad.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/gradients/min_max_grad_util.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/gradients/Max_grad.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/gradients/Maximum_grad.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/max_pool_3d_grad.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/gradients/MaxPool3D_grad.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/ops/max_pool_grad.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/gradients/MaxPool_grad.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/gradients/Mean_grad.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/gradients/Min_grad.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/gradients/Minimum_grad.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/gradients/MirrorPad_grad.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/gradients/Mod_grad.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/gradients/Multiply_grad.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/gradients/Neg_grad.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/gradients/OneHot_grad.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/gradients/OnesLike_grad.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/gradients/Pack_grad.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/gradients/PadV2_grad.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/gradients/Pow_grad.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/gradients/Prelu_grad.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/gradients/RealDiv_grad.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/gradients/Reciprocal_grad.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/gradients/Relu6_grad.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/gradients/Relu_grad.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/gradients/Reshape_grad.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/gradients/ResizeBilinear_grad.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/gradients/ResizeNearestNeighbor_grad.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/gradients/Reverse_grad.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/gradients/Round_grad.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/gradients/Rsqrt_grad.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/gradients/Select_grad.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/gradients/Selu_grad.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/gradients/Sigmoid_grad.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/gradients/Sign_grad.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/gradients/Sin_grad.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/gradients/Sinh_grad.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/gradients/Slice_grad.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/gradients/Softmax_grad.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/gradients/Softplus_grad.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/gradients/SpaceToBatchND_grad.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/gradients/SplitV_grad.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/gradients/Sqrt_grad.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/gradients/Square_grad.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/gradients/SquaredDifference_grad.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/gradients/Step_grad.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/gradients/Sub_grad.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/gradients/Sum_grad.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/gradients/Tan_grad.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/gradients/Tanh_grad.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/gradients/Tile_grad.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/gradients/Transpose_grad.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/gradients/Unpack_grad.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/gradients/UnsortedSegmentSum_grad.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/gradients/ZerosLike_grad.ts", "../node_modules/.pnpm/@tensorflow/tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-core/src/register_all_gradients.ts", "../node_modules/.pnpm/@tensorflow/tfjs-layers@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-layers/src/exports_constraints.ts", "../node_modules/.pnpm/@tensorflow/tfjs-layers@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-layers/src/backend/common.ts", "../node_modules/.pnpm/@tensorflow/tfjs-layers@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-layers/src/errors.ts", "../node_modules/.pnpm/@tensorflow/tfjs-layers@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-layers/src/utils/generic_utils.ts", "../node_modules/.pnpm/@tensorflow/tfjs-layers@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-layers/src/constraints.ts", "../node_modules/.pnpm/@tensorflow/tfjs-layers@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-layers/src/exports_initializers.ts", "../node_modules/.pnpm/@tensorflow/tfjs-layers@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-layers/src/keras_format/common.ts", "../node_modules/.pnpm/@tensorflow/tfjs-layers@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-layers/src/common.ts", "../node_modules/.pnpm/@tensorflow/tfjs-layers@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-layers/src/utils/math_utils.ts", "../node_modules/.pnpm/@tensorflow/tfjs-layers@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-layers/src/backend/tfjs_backend.ts", "../node_modules/.pnpm/@tensorflow/tfjs-layers@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-layers/src/keras_format/initializer_config.ts", "../node_modules/.pnpm/@tensorflow/tfjs-layers@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-layers/src/initializers.ts", "../node_modules/.pnpm/@tensorflow/tfjs-layers@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-layers/src/exports_layers.ts", "../node_modules/.pnpm/@tensorflow/tfjs-layers@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-layers/src/backend/state.ts", "../node_modules/.pnpm/@tensorflow/tfjs-layers@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-layers/src/utils/types_utils.ts", "../node_modules/.pnpm/@tensorflow/tfjs-layers@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-layers/src/utils/variable_utils.ts", "../node_modules/.pnpm/@tensorflow/tfjs-layers@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-layers/src/variables.ts", "../node_modules/.pnpm/@tensorflow/tfjs-layers@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-layers/src/engine/topology.ts", "../node_modules/.pnpm/@tensorflow/tfjs-layers@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-layers/src/engine/input_layer.ts", "../node_modules/.pnpm/@tensorflow/tfjs-layers@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-layers/src/logs.ts", "../node_modules/.pnpm/@tensorflow/tfjs-layers@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-layers/src/base_callbacks.ts", "../node_modules/.pnpm/@tensorflow/tfjs-layers@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-layers/src/layers/serialization.ts", "../node_modules/.pnpm/@tensorflow/tfjs-layers@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-layers/src/losses.ts", "../node_modules/.pnpm/@tensorflow/tfjs-layers@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-layers/src/metrics.ts", "../node_modules/.pnpm/@tensorflow/tfjs-layers@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-layers/src/optimizers.ts", "../node_modules/.pnpm/@tensorflow/tfjs-layers@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-layers/src/user_defined_metadata.ts", "../node_modules/.pnpm/@tensorflow/tfjs-layers@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-layers/src/utils/layer_utils.ts", "../node_modules/.pnpm/@tensorflow/tfjs-layers@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-layers/src/utils/serialization_utils.ts", "../node_modules/.pnpm/@tensorflow/tfjs-layers@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-layers/src/version.ts", "../node_modules/.pnpm/@tensorflow/tfjs-layers@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-layers/src/engine/executor.ts", "../node_modules/.pnpm/@tensorflow/tfjs-layers@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-layers/src/engine/container.ts", "../node_modules/.pnpm/@tensorflow/tfjs-layers@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-layers/src/engine/training_utils.ts", "../node_modules/.pnpm/@tensorflow/tfjs-layers@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-layers/src/engine/training_dataset.ts", "../node_modules/.pnpm/@tensorflow/tfjs-layers@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-layers/src/engine/training_tensors.ts", "../node_modules/.pnpm/@tensorflow/tfjs-layers@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-layers/src/engine/training.ts", "../node_modules/.pnpm/@tensorflow/tfjs-layers@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-layers/src/models.ts", "../node_modules/.pnpm/@tensorflow/tfjs-layers@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-layers/src/exports.ts", "../node_modules/.pnpm/@tensorflow/tfjs-layers@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-layers/src/activations.ts", "../node_modules/.pnpm/@tensorflow/tfjs-layers@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-layers/src/regularizers.ts", "../node_modules/.pnpm/@tensorflow/tfjs-layers@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-layers/src/layers/advanced_activations.ts", "../node_modules/.pnpm/@tensorflow/tfjs-layers@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-layers/src/utils/conv_utils.ts", "../node_modules/.pnpm/@tensorflow/tfjs-layers@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-layers/src/layers/convolutional.ts", "../node_modules/.pnpm/@tensorflow/tfjs-layers@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-layers/src/layers/convolutional_depthwise.ts", "../node_modules/.pnpm/@tensorflow/tfjs-layers@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-layers/src/layers/recurrent.ts", "../node_modules/.pnpm/@tensorflow/tfjs-layers@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-layers/src/layers/convolutional_recurrent.ts", "../node_modules/.pnpm/@tensorflow/tfjs-layers@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-layers/src/layers/core.ts", "../node_modules/.pnpm/@tensorflow/tfjs-layers@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-layers/src/layers/embeddings.ts", "../node_modules/.pnpm/@tensorflow/tfjs-layers@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-layers/src/layers/merge.ts", "../node_modules/.pnpm/@tensorflow/tfjs-layers@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-layers/src/layers/noise.ts", "../node_modules/.pnpm/@tensorflow/tfjs-layers@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-layers/src/layers/normalization.ts", "../node_modules/.pnpm/@tensorflow/tfjs-layers@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-layers/src/layers/padding.ts", "../node_modules/.pnpm/@tensorflow/tfjs-layers@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-layers/src/layers/pooling.ts", "../node_modules/.pnpm/@tensorflow/tfjs-layers@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-layers/src/layers/wrappers.ts", "../node_modules/.pnpm/@tensorflow/tfjs-layers@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-layers/src/exports_metrics.ts", "../node_modules/.pnpm/@tensorflow/tfjs-layers@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-layers/src/exports_models.ts", "../node_modules/.pnpm/@tensorflow/tfjs-layers@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-layers/src/exports_regularizers.ts", "../node_modules/.pnpm/@tensorflow/tfjs-layers@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-layers/src/callbacks.ts", "../node_modules/.pnpm/@tensorflow/tfjs-layers@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-layers/src/index.ts", "../node_modules/.pnpm/@tensorflow/tfjs-converter@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-converter/src/data/compiled_api.ts", "../node_modules/.pnpm/@tensorflow/tfjs-converter@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-converter/src/operations/custom_op/register.ts", "../node_modules/.pnpm/@tensorflow/tfjs-converter@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-converter/src/operations/executors/utils.ts", "../node_modules/.pnpm/@tensorflow/tfjs-converter@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-converter/src/operations/op_list/arithmetic.ts", "../node_modules/.pnpm/@tensorflow/tfjs-converter@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-converter/src/operations/op_list/basic_math.ts", "../node_modules/.pnpm/@tensorflow/tfjs-converter@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-converter/src/operations/op_list/control.ts", "../node_modules/.pnpm/@tensorflow/tfjs-converter@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-converter/src/operations/op_list/convolution.ts", "../node_modules/.pnpm/@tensorflow/tfjs-converter@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-converter/src/operations/op_list/creation.ts", "../node_modules/.pnpm/@tensorflow/tfjs-converter@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-converter/src/operations/op_list/dynamic.ts", "../node_modules/.pnpm/@tensorflow/tfjs-converter@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-converter/src/operations/op_list/evaluation.ts", "../node_modules/.pnpm/@tensorflow/tfjs-converter@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-converter/src/operations/op_list/graph.ts", "../node_modules/.pnpm/@tensorflow/tfjs-converter@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-converter/src/operations/op_list/hash_table.ts", "../node_modules/.pnpm/@tensorflow/tfjs-converter@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-converter/src/operations/op_list/image.ts", "../node_modules/.pnpm/@tensorflow/tfjs-converter@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-converter/src/operations/op_list/logical.ts", "../node_modules/.pnpm/@tensorflow/tfjs-converter@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-converter/src/operations/op_list/matrices.ts", "../node_modules/.pnpm/@tensorflow/tfjs-converter@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-converter/src/operations/op_list/normalization.ts", "../node_modules/.pnpm/@tensorflow/tfjs-converter@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-converter/src/operations/op_list/reduction.ts", "../node_modules/.pnpm/@tensorflow/tfjs-converter@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-converter/src/operations/op_list/slice_join.ts", "../node_modules/.pnpm/@tensorflow/tfjs-converter@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-converter/src/operations/op_list/spectral.ts", "../node_modules/.pnpm/@tensorflow/tfjs-converter@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-converter/src/operations/op_list/transformation.ts", "../node_modules/.pnpm/@tensorflow/tfjs-converter@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-converter/src/operations/operation_mapper.ts", "../node_modules/.pnpm/@tensorflow/tfjs-converter@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-converter/src/operations/custom_op/node_value_impl.ts", "../node_modules/.pnpm/@tensorflow/tfjs-converter@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-converter/src/operations/executors/arithmetic_executor.ts", "../node_modules/.pnpm/@tensorflow/tfjs-converter@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-converter/src/operations/executors/basic_math_executor.ts", "../node_modules/.pnpm/@tensorflow/tfjs-converter@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-converter/src/executor/tensor_utils.ts", "../node_modules/.pnpm/@tensorflow/tfjs-converter@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-converter/src/executor/tensor_array.ts", "../node_modules/.pnpm/@tensorflow/tfjs-converter@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-converter/src/executor/tensor_list.ts", "../node_modules/.pnpm/@tensorflow/tfjs-converter@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-converter/src/operations/executors/control_executor.ts", "../node_modules/.pnpm/@tensorflow/tfjs-converter@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-converter/src/operations/executors/convolution_executor.ts", "../node_modules/.pnpm/@tensorflow/tfjs-converter@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-converter/src/operations/executors/creation_executor.ts", "../node_modules/.pnpm/@tensorflow/tfjs-converter@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-converter/src/operations/executors/dynamic_executor.ts", "../node_modules/.pnpm/@tensorflow/tfjs-converter@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-converter/src/operations/executors/evaluation_executor.ts", "../node_modules/.pnpm/@tensorflow/tfjs-converter@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-converter/src/operations/executors/graph_executor.ts", "../node_modules/.pnpm/@tensorflow/tfjs-converter@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-converter/src/executor/hash_table.ts", "../node_modules/.pnpm/@tensorflow/tfjs-converter@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-converter/src/operations/executors/hash_table_executor.ts", "../node_modules/.pnpm/@tensorflow/tfjs-converter@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-converter/src/operations/executors/image_executor.ts", "../node_modules/.pnpm/@tensorflow/tfjs-converter@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-converter/src/operations/executors/logical_executor.ts", "../node_modules/.pnpm/@tensorflow/tfjs-converter@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-converter/src/operations/executors/matrices_executor.ts", "../node_modules/.pnpm/@tensorflow/tfjs-converter@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-converter/src/operations/executors/normalization_executor.ts", "../node_modules/.pnpm/@tensorflow/tfjs-converter@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-converter/src/operations/executors/reduction_executor.ts", "../node_modules/.pnpm/@tensorflow/tfjs-converter@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-converter/src/operations/executors/slice_join_executor.ts", "../node_modules/.pnpm/@tensorflow/tfjs-converter@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-converter/src/operations/executors/spectral_executor.ts", "../node_modules/.pnpm/@tensorflow/tfjs-converter@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-converter/src/operations/executors/transformation_executor.ts", "../node_modules/.pnpm/@tensorflow/tfjs-converter@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-converter/src/operations/operation_executor.ts", "../node_modules/.pnpm/@tensorflow/tfjs-converter@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-converter/src/executor/execution_context.ts", "../node_modules/.pnpm/@tensorflow/tfjs-converter@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-converter/src/executor/model_analysis.ts", "../node_modules/.pnpm/@tensorflow/tfjs-converter@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-converter/src/executor/graph_executor.ts", "../node_modules/.pnpm/@tensorflow/tfjs-converter@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-converter/src/executor/resource_manager.ts", "../node_modules/.pnpm/@tensorflow/tfjs-converter@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-converter/src/executor/graph_model.ts", "../node_modules/.pnpm/@tensorflow/tfjs-converter@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-converter/src/version.ts", "../node_modules/.pnpm/@tensorflow/tfjs-converter@3.3.0_@tensorflow+tfjs-core@3.3.0/node_modules/@tensorflow/tfjs-converter/src/index.ts", "../node_modules/.pnpm/@tensorflow/tfjs-data@3.3.0_67c79a722ac85e5c2aacae49a2e61dcd/node_modules/@tensorflow/tfjs-data/src/index.ts", "../node_modules/.pnpm/@tensorflow/tfjs-data@3.3.0_67c79a722ac85e5c2aacae49a2e61dcd/node_modules/@tensorflow/tfjs-data/src/dataset.ts", "../node_modules/.pnpm/@tensorflow/tfjs-data@3.3.0_67c79a722ac85e5c2aacae49a2e61dcd/node_modules/@tensorflow/tfjs-data/src/iterators/lazy_iterator.ts", "../node_modules/.pnpm/@tensorflow/tfjs-data@3.3.0_67c79a722ac85e5c2aacae49a2e61dcd/node_modules/@tensorflow/tfjs-data/src/util/deep_map.ts", "../node_modules/.pnpm/@tensorflow/tfjs-data@3.3.0_67c79a722ac85e5c2aacae49a2e61dcd/node_modules/@tensorflow/tfjs-data/src/util/deep_clone.ts", "../node_modules/.pnpm/@tensorflow/tfjs-data@3.3.0_67c79a722ac85e5c2aacae49a2e61dcd/node_modules/@tensorflow/tfjs-data/src/util/ring_buffer.ts", "../node_modules/.pnpm/@tensorflow/tfjs-data@3.3.0_67c79a722ac85e5c2aacae49a2e61dcd/node_modules/@tensorflow/tfjs-data/src/util/growing_ring_buffer.ts", "../node_modules/.pnpm/@tensorflow/tfjs-data@3.3.0_67c79a722ac85e5c2aacae49a2e61dcd/node_modules/@tensorflow/tfjs-data/src/datasets/text_line_dataset.ts", "../node_modules/.pnpm/@tensorflow/tfjs-data@3.3.0_67c79a722ac85e5c2aacae49a2e61dcd/node_modules/@tensorflow/tfjs-data/src/datasets/csv_dataset.ts", "../node_modules/.pnpm/@tensorflow/tfjs-data@3.3.0_67c79a722ac85e5c2aacae49a2e61dcd/node_modules/@tensorflow/tfjs-data/src/iterators/microphone_iterator.ts", "../node_modules/.pnpm/@tensorflow/tfjs-data@3.3.0_67c79a722ac85e5c2aacae49a2e61dcd/node_modules/@tensorflow/tfjs-data/src/iterators/webcam_iterator.ts", "../node_modules/.pnpm/@tensorflow/tfjs-data@3.3.0_67c79a722ac85e5c2aacae49a2e61dcd/node_modules/@tensorflow/tfjs-data/src/datasource.ts", "../node_modules/.pnpm/@tensorflow/tfjs-data@3.3.0_67c79a722ac85e5c2aacae49a2e61dcd/node_modules/@tensorflow/tfjs-data/src/iterators/string_iterator.ts", "../node_modules/.pnpm/@tensorflow/tfjs-data@3.3.0_67c79a722ac85e5c2aacae49a2e61dcd/node_modules/@tensorflow/tfjs-data/src/iterators/byte_chunk_iterator.ts", "../node_modules/.pnpm/@tensorflow/tfjs-data@3.3.0_67c79a722ac85e5c2aacae49a2e61dcd/node_modules/@tensorflow/tfjs-data/src/iterators/file_chunk_iterator.ts", "../node_modules/.pnpm/@tensorflow/tfjs-data@3.3.0_67c79a722ac85e5c2aacae49a2e61dcd/node_modules/@tensorflow/tfjs-data/src/iterators/url_chunk_iterator.ts", "../node_modules/.pnpm/@tensorflow/tfjs-data@3.3.0_67c79a722ac85e5c2aacae49a2e61dcd/node_modules/@tensorflow/tfjs-data/src/util/source_util.ts", "../node_modules/.pnpm/@tensorflow/tfjs-data@3.3.0_67c79a722ac85e5c2aacae49a2e61dcd/node_modules/@tensorflow/tfjs-data/src/sources/file_data_source.ts", "../node_modules/.pnpm/@tensorflow/tfjs-data@3.3.0_67c79a722ac85e5c2aacae49a2e61dcd/node_modules/@tensorflow/tfjs-data/src/sources/url_data_source.ts", "../node_modules/.pnpm/@tensorflow/tfjs-data@3.3.0_67c79a722ac85e5c2aacae49a2e61dcd/node_modules/@tensorflow/tfjs-data/src/readers.ts", "../node_modules/.pnpm/@tensorflow/tfjs-data@3.3.0_67c79a722ac85e5c2aacae49a2e61dcd/node_modules/@tensorflow/tfjs-data/src/version.ts", "../src/tfjs/tf-browser.ts", "../src/tfjs/backend.ts", "../src/age/age.ts", "../src/profile.ts", "../src/gender/gender.ts", "../src/emotion/emotion.ts", "../src/embedding/embedding.ts", "../src/faceres/faceres.ts", "../src/faceall.ts", "../src/blazeface/blazeface.ts", "../src/blazeface/box.ts", "../src/blazeface/util.ts", "../src/blazeface/coords.ts", "../src/blazeface/facepipeline.ts", "../src/human.ts", "../src/posenet/posenet.ts", "../src/posenet/modelBase.ts", "../src/posenet/heapSort.ts", "../src/posenet/buildParts.ts", "../src/posenet/decodePose.ts", "../src/posenet/vectors.ts", "../src/posenet/decoders.ts", "../src/posenet/decodeMultiple.ts", "../src/posenet/util.ts", "../src/handpose/handpose.ts", "../src/handpose/box.ts", "../src/handpose/handdetector.ts", "../src/handpose/util.ts", "../src/handpose/handpipeline.ts", "../src/handpose/anchors.ts", "../src/blazepose/blazepose.ts", "../src/blazepose/annotations.ts", "../src/nanodet/nanodet.ts", "../src/nanodet/labels.ts", "../src/gesture/gesture.ts", "../src/image/imagefx.js", "../src/image/image.ts", "../src/draw/draw.ts", "../src/config.ts", "../src/sample.ts", "../demo/menu.js", "../demo/gl-bench.js", "../demo/browser.js"], - "sourcesContent": ["import { log } from '../helpers';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as blazeface from './blazeface';\nimport * as facepipeline from './facepipeline';\nimport * as coords from './coords';\n\nexport class MediaPipeFaceMesh {\n facePipeline: any;\n config: any;\n\n constructor(blazeFace, blazeMeshModel, irisModel, config) {\n this.facePipeline = new facepipeline.Pipeline(blazeFace, blazeMeshModel, irisModel);\n this.config = config;\n }\n\n async estimateFaces(input, config): Promise<{ confidence, boxConfidence, faceConfidence, box, mesh, boxRaw, meshRaw, annotations, image }[]> {\n const predictions = await this.facePipeline.predict(input, config);\n const results: Array<{ confidence, boxConfidence, faceConfidence, box, mesh, boxRaw, meshRaw, annotations, image }> = [];\n for (const prediction of (predictions || [])) {\n if (prediction.isDisposedInternal) continue; // guard against disposed tensors on long running operations such as pause in middle of processing\n const mesh = prediction.coords ? prediction.coords.arraySync() : [];\n const meshRaw = mesh.map((pt) => [\n pt[0] / input.shape[2],\n pt[1] / input.shape[1],\n pt[2] / this.facePipeline.meshSize,\n ]);\n const annotations = {};\n if (mesh && mesh.length > 0) {\n for (const key of Object.keys(coords.MESH_ANNOTATIONS)) annotations[key] = coords.MESH_ANNOTATIONS[key].map((index) => mesh[index]);\n }\n const box = prediction.box ? [\n Math.max(0, prediction.box.startPoint[0]),\n Math.max(0, prediction.box.startPoint[1]),\n Math.min(input.shape[1], prediction.box.endPoint[0]) - Math.max(0, prediction.box.startPoint[0]),\n Math.min(input.shape[2], prediction.box.endPoint[1]) - Math.max(0, prediction.box.startPoint[1]),\n ] : 0;\n const boxRaw = prediction.box ? [\n prediction.box.startPoint[0] / input.shape[2],\n prediction.box.startPoint[1] / input.shape[1],\n (prediction.box.endPoint[0] - prediction.box.startPoint[0]) / input.shape[2],\n (prediction.box.endPoint[1] - prediction.box.startPoint[1]) / input.shape[1],\n ] : [];\n results.push({\n confidence: prediction.faceConfidence || prediction.boxConfidence || 0,\n boxConfidence: prediction.boxConfidence,\n faceConfidence: prediction.faceConfidence,\n box,\n boxRaw,\n mesh,\n meshRaw,\n annotations,\n image: prediction.image ? prediction.image.clone() : null,\n });\n if (prediction.coords) prediction.coords.dispose();\n if (prediction.image) prediction.image.dispose();\n }\n return results;\n }\n}\n\nlet faceModels = [null, null, null];\nexport async function load(config) {\n // @ts-ignore\n faceModels = await Promise.all([\n (!faceModels[0] && config.face.enabled) ? blazeface.load(config) : null,\n (!faceModels[1] && config.face.mesh.enabled) ? tf.loadGraphModel(config.face.mesh.modelPath, { fromTFHub: config.face.mesh.modelPath.includes('tfhub.dev') }) : null,\n (!faceModels[2] && config.face.iris.enabled) ? tf.loadGraphModel(config.face.iris.modelPath, { fromTFHub: config.face.iris.modelPath.includes('tfhub.dev') }) : null,\n ]);\n const faceMesh = new MediaPipeFaceMesh(faceModels[0], faceModels[1], faceModels[2], config);\n if (config.face.mesh.enabled && config.debug) log(`load model: ${config.face.mesh.modelPath.match(/\\/(.*)\\./)[1]}`);\n if (config.face.iris.enabled && config.debug) log(`load model: ${config.face.iris.modelPath.match(/\\/(.*)\\./)[1]}`);\n return faceMesh;\n}\n\nexports.triangulation = coords.TRI468;\n", "export const partNames = [\n 'nose', 'leftEye', 'rightEye', 'leftEar', 'rightEar', 'leftShoulder',\n 'rightShoulder', 'leftElbow', 'rightElbow', 'leftWrist', 'rightWrist',\n 'leftHip', 'rightHip', 'leftKnee', 'rightKnee', 'leftAnkle', 'rightAnkle',\n];\n\nexport const NUM_KEYPOINTS = exports.partNames.length; // 17 keypoints\n\nexport const partIds = exports.partNames.reduce((result, jointName, i) => {\n result[jointName] = i;\n return result;\n}, {});\n\nconst connectedPartNames = [\n ['leftHip', 'leftShoulder'], ['leftElbow', 'leftShoulder'],\n ['leftElbow', 'leftWrist'], ['leftHip', 'leftKnee'],\n ['leftKnee', 'leftAnkle'], ['rightHip', 'rightShoulder'],\n ['rightElbow', 'rightShoulder'], ['rightElbow', 'rightWrist'],\n ['rightHip', 'rightKnee'], ['rightKnee', 'rightAnkle'],\n ['leftShoulder', 'rightShoulder'], ['leftHip', 'rightHip'],\n];\nexport const connectedPartIndices = connectedPartNames.map(([jointNameA, jointNameB]) => ([partIds[jointNameA], partIds[jointNameB]]));\n\nexport const poseChain = [\n ['nose', 'leftEye'], ['leftEye', 'leftEar'], ['nose', 'rightEye'],\n ['rightEye', 'rightEar'], ['nose', 'leftShoulder'],\n ['leftShoulder', 'leftElbow'], ['leftElbow', 'leftWrist'],\n ['leftShoulder', 'leftHip'], ['leftHip', 'leftKnee'],\n ['leftKnee', 'leftAnkle'], ['nose', 'rightShoulder'],\n ['rightShoulder', 'rightElbow'], ['rightElbow', 'rightWrist'],\n ['rightShoulder', 'rightHip'], ['rightHip', 'rightKnee'],\n ['rightKnee', 'rightAnkle'],\n];\n\nexport const partChannels = [\n 'left_face',\n 'right_face',\n 'right_upper_leg_front',\n 'right_lower_leg_back',\n 'right_upper_leg_back',\n 'left_lower_leg_front',\n 'left_upper_leg_front',\n 'left_upper_leg_back',\n 'left_lower_leg_back',\n 'right_feet',\n 'right_lower_leg_front',\n 'left_feet',\n 'torso_front',\n 'torso_back',\n 'right_upper_arm_front',\n 'right_upper_arm_back',\n 'right_lower_arm_back',\n 'left_lower_arm_front',\n 'left_upper_arm_front',\n 'left_upper_arm_back',\n 'left_lower_arm_back',\n 'right_hand',\n 'right_lower_arm_front',\n 'left_hand',\n];\n", "// helper function: wrapper around console output\nexport function log(...msg) {\n const dt = new Date();\n const ts = `${dt.getHours().toString().padStart(2, '0')}:${dt.getMinutes().toString().padStart(2, '0')}:${dt.getSeconds().toString().padStart(2, '0')}.${dt.getMilliseconds().toString().padStart(3, '0')}`;\n // eslint-disable-next-line no-console\n if (msg) console.log(ts, 'Human:', ...msg);\n}\n\n// helper function: gets elapsed time on both browser and nodejs\nexport const now = () => {\n if (typeof performance !== 'undefined') return performance.now();\n return parseInt((Number(process.hrtime.bigint()) / 1000 / 1000).toString());\n};\n\n// helper function: perform deep merge of multiple objects so it allows full inheriance with overrides\nexport function mergeDeep(...objects) {\n const isObject = (obj) => obj && typeof obj === 'object';\n return objects.reduce((prev, obj) => {\n Object.keys(obj || {}).forEach((key) => {\n const pVal = prev[key];\n const oVal = obj[key];\n if (Array.isArray(pVal) && Array.isArray(oVal)) prev[key] = pVal.concat(...oVal);\n else if (isObject(pVal) && isObject(oVal)) prev[key] = mergeDeep(pVal, oVal);\n else prev[key] = oVal;\n });\n return prev;\n }, {});\n}\n", "export function info(): { platform: string, agent: string } {\n let platform;\n let agent;\n if (typeof navigator !== 'undefined') {\n const raw = navigator.userAgent.match(/\\(([^()]+)\\)/g);\n if (raw && raw[0]) {\n // @ts-ignore\n platform = raw[0].match(/\\(([^()]+)\\)/g)[0].replace(/\\(|\\)/g, '');\n agent = navigator.userAgent.replace(raw[0], '');\n if (platform[1]) agent = agent.replace(raw[1], '');\n agent = agent.replace(/ /g, ' ');\n }\n } else if (typeof process !== 'undefined') {\n platform = `${process.platform} ${process.arch}`;\n agent = `NodeJS ${process.version}`;\n }\n return { platform, agent };\n}\n", "", "// A port of an algorithm by Johannes Baag\u00F8e , 2010\n// http://baagoe.com/en/RandomMusings/javascript/\n// https://github.com/nquinlan/better-random-numbers-for-javascript-mirror\n// Original work is under MIT license -\n\n// Copyright (C) 2010 by Johannes Baag\u00F8e \n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n// \n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n// \n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n\n\n(function(global, module, define) {\n\nfunction Alea(seed) {\n var me = this, mash = Mash();\n\n me.next = function() {\n var t = 2091639 * me.s0 + me.c * 2.3283064365386963e-10; // 2^-32\n me.s0 = me.s1;\n me.s1 = me.s2;\n return me.s2 = t - (me.c = t | 0);\n };\n\n // Apply the seeding algorithm from Baagoe.\n me.c = 1;\n me.s0 = mash(' ');\n me.s1 = mash(' ');\n me.s2 = mash(' ');\n me.s0 -= mash(seed);\n if (me.s0 < 0) { me.s0 += 1; }\n me.s1 -= mash(seed);\n if (me.s1 < 0) { me.s1 += 1; }\n me.s2 -= mash(seed);\n if (me.s2 < 0) { me.s2 += 1; }\n mash = null;\n}\n\nfunction copy(f, t) {\n t.c = f.c;\n t.s0 = f.s0;\n t.s1 = f.s1;\n t.s2 = f.s2;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new Alea(seed),\n state = opts && opts.state,\n prng = xg.next;\n prng.int32 = function() { return (xg.next() * 0x100000000) | 0; }\n prng.double = function() {\n return prng() + (prng() * 0x200000 | 0) * 1.1102230246251565e-16; // 2^-53\n };\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nfunction Mash() {\n var n = 0xefc8249d;\n\n var mash = function(data) {\n data = data.toString();\n for (var i = 0; i < data.length; i++) {\n n += data.charCodeAt(i);\n var h = 0.02519603282416938 * n;\n n = h >>> 0;\n h -= n;\n h *= n;\n n = h >>> 0;\n h -= n;\n n += h * 0x100000000; // 2^32\n }\n return (n >>> 0) * 2.3283064365386963e-10; // 2^-32\n };\n\n return mash;\n}\n\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.alea = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xor128\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n\n // Set up generator function.\n me.next = function() {\n var t = me.x ^ (me.x << 11);\n me.x = me.y;\n me.y = me.z;\n me.z = me.w;\n return me.w ^= (me.w >>> 19) ^ t ^ (t >>> 8);\n };\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor128 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorwow\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var t = (me.x ^ (me.x >>> 2));\n me.x = me.y; me.y = me.z; me.z = me.w; me.w = me.v;\n return (me.d = (me.d + 362437 | 0)) +\n (me.v = (me.v ^ (me.v << 4)) ^ (t ^ (t << 1))) | 0;\n };\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n me.v = 0;\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n if (k == strseed.length) {\n me.d = me.x << 10 ^ me.x >>> 4;\n }\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n t.v = f.v;\n t.d = f.d;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorwow = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorshift7\" algorithm by\n// Fran\u00E7ois Panneton and Pierre L'ecuyer:\n// \"On the Xorgshift Random Number Generators\"\n// http://saluc.engr.uconn.edu/refs/crypto/rng/panneton05onthexorshift.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n // Update xor generator.\n var X = me.x, i = me.i, t, v, w;\n t = X[i]; t ^= (t >>> 7); v = t ^ (t << 24);\n t = X[(i + 1) & 7]; v ^= t ^ (t >>> 10);\n t = X[(i + 3) & 7]; v ^= t ^ (t >>> 3);\n t = X[(i + 4) & 7]; v ^= t ^ (t << 7);\n t = X[(i + 7) & 7]; t = t ^ (t << 13); v ^= t ^ (t << 9);\n X[i] = v;\n me.i = (i + 1) & 7;\n return v;\n };\n\n function init(me, seed) {\n var j, w, X = [];\n\n if (seed === (seed | 0)) {\n // Seed state array using a 32-bit integer.\n w = X[0] = seed;\n } else {\n // Seed state using a string.\n seed = '' + seed;\n for (j = 0; j < seed.length; ++j) {\n X[j & 7] = (X[j & 7] << 15) ^\n (seed.charCodeAt(j) + X[(j + 1) & 7] << 13);\n }\n }\n // Enforce an array length of 8, not all zeroes.\n while (X.length < 8) X.push(0);\n for (j = 0; j < 8 && X[j] === 0; ++j);\n if (j == 8) w = X[7] = -1; else w = X[j];\n\n me.x = X;\n me.i = 0;\n\n // Discard an initial 256 values.\n for (j = 256; j > 0; --j) {\n me.next();\n }\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.x = f.x.slice();\n t.i = f.i;\n return t;\n}\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.x) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorshift7 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n", "// A Javascript implementaion of Richard Brent's Xorgens xor4096 algorithm.\n//\n// This fast non-cryptographic random number generator is designed for\n// use in Monte-Carlo algorithms. It combines a long-period xorshift\n// generator with a Weyl generator, and it passes all common batteries\n// of stasticial tests for randomness while consuming only a few nanoseconds\n// for each prng generated. For background on the generator, see Brent's\n// paper: \"Some long-period random number generators using shifts and xors.\"\n// http://arxiv.org/pdf/1004.3115v1.pdf\n//\n// Usage:\n//\n// var xor4096 = require('xor4096');\n// random = xor4096(1); // Seed with int32 or string.\n// assert.equal(random(), 0.1520436450538547); // (0, 1) range, 53 bits.\n// assert.equal(random.int32(), 1806534897); // signed int32, 32 bits.\n//\n// For nonzero numeric keys, this impelementation provides a sequence\n// identical to that by Brent's xorgens 3 implementaion in C. This\n// implementation also provides for initalizing the generator with\n// string seeds, or for saving and restoring the state of the generator.\n//\n// On Chrome, this prng benchmarks about 2.1 times slower than\n// Javascript's built-in Math.random().\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n var w = me.w,\n X = me.X, i = me.i, t, v;\n // Update Weyl generator.\n me.w = w = (w + 0x61c88647) | 0;\n // Update xor generator.\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n // Update Xor generator array state.\n v = X[i] = v ^ t;\n me.i = i;\n // Result is the combination.\n return (v + (w ^ (w >>> 16))) | 0;\n };\n\n function init(me, seed) {\n var t, v, i, j, w, X = [], limit = 128;\n if (seed === (seed | 0)) {\n // Numeric seeds initialize v, which is used to generates X.\n v = seed;\n seed = null;\n } else {\n // String seeds are mixed into v and X one character at a time.\n seed = seed + '\\0';\n v = 0;\n limit = Math.max(limit, seed.length);\n }\n // Initialize circular array and weyl value.\n for (i = 0, j = -32; j < limit; ++j) {\n // Put the unicode characters into the array, and shuffle them.\n if (seed) v ^= seed.charCodeAt((j + 32) % seed.length);\n // After 32 shuffles, take v as the starting w value.\n if (j === 0) w = v;\n v ^= v << 10;\n v ^= v >>> 15;\n v ^= v << 4;\n v ^= v >>> 13;\n if (j >= 0) {\n w = (w + 0x61c88647) | 0; // Weyl.\n t = (X[j & 127] ^= (v + w)); // Combine xor and weyl to init array.\n i = (0 == t) ? i + 1 : 0; // Count zeroes.\n }\n }\n // We have detected all zeroes; make the key nonzero.\n if (i >= 128) {\n X[(seed && seed.length || 0) & 127] = -1;\n }\n // Run the generator 512 times to further mix the state before using it.\n // Factoring this as a function slows the main generator, so it is just\n // unrolled here. The weyl generator is not advanced while warming up.\n i = 127;\n for (j = 4 * 128; j > 0; --j) {\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n X[i] = v ^ t;\n }\n // Storing state as object members is faster than using closure variables.\n me.w = w;\n me.X = X;\n me.i = i;\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.i = f.i;\n t.w = f.w;\n t.X = f.X.slice();\n return t;\n};\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.X) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor4096 = impl;\n}\n\n})(\n this, // window object or global\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n", "// A Javascript implementaion of the \"Tyche-i\" prng algorithm by\n// Samuel Neves and Filipe Araujo.\n// See https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var b = me.b, c = me.c, d = me.d, a = me.a;\n b = (b << 25) ^ (b >>> 7) ^ c;\n c = (c - d) | 0;\n d = (d << 24) ^ (d >>> 8) ^ a;\n a = (a - b) | 0;\n me.b = b = (b << 20) ^ (b >>> 12) ^ c;\n me.c = c = (c - d) | 0;\n me.d = (d << 16) ^ (c >>> 16) ^ a;\n return me.a = (a - b) | 0;\n };\n\n /* The following is non-inverted tyche, which has better internal\n * bit diffusion, but which is about 25% slower than tyche-i in JS.\n me.next = function() {\n var a = me.a, b = me.b, c = me.c, d = me.d;\n a = (me.a + me.b | 0) >>> 0;\n d = me.d ^ a; d = d << 16 ^ d >>> 16;\n c = me.c + d | 0;\n b = me.b ^ c; b = b << 12 ^ d >>> 20;\n me.a = a = a + b | 0;\n d = d ^ a; me.d = d = d << 8 ^ d >>> 24;\n me.c = c = c + d | 0;\n b = b ^ c;\n return me.b = (b << 7 ^ b >>> 25);\n }\n */\n\n me.a = 0;\n me.b = 0;\n me.c = 2654435769 | 0;\n me.d = 1367130551;\n\n if (seed === Math.floor(seed)) {\n // Integer seed.\n me.a = (seed / 0x100000000) | 0;\n me.b = seed | 0;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 20; k++) {\n me.b ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.a = f.a;\n t.b = f.b;\n t.c = f.c;\n t.d = f.d;\n return t;\n};\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.tychei = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "", "/*\nCopyright 2014 David Bau.\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n*/\n\n(function (pool, math) {\n//\n// The following constants are related to IEEE 754 limits.\n//\nvar global = this,\n width = 256, // each RC4 output is 0 <= x < 256\n chunks = 6, // at least six RC4 outputs for each double\n digits = 52, // there are 52 significant digits in a double\n rngname = 'random', // rngname: name for Math.random and Math.seedrandom\n startdenom = math.pow(width, chunks),\n significance = math.pow(2, digits),\n overflow = significance * 2,\n mask = width - 1,\n nodecrypto; // node.js crypto module, initialized at the bottom.\n\n//\n// seedrandom()\n// This is the seedrandom function described above.\n//\nfunction seedrandom(seed, options, callback) {\n var key = [];\n options = (options == true) ? { entropy: true } : (options || {});\n\n // Flatten the seed string or build one from local entropy if needed.\n var shortseed = mixkey(flatten(\n options.entropy ? [seed, tostring(pool)] :\n (seed == null) ? autoseed() : seed, 3), key);\n\n // Use the seed to initialize an ARC4 generator.\n var arc4 = new ARC4(key);\n\n // This function returns a random double in [0, 1) that contains\n // randomness in every bit of the mantissa of the IEEE 754 value.\n var prng = function() {\n var n = arc4.g(chunks), // Start with a numerator n < 2 ^ 48\n d = startdenom, // and denominator d = 2 ^ 48.\n x = 0; // and no 'extra last byte'.\n while (n < significance) { // Fill up all significant digits by\n n = (n + x) * width; // shifting numerator and\n d *= width; // denominator and generating a\n x = arc4.g(1); // new least-significant-byte.\n }\n while (n >= overflow) { // To avoid rounding up, before adding\n n /= 2; // last byte, shift everything\n d /= 2; // right using integer math until\n x >>>= 1; // we have exactly the desired bits.\n }\n return (n + x) / d; // Form the number within [0, 1).\n };\n\n prng.int32 = function() { return arc4.g(4) | 0; }\n prng.quick = function() { return arc4.g(4) / 0x100000000; }\n prng.double = prng;\n\n // Mix the randomness into accumulated entropy.\n mixkey(tostring(arc4.S), pool);\n\n // Calling convention: what to return as a function of prng, seed, is_math.\n return (options.pass || callback ||\n function(prng, seed, is_math_call, state) {\n if (state) {\n // Load the arc4 state from the given state if it has an S array.\n if (state.S) { copy(state, arc4); }\n // Only provide the .state method if requested via options.state.\n prng.state = function() { return copy(arc4, {}); }\n }\n\n // If called as a method of Math (Math.seedrandom()), mutate\n // Math.random because that is how seedrandom.js has worked since v1.0.\n if (is_math_call) { math[rngname] = prng; return seed; }\n\n // Otherwise, it is a newer calling convention, so return the\n // prng directly.\n else return prng;\n })(\n prng,\n shortseed,\n 'global' in options ? options.global : (this == math),\n options.state);\n}\nmath['seed' + rngname] = seedrandom;\n\n//\n// ARC4\n//\n// An ARC4 implementation. The constructor takes a key in the form of\n// an array of at most (width) integers that should be 0 <= x < (width).\n//\n// The g(count) method returns a pseudorandom integer that concatenates\n// the next (count) outputs from ARC4. Its return value is a number x\n// that is in the range 0 <= x < (width ^ count).\n//\nfunction ARC4(key) {\n var t, keylen = key.length,\n me = this, i = 0, j = me.i = me.j = 0, s = me.S = [];\n\n // The empty key [] is treated as [0].\n if (!keylen) { key = [keylen++]; }\n\n // Set up S using the standard key scheduling algorithm.\n while (i < width) {\n s[i] = i++;\n }\n for (i = 0; i < width; i++) {\n s[i] = s[j = mask & (j + key[i % keylen] + (t = s[i]))];\n s[j] = t;\n }\n\n // The \"g\" method returns the next (count) outputs as one number.\n (me.g = function(count) {\n // Using instance members instead of closure state nearly doubles speed.\n var t, r = 0,\n i = me.i, j = me.j, s = me.S;\n while (count--) {\n t = s[i = mask & (i + 1)];\n r = r * width + s[mask & ((s[i] = s[j = mask & (j + t)]) + (s[j] = t))];\n }\n me.i = i; me.j = j;\n return r;\n // For robust unpredictability, the function call below automatically\n // discards an initial batch of values. This is called RC4-drop[256].\n // See http://google.com/search?q=rsa+fluhrer+response&btnI\n })(width);\n}\n\n//\n// copy()\n// Copies internal state of ARC4 to or from a plain object.\n//\nfunction copy(f, t) {\n t.i = f.i;\n t.j = f.j;\n t.S = f.S.slice();\n return t;\n};\n\n//\n// flatten()\n// Converts an object tree to nested arrays of strings.\n//\nfunction flatten(obj, depth) {\n var result = [], typ = (typeof obj), prop;\n if (depth && typ == 'object') {\n for (prop in obj) {\n try { result.push(flatten(obj[prop], depth - 1)); } catch (e) {}\n }\n }\n return (result.length ? result : typ == 'string' ? obj : obj + '\\0');\n}\n\n//\n// mixkey()\n// Mixes a string seed into a key that is an array of integers, and\n// returns a shortened string seed that is equivalent to the result key.\n//\nfunction mixkey(seed, key) {\n var stringseed = seed + '', smear, j = 0;\n while (j < stringseed.length) {\n key[mask & j] =\n mask & ((smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++));\n }\n return tostring(key);\n}\n\n//\n// autoseed()\n// Returns an object for autoseeding, using window.crypto and Node crypto\n// module if available.\n//\nfunction autoseed() {\n try {\n var out;\n if (nodecrypto && (out = nodecrypto.randomBytes)) {\n // The use of 'out' to remember randomBytes makes tight minified code.\n out = out(width);\n } else {\n out = new Uint8Array(width);\n (global.crypto || global.msCrypto).getRandomValues(out);\n }\n return tostring(out);\n } catch (e) {\n var browser = global.navigator,\n plugins = browser && browser.plugins;\n return [+new Date, global, plugins, global.screen, tostring(pool)];\n }\n}\n\n//\n// tostring()\n// Converts an array of charcodes to a string\n//\nfunction tostring(a) {\n return String.fromCharCode.apply(0, a);\n}\n\n//\n// When seedrandom.js is loaded, we immediately mix a few bits\n// from the built-in RNG into the entropy pool. Because we do\n// not want to interfere with deterministic PRNG state later,\n// seedrandom will not call math.random on its own again after\n// initialization.\n//\nmixkey(math.random(), pool);\n\n//\n// Nodejs and AMD support: export the implementation as a module using\n// either convention.\n//\nif ((typeof module) == 'object' && module.exports) {\n module.exports = seedrandom;\n // When in node.js, try using crypto package for autoseeding.\n try {\n nodecrypto = require('crypto');\n } catch (ex) {}\n} else if ((typeof define) == 'function' && define.amd) {\n define(function() { return seedrandom; });\n}\n\n// End anonymous scope, and pass initial values.\n})(\n [], // pool: entropy pool starts empty\n Math // math: package containing random, pow, and seedrandom\n);\n", "// A library of seedable RNGs implemented in Javascript.\n//\n// Usage:\n//\n// var seedrandom = require('seedrandom');\n// var random = seedrandom(1); // or any seed.\n// var x = random(); // 0 <= x < 1. Every bit is random.\n// var x = random.quick(); // 0 <= x < 1. 32 bits of randomness.\n\n// alea, a 53-bit multiply-with-carry generator by Johannes Baag\u00F8e.\n// Period: ~2^116\n// Reported to pass all BigCrush tests.\nvar alea = require('./lib/alea');\n\n// xor128, a pure xor-shift generator by George Marsaglia.\n// Period: 2^128-1.\n// Reported to fail: MatrixRank and LinearComp.\nvar xor128 = require('./lib/xor128');\n\n// xorwow, George Marsaglia's 160-bit xor-shift combined plus weyl.\n// Period: 2^192-2^32\n// Reported to fail: CollisionOver, SimpPoker, and LinearComp.\nvar xorwow = require('./lib/xorwow');\n\n// xorshift7, by Fran\u00E7ois Panneton and Pierre L'ecuyer, takes\n// a different approach: it adds robustness by allowing more shifts\n// than Marsaglia's original three. It is a 7-shift generator\n// with 256 bits, that passes BigCrush with no systmatic failures.\n// Period 2^256-1.\n// No systematic BigCrush failures reported.\nvar xorshift7 = require('./lib/xorshift7');\n\n// xor4096, by Richard Brent, is a 4096-bit xor-shift with a\n// very long period that also adds a Weyl generator. It also passes\n// BigCrush with no systematic failures. Its long period may\n// be useful if you have many generators and need to avoid\n// collisions.\n// Period: 2^4128-2^32.\n// No systematic BigCrush failures reported.\nvar xor4096 = require('./lib/xor4096');\n\n// Tyche-i, by Samuel Neves and Filipe Araujo, is a bit-shifting random\n// number generator derived from ChaCha, a modern stream cipher.\n// https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n// Period: ~2^127\n// No systematic BigCrush failures reported.\nvar tychei = require('./lib/tychei');\n\n// The original ARC4-based prng included in this library.\n// Period: ~2^1600\nvar sr = require('./seedrandom');\n\nsr.alea = alea;\nsr.xor128 = xor128;\nsr.xorwow = xorwow;\nsr.xorshift7 = xorshift7;\nsr.xor4096 = xor4096;\nsr.tychei = tychei;\n\nmodule.exports = sr;\n", "", "", "", "\nvar WasmBackendModuleThreadedSimd = (function() {\n var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined;\n if (typeof __filename !== 'undefined') _scriptDir = _scriptDir || __filename;\n return (\nfunction(WasmBackendModuleThreadedSimd) {\n WasmBackendModuleThreadedSimd = WasmBackendModuleThreadedSimd || {};\n\nfunction GROWABLE_HEAP_I8(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAP8}function GROWABLE_HEAP_U8(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAPU8}function GROWABLE_HEAP_I32(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAP32}function GROWABLE_HEAP_U32(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAPU32}function GROWABLE_HEAP_F64(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAPF64}var Module=typeof WasmBackendModuleThreadedSimd!==\"undefined\"?WasmBackendModuleThreadedSimd:{};var readyPromiseResolve,readyPromiseReject;Module[\"ready\"]=new Promise(function(resolve,reject){readyPromiseResolve=resolve;readyPromiseReject=reject});var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var arguments_=[];var thisProgram=\"./this.program\";var quit_=function(status,toThrow){throw toThrow};var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;ENVIRONMENT_IS_WEB=typeof window===\"object\";ENVIRONMENT_IS_WORKER=typeof importScripts===\"function\";ENVIRONMENT_IS_NODE=typeof process===\"object\"&&typeof process.versions===\"object\"&&typeof process.versions.node===\"string\";ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var ENVIRONMENT_IS_PTHREAD=Module[\"ENVIRONMENT_IS_PTHREAD\"]||false;if(ENVIRONMENT_IS_PTHREAD){buffer=Module[\"buffer\"]}var scriptDirectory=\"\";function locateFile(path){if(Module[\"locateFile\"]){return Module[\"locateFile\"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;var nodeFS;var nodePath;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require(\"path\").dirname(scriptDirectory)+\"/\"}else{scriptDirectory=__dirname+\"/\"}read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require(\"fs\");if(!nodePath)nodePath=require(\"path\");filename=nodePath[\"normalize\"](filename);return nodeFS[\"readFileSync\"](filename,binary?null:\"utf8\")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};if(process[\"argv\"].length>1){thisProgram=process[\"argv\"][1].replace(/\\\\/g,\"/\")}arguments_=process[\"argv\"].slice(2);process[\"on\"](\"uncaughtException\",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process[\"on\"](\"unhandledRejection\",abort);quit_=function(status){process[\"exit\"](status)};Module[\"inspect\"]=function(){return\"[Emscripten Module object]\"};var nodeWorkerThreads;try{nodeWorkerThreads=require(\"worker_threads\")}catch(e){console.error('The \"worker_threads\" module is not supported in this node.js build - perhaps a newer version is needed?');throw e}global.Worker=nodeWorkerThreads.Worker}else if(ENVIRONMENT_IS_SHELL){if(typeof read!=\"undefined\"){read_=function shell_read(f){return read(f)}}readBinary=function readBinary(f){var data;if(typeof readbuffer===\"function\"){return new Uint8Array(readbuffer(f))}data=read(f,\"binary\");assert(typeof data===\"object\");return data};if(typeof scriptArgs!=\"undefined\"){arguments_=scriptArgs}else if(typeof arguments!=\"undefined\"){arguments_=arguments}if(typeof quit===\"function\"){quit_=function(status){quit(status)}}if(typeof print!==\"undefined\"){if(typeof console===\"undefined\")console={};console.log=print;console.warn=console.error=typeof printErr!==\"undefined\"?printErr:print}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!==\"undefined\"&&document.currentScript){scriptDirectory=document.currentScript.src}if(typeof _scriptDir !== \"undefined\" && _scriptDir){scriptDirectory=_scriptDir}if(scriptDirectory.indexOf(\"blob:\")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf(\"/\")+1)}else{scriptDirectory=\"\"}if(ENVIRONMENT_IS_NODE){read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require(\"fs\");if(!nodePath)nodePath=require(\"path\");filename=nodePath[\"normalize\"](filename);return nodeFS[\"readFileSync\"](filename,binary?null:\"utf8\")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret}}else{read_=function(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=function(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.responseType=\"arraybuffer\";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=function(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,true);xhr.responseType=\"arraybuffer\";xhr.onload=function(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=function(title){document.title=title}}else{}if(ENVIRONMENT_IS_NODE){if(typeof performance===\"undefined\"){global.performance=require(\"perf_hooks\").performance}}var out=Module[\"print\"]||console.log.bind(console);var err=Module[\"printErr\"]||console.warn.bind(console);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=null;if(Module[\"arguments\"])arguments_=Module[\"arguments\"];if(Module[\"thisProgram\"])thisProgram=Module[\"thisProgram\"];if(Module[\"quit\"])quit_=Module[\"quit\"];var Atomics_load=Atomics.load;var Atomics_store=Atomics.store;var Atomics_compareExchange=Atomics.compareExchange;var wasmBinary;if(Module[\"wasmBinary\"])wasmBinary=Module[\"wasmBinary\"];var noExitRuntime=Module[\"noExitRuntime\"]||true;if(typeof WebAssembly!==\"object\"){abort(\"no native wasm support detected\")}var wasmMemory;var wasmModule;var ABORT=false;var EXITSTATUS;function assert(condition,text){if(!condition){abort(\"Assertion failed: \"+text)}}function getCFunc(ident){var func=Module[\"_\"+ident];assert(func,\"Cannot call unknown function \"+ident+\", make sure it is exported\");return func}function ccall(ident,returnType,argTypes,args,opts){var toC={\"string\":function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){var len=(str.length<<2)+1;ret=stackAlloc(len);stringToUTF8(str,ret,len)}return ret},\"array\":function(arr){var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType===\"string\")return UTF8ToString(ret);if(returnType===\"boolean\")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i=endIdx)){var u0=heap[idx++];if(!u0)return str;if(!(u0&128)){str+=String.fromCharCode(u0);continue}var u1=heap[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}var u2=heap[idx++]&63;if((u0&240)==224){u0=(u0&15)<<12|u1<<6|u2}else{u0=(u0&7)<<18|u1<<12|u2<<6|heap[idx++]&63}if(u0<65536){str+=String.fromCharCode(u0)}else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(GROWABLE_HEAP_U8(),ptr,maxBytesToRead):\"\"}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,GROWABLE_HEAP_U8(),outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}function writeArrayToMemory(array,buffer){GROWABLE_HEAP_I8().set(array,buffer)}function alignUp(x,multiple){if(x%multiple>0){x+=multiple-x%multiple}return x}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module[\"HEAP8\"]=HEAP8=new Int8Array(buf);Module[\"HEAP16\"]=HEAP16=new Int16Array(buf);Module[\"HEAP32\"]=HEAP32=new Int32Array(buf);Module[\"HEAPU8\"]=HEAPU8=new Uint8Array(buf);Module[\"HEAPU16\"]=HEAPU16=new Uint16Array(buf);Module[\"HEAPU32\"]=HEAPU32=new Uint32Array(buf);Module[\"HEAPF32\"]=HEAPF32=new Float32Array(buf);Module[\"HEAPF64\"]=HEAPF64=new Float64Array(buf)}var INITIAL_MEMORY=Module[\"INITIAL_MEMORY\"]||16777216;if(ENVIRONMENT_IS_PTHREAD){wasmMemory=Module[\"wasmMemory\"];buffer=Module[\"buffer\"]}else{if(Module[\"wasmMemory\"]){wasmMemory=Module[\"wasmMemory\"]}else{wasmMemory=new WebAssembly.Memory({\"initial\":INITIAL_MEMORY/65536,\"maximum\":2147483648/65536,\"shared\":true});if(!(wasmMemory.buffer instanceof SharedArrayBuffer)){err(\"requested a shared WebAssembly.Memory but the returned buffer is not a SharedArrayBuffer, indicating that while the browser has SharedArrayBuffer it does not have WebAssembly threads support - you may need to set a flag\");if(ENVIRONMENT_IS_NODE){console.log(\"(on node you may need: --experimental-wasm-threads --experimental-wasm-bulk-memory and also use a recent version)\")}throw Error(\"bad memory\")}}}if(wasmMemory){buffer=wasmMemory.buffer}INITIAL_MEMORY=buffer.byteLength;updateGlobalBufferAndViews(buffer);var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=false;if(!ENVIRONMENT_IS_PTHREAD)__ATINIT__.push({func:function(){___wasm_call_ctors()}});if(ENVIRONMENT_IS_PTHREAD)runtimeInitialized=true;function preRun(){if(ENVIRONMENT_IS_PTHREAD)return;if(Module[\"preRun\"]){if(typeof Module[\"preRun\"]==\"function\")Module[\"preRun\"]=[Module[\"preRun\"]];while(Module[\"preRun\"].length){addOnPreRun(Module[\"preRun\"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function preMain(){if(ENVIRONMENT_IS_PTHREAD)return;callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){if(ENVIRONMENT_IS_PTHREAD)return;runtimeExited=true}function postRun(){if(ENVIRONMENT_IS_PTHREAD)return;if(Module[\"postRun\"]){if(typeof Module[\"postRun\"]==\"function\")Module[\"postRun\"]=[Module[\"postRun\"]];while(Module[\"postRun\"].length){addOnPostRun(Module[\"postRun\"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){assert(!ENVIRONMENT_IS_PTHREAD,\"addRunDependency cannot be used in a pthread worker\");runDependencies++;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module[\"preloadedImages\"]={};Module[\"preloadedAudios\"]={};function abort(what){if(Module[\"onAbort\"]){Module[\"onAbort\"](what)}if(ENVIRONMENT_IS_PTHREAD)console.error(\"Pthread aborting at \"+(new Error).stack);what+=\"\";err(what);ABORT=true;EXITSTATUS=1;what=\"abort(\"+what+\"). Build with -s ASSERTIONS=1 for more info.\";var e=new WebAssembly.RuntimeError(what);readyPromiseReject(e);throw e}function hasPrefix(str,prefix){return String.prototype.startsWith?str.startsWith(prefix):str.indexOf(prefix)===0}var dataURIPrefix=\"data:application/octet-stream;base64,\";function isDataURI(filename){return hasPrefix(filename,dataURIPrefix)}var fileURIPrefix=\"file://\";function isFileURI(filename){return hasPrefix(filename,fileURIPrefix)}var wasmBinaryFile=\"tfjs-backend-wasm-threaded-simd.wasm\";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}else{throw\"both async and sync fetching of the wasm failed\"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch===\"function\"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){if(!response[\"ok\"]){throw\"failed to load wasm binary file at '\"+wasmBinaryFile+\"'\"}return response[\"arrayBuffer\"]()}).catch(function(){return getBinary(wasmBinaryFile)})}else{if(readAsync){return new Promise(function(resolve,reject){readAsync(wasmBinaryFile,function(response){resolve(new Uint8Array(response))},reject)})}}}return Promise.resolve().then(function(){return getBinary(wasmBinaryFile)})}function createWasm(){var info={\"a\":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module[\"asm\"]=exports;wasmTable=Module[\"asm\"][\"F\"];wasmModule=module;if(!ENVIRONMENT_IS_PTHREAD){var numWorkersToLoad=PThread.unusedWorkers.length;PThread.unusedWorkers.forEach(function(w){PThread.loadWasmModuleToWorker(w,function(){if(!--numWorkersToLoad)removeRunDependency(\"wasm-instantiate\")})})}}if(!ENVIRONMENT_IS_PTHREAD){addRunDependency(\"wasm-instantiate\")}function receiveInstantiatedSource(output){receiveInstance(output[\"instance\"],output[\"module\"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err(\"failed to asynchronously prepare wasm: \"+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming===\"function\"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch===\"function\"){return fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err(\"wasm streaming compile failed: \"+reason);err(\"falling back to ArrayBuffer instantiation\");return instantiateArrayBuffer(receiveInstantiatedSource)})})}else{return instantiateArrayBuffer(receiveInstantiatedSource)}}if(Module[\"instantiateWasm\"]){try{var exports=Module[\"instantiateWasm\"](info,receiveInstance);return exports}catch(e){err(\"Module.instantiateWasm callback failed with error: \"+e);return false}}instantiateAsync().catch(readyPromiseReject);return{}}var ASM_CONSTS={8991:function($0,$1){setTimeout(function(){__emscripten_do_dispatch_to_thread($0,$1)},0)}};function initPthreadsJS(){PThread.initRuntime()}function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback==\"function\"){callback(Module);continue}var func=callback.func;if(typeof func===\"number\"){if(callback.arg===undefined){wasmTable.get(func)()}else{wasmTable.get(func)(callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}function _emscripten_futex_wake(addr,count){if(addr<=0||addr>GROWABLE_HEAP_I8().length||addr&3!=0||count<0)return-28;if(count==0)return 0;if(count>=2147483647)count=Infinity;var mainThreadWaitAddress=Atomics.load(GROWABLE_HEAP_I32(),__emscripten_main_thread_futex>>2);var mainThreadWoken=0;if(mainThreadWaitAddress==addr){var loadedAddr=Atomics.compareExchange(GROWABLE_HEAP_I32(),__emscripten_main_thread_futex>>2,mainThreadWaitAddress,0);if(loadedAddr==mainThreadWaitAddress){--count;mainThreadWoken=1;if(count<=0)return 1}}var ret=Atomics.notify(GROWABLE_HEAP_I32(),addr>>2,count);if(ret>=0)return ret+mainThreadWoken;throw\"Atomics.notify returned an unexpected value \"+ret}Module[\"_emscripten_futex_wake\"]=_emscripten_futex_wake;function killThread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! killThread() can only ever be called from main application thread!\";if(!pthread_ptr)throw\"Internal Error! Null pthread_ptr in killThread!\";GROWABLE_HEAP_I32()[pthread_ptr+12>>2]=0;var pthread=PThread.pthreads[pthread_ptr];pthread.worker.terminate();PThread.freeThreadData(pthread);PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(pthread.worker),1);pthread.worker.pthread=undefined}function cancelThread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! cancelThread() can only ever be called from main application thread!\";if(!pthread_ptr)throw\"Internal Error! Null pthread_ptr in cancelThread!\";var pthread=PThread.pthreads[pthread_ptr];pthread.worker.postMessage({\"cmd\":\"cancel\"})}function cleanupThread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! cleanupThread() can only ever be called from main application thread!\";if(!pthread_ptr)throw\"Internal Error! Null pthread_ptr in cleanupThread!\";GROWABLE_HEAP_I32()[pthread_ptr+12>>2]=0;var pthread=PThread.pthreads[pthread_ptr];if(pthread){var worker=pthread.worker;PThread.returnWorkerToPool(worker)}}var PThread={unusedWorkers:[],runningWorkers:[],initMainThreadBlock:function(){var pthreadPoolSize=8;for(var i=0;i>2]=tb;var headPtr=tb+152;GROWABLE_HEAP_I32()[headPtr>>2]=headPtr;var tlsMemory=_malloc(512);for(var i=0;i<128;++i)GROWABLE_HEAP_U32()[tlsMemory/4+i]=0;Atomics.store(GROWABLE_HEAP_U32(),tb+100>>2,tlsMemory);Atomics.store(GROWABLE_HEAP_U32(),tb+40>>2,tb);__emscripten_thread_init(tb,!ENVIRONMENT_IS_WORKER,1);_emscripten_register_main_browser_thread_id(tb)},initWorker:function(){},pthreads:{},threadExitHandlers:[],setThreadStatus:function(){},runExitHandlers:function(){while(PThread.threadExitHandlers.length>0){PThread.threadExitHandlers.pop()()}if(ENVIRONMENT_IS_PTHREAD&&_pthread_self())___pthread_tsd_run_dtors()},threadExit:function(exitCode){var tb=_pthread_self();if(tb){Atomics.store(GROWABLE_HEAP_U32(),tb+4>>2,exitCode);Atomics.store(GROWABLE_HEAP_U32(),tb+0>>2,1);Atomics.store(GROWABLE_HEAP_U32(),tb+56>>2,1);Atomics.store(GROWABLE_HEAP_U32(),tb+60>>2,0);PThread.runExitHandlers();_emscripten_futex_wake(tb+0,2147483647);__emscripten_thread_init(0,0,0);if(ENVIRONMENT_IS_PTHREAD){postMessage({\"cmd\":\"exit\"})}}},threadCancel:function(){PThread.runExitHandlers();var tb=_pthread_self();Atomics.store(GROWABLE_HEAP_U32(),tb+4>>2,-1);Atomics.store(GROWABLE_HEAP_U32(),tb+0>>2,1);_emscripten_futex_wake(tb+0,2147483647);__emscripten_thread_init(0,0,0);postMessage({\"cmd\":\"cancelDone\"})},terminateAllThreads:function(){for(var t in PThread.pthreads){var pthread=PThread.pthreads[t];if(pthread&&pthread.worker){PThread.returnWorkerToPool(pthread.worker)}}PThread.pthreads={};for(var i=0;i>2];GROWABLE_HEAP_I32()[pthread.threadInfoStruct+100>>2]=0;_free(tlsMemory);_free(pthread.threadInfoStruct)}pthread.threadInfoStruct=0;if(pthread.allocatedOwnStack&&pthread.stackBase)_free(pthread.stackBase);pthread.stackBase=0;if(pthread.worker)pthread.worker.pthread=null},returnWorkerToPool:function(worker){PThread.runWithoutMainThreadQueuedCalls(function(){delete PThread.pthreads[worker.pthread.threadInfoStruct];PThread.unusedWorkers.push(worker);PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(worker),1);PThread.freeThreadData(worker.pthread);worker.pthread=undefined})},runWithoutMainThreadQueuedCalls:function(func){GROWABLE_HEAP_I32()[__emscripten_allow_main_runtime_queued_calls>>2]=0;try{func()}finally{GROWABLE_HEAP_I32()[__emscripten_allow_main_runtime_queued_calls>>2]=1}},receiveObjectTransfer:function(data){},loadWasmModuleToWorker:function(worker,onFinishedLoading){worker.onmessage=function(e){var d=e[\"data\"];var cmd=d[\"cmd\"];if(worker.pthread)PThread.currentProxiedOperationCallerThread=worker.pthread.threadInfoStruct;if(d[\"targetThread\"]&&d[\"targetThread\"]!=_pthread_self()){var thread=PThread.pthreads[d.targetThread];if(thread){thread.worker.postMessage(e.data,d[\"transferList\"])}else{console.error('Internal error! Worker sent a message \"'+cmd+'\" to target pthread '+d[\"targetThread\"]+\", but that thread no longer exists!\")}PThread.currentProxiedOperationCallerThread=undefined;return}if(cmd===\"processQueuedMainThreadWork\"){_emscripten_main_thread_process_queued_calls()}else if(cmd===\"spawnThread\"){spawnThread(e.data)}else if(cmd===\"cleanupThread\"){cleanupThread(d[\"thread\"])}else if(cmd===\"killThread\"){killThread(d[\"thread\"])}else if(cmd===\"cancelThread\"){cancelThread(d[\"thread\"])}else if(cmd===\"loaded\"){worker.loaded=true;if(onFinishedLoading)onFinishedLoading(worker);if(worker.runPthread){worker.runPthread();delete worker.runPthread}}else if(cmd===\"print\"){out(\"Thread \"+d[\"threadId\"]+\": \"+d[\"text\"])}else if(cmd===\"printErr\"){err(\"Thread \"+d[\"threadId\"]+\": \"+d[\"text\"])}else if(cmd===\"alert\"){alert(\"Thread \"+d[\"threadId\"]+\": \"+d[\"text\"])}else if(cmd===\"exit\"){var detached=worker.pthread&&Atomics.load(GROWABLE_HEAP_U32(),worker.pthread.threadInfoStruct+64>>2);if(detached){PThread.returnWorkerToPool(worker)}}else if(cmd===\"exitProcess\"){try{exit(d[\"returnCode\"])}catch(e){if(e instanceof ExitStatus)return;throw e}}else if(cmd===\"cancelDone\"){PThread.returnWorkerToPool(worker)}else if(cmd===\"objectTransfer\"){PThread.receiveObjectTransfer(e.data)}else if(e.data.target===\"setimmediate\"){worker.postMessage(e.data)}else{err(\"worker sent an unknown command \"+cmd)}PThread.currentProxiedOperationCallerThread=undefined};worker.onerror=function(e){err(\"pthread sent an error! \"+e.filename+\":\"+e.lineno+\": \"+e.message)};if(ENVIRONMENT_IS_NODE){worker.on(\"message\",function(data){worker.onmessage({data:data})});worker.on(\"error\",function(data){worker.onerror(data)});worker.on(\"exit\",function(data){})}worker.postMessage({\"cmd\":\"load\",\"urlOrBlob\":Module[\"mainScriptUrlOrBlob\"]||_scriptDir,\"wasmMemory\":wasmMemory,\"wasmModule\":wasmModule})},allocateUnusedWorker:function(){var pthreadMainJs=locateFile(\"tfjs-backend-wasm-threaded-simd.worker.js\");PThread.unusedWorkers.push(new Worker(pthreadMainJs))},getNewWorker:function(){if(PThread.unusedWorkers.length==0){PThread.allocateUnusedWorker();PThread.loadWasmModuleToWorker(PThread.unusedWorkers[0])}if(PThread.unusedWorkers.length>0)return PThread.unusedWorkers.pop();else return null},busySpinWait:function(msecs){var t=performance.now()+msecs;while(performance.now()>2]=value;return value}function _atexit(func,arg){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(1,1,func,arg)}function __emscripten_notify_thread_queue(targetThreadId,mainThreadId){if(targetThreadId==mainThreadId){postMessage({\"cmd\":\"processQueuedMainThreadWork\"})}else if(ENVIRONMENT_IS_PTHREAD){postMessage({\"targetThread\":targetThreadId,\"cmd\":\"processThreadQueue\"})}else{var pthread=PThread.pthreads[targetThreadId];var worker=pthread&&pthread.worker;if(!worker){return}worker.postMessage({\"cmd\":\"processThreadQueue\"})}return 1}function _abort(){abort()}function _emscripten_asm_const_int(code,sigPtr,argbuf){var args=readAsmConstArgs(sigPtr,argbuf);return ASM_CONSTS[code].apply(null,args)}function _emscripten_conditional_set_current_thread_status(expectedStatus,newStatus){}function _emscripten_futex_wait(addr,val,timeout){if(addr<=0||addr>GROWABLE_HEAP_I8().length||addr&3!=0)return-28;if(!ENVIRONMENT_IS_WEB){var ret=Atomics.wait(GROWABLE_HEAP_I32(),addr>>2,val,timeout);if(ret===\"timed-out\")return-73;if(ret===\"not-equal\")return-6;if(ret===\"ok\")return 0;throw\"Atomics.wait returned an unexpected value \"+ret}else{if(Atomics.load(GROWABLE_HEAP_I32(),addr>>2)!=val){return-6}var tNow=performance.now();var tEnd=tNow+timeout;var lastAddr=Atomics.exchange(GROWABLE_HEAP_I32(),__emscripten_main_thread_futex>>2,addr);while(1){tNow=performance.now();if(tNow>tEnd){lastAddr=Atomics.exchange(GROWABLE_HEAP_I32(),__emscripten_main_thread_futex>>2,0);return-73}lastAddr=Atomics.exchange(GROWABLE_HEAP_I32(),__emscripten_main_thread_futex>>2,0);if(lastAddr==0){break}_emscripten_main_thread_process_queued_calls();if(Atomics.load(GROWABLE_HEAP_I32(),addr>>2)!=val){return-6}lastAddr=Atomics.exchange(GROWABLE_HEAP_I32(),__emscripten_main_thread_futex>>2,addr)}return 0}}function _emscripten_memcpy_big(dest,src,num){GROWABLE_HEAP_U8().copyWithin(dest,src,src+num)}function _emscripten_num_logical_cores(){if(ENVIRONMENT_IS_NODE)return require(\"os\").cpus().length;return navigator[\"hardwareConcurrency\"]}function _emscripten_proxy_to_main_thread_js(index,sync){var numCallArgs=arguments.length-2;var stack=stackSave();var serializedNumCallArgs=numCallArgs;var args=stackAlloc(serializedNumCallArgs*8);var b=args>>3;for(var i=0;i>=2;while(ch=GROWABLE_HEAP_U8()[sigPtr++]){var double=ch<105;if(double&&buf&1)buf++;readAsmConstArgsArray.push(double?GROWABLE_HEAP_F64()[buf++>>1]:GROWABLE_HEAP_I32()[buf]);++buf}return readAsmConstArgsArray}function _emscripten_receive_on_main_thread_js(index,numCallArgs,args){_emscripten_receive_on_main_thread_js_callArgs.length=numCallArgs;var b=args>>3;for(var i=0;i>>16);updateGlobalBufferAndViews(wasmMemory.buffer);return 1}catch(e){}}function _emscripten_resize_heap(requestedSize){var oldSize=_emscripten_get_heap_size();if(requestedSize<=oldSize){return false}var maxHeapSize=2147483648;if(requestedSize>maxHeapSize){return false}for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=emscripten_realloc_buffer(newSize);if(replacement){return true}}return false}var JSEvents={inEventHandler:0,removeAllEventListeners:function(){for(var i=JSEvents.eventHandlers.length-1;i>=0;--i){JSEvents._removeHandler(i)}JSEvents.eventHandlers=[];JSEvents.deferredCalls=[]},registerRemoveEventListeners:function(){if(!JSEvents.removeEventListenersRegistered){__ATEXIT__.push(JSEvents.removeAllEventListeners);JSEvents.removeEventListenersRegistered=true}},deferredCalls:[],deferCall:function(targetFunction,precedence,argsList){function arraysHaveEqualContent(arrA,arrB){if(arrA.length!=arrB.length)return false;for(var i in arrA){if(arrA[i]!=arrB[i])return false}return true}for(var i in JSEvents.deferredCalls){var call=JSEvents.deferredCalls[i];if(call.targetFunction==targetFunction&&arraysHaveEqualContent(call.argsList,argsList)){return}}JSEvents.deferredCalls.push({targetFunction:targetFunction,precedence:precedence,argsList:argsList});JSEvents.deferredCalls.sort(function(x,y){return x.precedence>2]=eventTypeId;GROWABLE_HEAP_I32()[varargs+4>>2]=eventData;GROWABLE_HEAP_I32()[varargs+8>>2]=userData;__emscripten_call_on_thread(0,targetThread,637534208,eventHandlerFunc,eventData,varargs);stackRestore(stackTop)},getTargetThreadForEventCallback:function(targetThread){switch(targetThread){case 1:return 0;case 2:return PThread.currentProxiedOperationCallerThread;default:return targetThread}},getNodeNameForTarget:function(target){if(!target)return\"\";if(target==window)return\"#window\";if(target==screen)return\"#screen\";return target&&target.nodeName?target.nodeName:\"\"},fullscreenEnabled:function(){return document.fullscreenEnabled||document.webkitFullscreenEnabled}};function stringToNewUTF8(jsString){var length=lengthBytesUTF8(jsString)+1;var cString=_malloc(length);stringToUTF8(jsString,cString,length);return cString}function _emscripten_set_offscreencanvas_size_on_target_thread_js(targetThread,targetCanvas,width,height){var stackTop=stackSave();var varargs=stackAlloc(12);var targetCanvasPtr=0;if(targetCanvas){targetCanvasPtr=stringToNewUTF8(targetCanvas)}GROWABLE_HEAP_I32()[varargs>>2]=targetCanvasPtr;GROWABLE_HEAP_I32()[varargs+4>>2]=width;GROWABLE_HEAP_I32()[varargs+8>>2]=height;__emscripten_call_on_thread(0,targetThread,657457152,0,targetCanvasPtr,varargs);stackRestore(stackTop)}function _emscripten_set_offscreencanvas_size_on_target_thread(targetThread,targetCanvas,width,height){targetCanvas=targetCanvas?UTF8ToString(targetCanvas):\"\";_emscripten_set_offscreencanvas_size_on_target_thread_js(targetThread,targetCanvas,width,height)}function maybeCStringToJsString(cString){return cString>2?UTF8ToString(cString):cString}var specialHTMLTargets=[0,typeof document!==\"undefined\"?document:0,typeof window!==\"undefined\"?window:0];function findEventTarget(target){target=maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||(typeof document!==\"undefined\"?document.querySelector(target):undefined);return domElement}function findCanvasEventTarget(target){return findEventTarget(target)}function _emscripten_set_canvas_element_size_calling_thread(target,width,height){var canvas=findCanvasEventTarget(target);if(!canvas)return-4;if(canvas.canvasSharedPtr){GROWABLE_HEAP_I32()[canvas.canvasSharedPtr>>2]=width;GROWABLE_HEAP_I32()[canvas.canvasSharedPtr+4>>2]=height}if(canvas.offscreenCanvas||!canvas.controlTransferredOffscreen){if(canvas.offscreenCanvas)canvas=canvas.offscreenCanvas;var autoResizeViewport=false;if(canvas.GLctxObject&&canvas.GLctxObject.GLctx){var prevViewport=canvas.GLctxObject.GLctx.getParameter(2978);autoResizeViewport=prevViewport[0]===0&&prevViewport[1]===0&&prevViewport[2]===canvas.width&&prevViewport[3]===canvas.height}canvas.width=width;canvas.height=height;if(autoResizeViewport){canvas.GLctxObject.GLctx.viewport(0,0,width,height)}}else if(canvas.canvasSharedPtr){var targetThread=GROWABLE_HEAP_I32()[canvas.canvasSharedPtr+8>>2];_emscripten_set_offscreencanvas_size_on_target_thread(targetThread,target,width,height);return 1}else{return-4}return 0}function _emscripten_set_canvas_element_size_main_thread(target,width,height){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(2,1,target,width,height);return _emscripten_set_canvas_element_size_calling_thread(target,width,height)}function _emscripten_set_canvas_element_size(target,width,height){var canvas=findCanvasEventTarget(target);if(canvas){return _emscripten_set_canvas_element_size_calling_thread(target,width,height)}else{return _emscripten_set_canvas_element_size_main_thread(target,width,height)}}function _emscripten_set_current_thread_status(newStatus){}function _emscripten_set_thread_name(threadId,name){}function __webgl_enable_ANGLE_instanced_arrays(ctx){var ext=ctx.getExtension(\"ANGLE_instanced_arrays\");if(ext){ctx[\"vertexAttribDivisor\"]=function(index,divisor){ext[\"vertexAttribDivisorANGLE\"](index,divisor)};ctx[\"drawArraysInstanced\"]=function(mode,first,count,primcount){ext[\"drawArraysInstancedANGLE\"](mode,first,count,primcount)};ctx[\"drawElementsInstanced\"]=function(mode,count,type,indices,primcount){ext[\"drawElementsInstancedANGLE\"](mode,count,type,indices,primcount)};return 1}}function __webgl_enable_OES_vertex_array_object(ctx){var ext=ctx.getExtension(\"OES_vertex_array_object\");if(ext){ctx[\"createVertexArray\"]=function(){return ext[\"createVertexArrayOES\"]()};ctx[\"deleteVertexArray\"]=function(vao){ext[\"deleteVertexArrayOES\"](vao)};ctx[\"bindVertexArray\"]=function(vao){ext[\"bindVertexArrayOES\"](vao)};ctx[\"isVertexArray\"]=function(vao){return ext[\"isVertexArrayOES\"](vao)};return 1}}function __webgl_enable_WEBGL_draw_buffers(ctx){var ext=ctx.getExtension(\"WEBGL_draw_buffers\");if(ext){ctx[\"drawBuffers\"]=function(n,bufs){ext[\"drawBuffersWEBGL\"](n,bufs)};return 1}}function __webgl_enable_WEBGL_multi_draw(ctx){return!!(ctx.multiDrawWebgl=ctx.getExtension(\"WEBGL_multi_draw\"))}var GL={counter:1,buffers:[],programs:[],framebuffers:[],renderbuffers:[],textures:[],uniforms:[],shaders:[],vaos:[],contexts:{},offscreenCanvases:{},timerQueriesEXT:[],programInfos:{},stringCache:{},unpackAlignment:4,recordError:function recordError(errorCode){if(!GL.lastError){GL.lastError=errorCode}},getNewId:function(table){var ret=GL.counter++;for(var i=table.length;i>2]:-1;source+=UTF8ToString(GROWABLE_HEAP_I32()[string+i*4>>2],len<0?undefined:len)}return source},createContext:function(canvas,webGLContextAttributes){var ctx=canvas.getContext(\"webgl\",webGLContextAttributes);if(!ctx)return 0;var handle=GL.registerContext(ctx,webGLContextAttributes);return handle},registerContext:function(ctx,webGLContextAttributes){var handle=_malloc(8);GROWABLE_HEAP_I32()[handle+4>>2]=_pthread_self();var context={handle:handle,attributes:webGLContextAttributes,version:webGLContextAttributes.majorVersion,GLctx:ctx};if(ctx.canvas)ctx.canvas.GLctxObject=context;GL.contexts[handle]=context;if(typeof webGLContextAttributes.enableExtensionsByDefault===\"undefined\"||webGLContextAttributes.enableExtensionsByDefault){GL.initExtensions(context)}return handle},makeContextCurrent:function(contextHandle){GL.currentContext=GL.contexts[contextHandle];Module.ctx=GLctx=GL.currentContext&&GL.currentContext.GLctx;return!(contextHandle&&!GLctx)},getContext:function(contextHandle){return GL.contexts[contextHandle]},deleteContext:function(contextHandle){if(GL.currentContext===GL.contexts[contextHandle])GL.currentContext=null;if(typeof JSEvents===\"object\")JSEvents.removeAllHandlersOnTarget(GL.contexts[contextHandle].GLctx.canvas);if(GL.contexts[contextHandle]&&GL.contexts[contextHandle].GLctx.canvas)GL.contexts[contextHandle].GLctx.canvas.GLctxObject=undefined;_free(GL.contexts[contextHandle].handle);GL.contexts[contextHandle]=null},initExtensions:function(context){if(!context)context=GL.currentContext;if(context.initExtensionsDone)return;context.initExtensionsDone=true;var GLctx=context.GLctx;__webgl_enable_ANGLE_instanced_arrays(GLctx);__webgl_enable_OES_vertex_array_object(GLctx);__webgl_enable_WEBGL_draw_buffers(GLctx);GLctx.disjointTimerQueryExt=GLctx.getExtension(\"EXT_disjoint_timer_query\");__webgl_enable_WEBGL_multi_draw(GLctx);var exts=GLctx.getSupportedExtensions()||[];exts.forEach(function(ext){if(ext.indexOf(\"lose_context\")<0&&ext.indexOf(\"debug\")<0){GLctx.getExtension(ext)}})},populateUniformTable:function(program){var p=GL.programs[program];var ptable=GL.programInfos[program]={uniforms:{},maxUniformLength:0,maxAttributeLength:-1,maxUniformBlockNameLength:-1};var utable=ptable.uniforms;var numUniforms=GLctx.getProgramParameter(p,35718);for(var i=0;i>2;var powerPreference=GROWABLE_HEAP_I32()[a+(24>>2)];var contextAttributes={\"alpha\":!!GROWABLE_HEAP_I32()[a+(0>>2)],\"depth\":!!GROWABLE_HEAP_I32()[a+(4>>2)],\"stencil\":!!GROWABLE_HEAP_I32()[a+(8>>2)],\"antialias\":!!GROWABLE_HEAP_I32()[a+(12>>2)],\"premultipliedAlpha\":!!GROWABLE_HEAP_I32()[a+(16>>2)],\"preserveDrawingBuffer\":!!GROWABLE_HEAP_I32()[a+(20>>2)],\"powerPreference\":__emscripten_webgl_power_preferences[powerPreference],\"failIfMajorPerformanceCaveat\":!!GROWABLE_HEAP_I32()[a+(28>>2)],majorVersion:GROWABLE_HEAP_I32()[a+(32>>2)],minorVersion:GROWABLE_HEAP_I32()[a+(36>>2)],enableExtensionsByDefault:GROWABLE_HEAP_I32()[a+(40>>2)],explicitSwapControl:GROWABLE_HEAP_I32()[a+(44>>2)],proxyContextToMainThread:GROWABLE_HEAP_I32()[a+(48>>2)],renderViaOffscreenBackBuffer:GROWABLE_HEAP_I32()[a+(52>>2)]};var canvas=findCanvasEventTarget(target);if(!canvas){return 0}if(contextAttributes.explicitSwapControl){return 0}var contextHandle=GL.createContext(canvas,contextAttributes);return contextHandle}function _emscripten_webgl_create_context(a0,a1){return _emscripten_webgl_do_create_context(a0,a1)}var SYSCALLS={mappings:{},buffers:[null,[],[]],printChar:function(stream,curr){var buffer=SYSCALLS.buffers[stream];if(curr===0||curr===10){(stream===1?out:err)(UTF8ArrayToString(buffer,0));buffer.length=0}else{buffer.push(curr)}},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=GROWABLE_HEAP_I32()[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},get64:function(low,high){return low}};function _fd_close(fd){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(3,1,fd);return 0}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(4,1,fd,offset_low,offset_high,whence,newOffset)}function _fd_write(fd,iov,iovcnt,pnum){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(5,1,fd,iov,iovcnt,pnum);var num=0;for(var i=0;i>2];var len=GROWABLE_HEAP_I32()[iov+(i*8+4)>>2];for(var j=0;j>2]=num;return 0}function _pthread_cleanup_pop(execute){var routine=PThread.threadExitHandlers.pop();if(execute)routine()}function _pthread_cleanup_push(routine,arg){PThread.threadExitHandlers.push(function(){wasmTable.get(routine)(arg)})}function spawnThread(threadParams){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! spawnThread() can only ever be called from main application thread!\";var worker=PThread.getNewWorker();if(worker.pthread!==undefined)throw\"Internal error!\";if(!threadParams.pthread_ptr)throw\"Internal error, no pthread ptr!\";PThread.runningWorkers.push(worker);var tlsMemory=_malloc(128*4);for(var i=0;i<128;++i){GROWABLE_HEAP_I32()[tlsMemory+i*4>>2]=0}var stackHigh=threadParams.stackBase+threadParams.stackSize;var pthread=PThread.pthreads[threadParams.pthread_ptr]={worker:worker,stackBase:threadParams.stackBase,stackSize:threadParams.stackSize,allocatedOwnStack:threadParams.allocatedOwnStack,threadInfoStruct:threadParams.pthread_ptr};var tis=pthread.threadInfoStruct>>2;Atomics.store(GROWABLE_HEAP_U32(),tis+(64>>2),threadParams.detached);Atomics.store(GROWABLE_HEAP_U32(),tis+(100>>2),tlsMemory);Atomics.store(GROWABLE_HEAP_U32(),tis+(40>>2),pthread.threadInfoStruct);Atomics.store(GROWABLE_HEAP_U32(),tis+(80>>2),threadParams.stackSize);Atomics.store(GROWABLE_HEAP_U32(),tis+(76>>2),stackHigh);Atomics.store(GROWABLE_HEAP_U32(),tis+(104>>2),threadParams.stackSize);Atomics.store(GROWABLE_HEAP_U32(),tis+(104+8>>2),stackHigh);Atomics.store(GROWABLE_HEAP_U32(),tis+(104+12>>2),threadParams.detached);var global_libc=_emscripten_get_global_libc();var global_locale=global_libc+40;Atomics.store(GROWABLE_HEAP_U32(),tis+(172>>2),global_locale);worker.pthread=pthread;var msg={\"cmd\":\"run\",\"start_routine\":threadParams.startRoutine,\"arg\":threadParams.arg,\"threadInfoStruct\":threadParams.pthread_ptr,\"stackBase\":threadParams.stackBase,\"stackSize\":threadParams.stackSize};worker.runPthread=function(){msg.time=performance.now();worker.postMessage(msg,threadParams.transferList)};if(worker.loaded){worker.runPthread();delete worker.runPthread}}function _pthread_create(pthread_ptr,attr,start_routine,arg){if(typeof SharedArrayBuffer===\"undefined\"){err(\"Current environment does not support SharedArrayBuffer, pthreads are not available!\");return 6}if(!pthread_ptr){err(\"pthread_create called with a null thread pointer!\");return 28}var transferList=[];var error=0;if(ENVIRONMENT_IS_PTHREAD&&(transferList.length===0||error)){return _emscripten_sync_run_in_main_thread_4(687865856,pthread_ptr,attr,start_routine,arg)}if(error)return error;var stackSize=0;var stackBase=0;var detached=0;if(attr&&attr!=-1){stackSize=GROWABLE_HEAP_I32()[attr>>2];stackSize+=81920;stackBase=GROWABLE_HEAP_I32()[attr+8>>2];detached=GROWABLE_HEAP_I32()[attr+12>>2]!==0}else{stackSize=2097152}var allocatedOwnStack=stackBase==0;if(allocatedOwnStack){stackBase=_memalign(16,stackSize)}else{stackBase-=stackSize;assert(stackBase>0)}var threadInfoStruct=_malloc(228);for(var i=0;i<228>>2;++i)GROWABLE_HEAP_U32()[(threadInfoStruct>>2)+i]=0;GROWABLE_HEAP_I32()[pthread_ptr>>2]=threadInfoStruct;GROWABLE_HEAP_I32()[threadInfoStruct+12>>2]=threadInfoStruct;var headPtr=threadInfoStruct+152;GROWABLE_HEAP_I32()[headPtr>>2]=headPtr;var threadParams={stackBase:stackBase,stackSize:stackSize,allocatedOwnStack:allocatedOwnStack,detached:detached,startRoutine:start_routine,pthread_ptr:threadInfoStruct,arg:arg,transferList:transferList};if(ENVIRONMENT_IS_PTHREAD){threadParams.cmd=\"spawnThread\";postMessage(threadParams,transferList)}else{spawnThread(threadParams)}return 0}function _sysconf(name){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(6,1,name);switch(name){case 30:return 16384;case 85:var maxHeapSize=2147483648;return maxHeapSize/16384;case 132:case 133:case 12:case 137:case 138:case 15:case 235:case 16:case 17:case 18:case 19:case 20:case 149:case 13:case 10:case 236:case 153:case 9:case 21:case 22:case 159:case 154:case 14:case 77:case 78:case 139:case 82:case 68:case 67:case 164:case 11:case 29:case 47:case 48:case 95:case 52:case 51:case 46:return 200809;case 27:case 246:case 127:case 128:case 23:case 24:case 160:case 161:case 181:case 182:case 242:case 183:case 184:case 243:case 244:case 245:case 165:case 178:case 179:case 49:case 50:case 168:case 169:case 175:case 170:case 171:case 172:case 97:case 76:case 32:case 173:case 35:case 80:case 81:case 79:return-1;case 176:case 177:case 7:case 155:case 8:case 157:case 125:case 126:case 92:case 93:case 129:case 130:case 131:case 94:case 91:return 1;case 74:case 60:case 69:case 70:case 4:return 1024;case 31:case 42:case 72:return 32;case 87:case 26:case 33:return 2147483647;case 34:case 1:return 47839;case 38:case 36:return 99;case 43:case 37:return 2048;case 0:return 2097152;case 3:return 65536;case 28:return 32768;case 44:return 32767;case 75:return 16384;case 39:return 1e3;case 89:return 700;case 71:return 256;case 40:return 255;case 2:return 100;case 180:return 64;case 25:return 20;case 5:return 16;case 6:return 6;case 73:return 4;case 84:{if(typeof navigator===\"object\")return navigator[\"hardwareConcurrency\"]||1;return 1}}setErrNo(28);return-1}if(!ENVIRONMENT_IS_PTHREAD)PThread.initMainThreadBlock();var GLctx;var proxiedFunctionTable=[null,_atexit,_emscripten_set_canvas_element_size_main_thread,_fd_close,_fd_seek,_fd_write,_sysconf];var asmLibraryArg={\"e\":___assert_fail,\"r\":___call_main,\"x\":__emscripten_notify_thread_queue,\"b\":_abort,\"y\":_emscripten_asm_const_int,\"j\":_emscripten_conditional_set_current_thread_status,\"c\":_emscripten_futex_wait,\"d\":_emscripten_futex_wake,\"f\":_emscripten_get_now,\"p\":_emscripten_memcpy_big,\"z\":_emscripten_num_logical_cores,\"u\":_emscripten_receive_on_main_thread_js,\"q\":_emscripten_resize_heap,\"v\":_emscripten_set_canvas_element_size,\"i\":_emscripten_set_current_thread_status,\"t\":_emscripten_set_thread_name,\"w\":_emscripten_webgl_create_context,\"m\":_fd_close,\"n\":_fd_seek,\"g\":_fd_write,\"o\":initPthreadsJS,\"a\":wasmMemory||Module[\"wasmMemory\"],\"k\":_pthread_cleanup_pop,\"l\":_pthread_cleanup_push,\"h\":_pthread_create,\"s\":_sysconf};var asm=createWasm();var ___wasm_call_ctors=Module[\"___wasm_call_ctors\"]=function(){return(___wasm_call_ctors=Module[\"___wasm_call_ctors\"]=Module[\"asm\"][\"A\"]).apply(null,arguments)};var _init=Module[\"_init\"]=function(){return(_init=Module[\"_init\"]=Module[\"asm\"][\"B\"]).apply(null,arguments)};var _register_tensor=Module[\"_register_tensor\"]=function(){return(_register_tensor=Module[\"_register_tensor\"]=Module[\"asm\"][\"C\"]).apply(null,arguments)};var _dispose_data=Module[\"_dispose_data\"]=function(){return(_dispose_data=Module[\"_dispose_data\"]=Module[\"asm\"][\"D\"]).apply(null,arguments)};var _dispose=Module[\"_dispose\"]=function(){return(_dispose=Module[\"_dispose\"]=Module[\"asm\"][\"E\"]).apply(null,arguments)};var _Abs=Module[\"_Abs\"]=function(){return(_Abs=Module[\"_Abs\"]=Module[\"asm\"][\"G\"]).apply(null,arguments)};var _Add=Module[\"_Add\"]=function(){return(_Add=Module[\"_Add\"]=Module[\"asm\"][\"H\"]).apply(null,arguments)};var _AddN=Module[\"_AddN\"]=function(){return(_AddN=Module[\"_AddN\"]=Module[\"asm\"][\"I\"]).apply(null,arguments)};var _ArgMax=Module[\"_ArgMax\"]=function(){return(_ArgMax=Module[\"_ArgMax\"]=Module[\"asm\"][\"J\"]).apply(null,arguments)};var _AvgPool=Module[\"_AvgPool\"]=function(){return(_AvgPool=Module[\"_AvgPool\"]=Module[\"asm\"][\"K\"]).apply(null,arguments)};var _BatchMatMul=Module[\"_BatchMatMul\"]=function(){return(_BatchMatMul=Module[\"_BatchMatMul\"]=Module[\"asm\"][\"L\"]).apply(null,arguments)};var _Ceil=Module[\"_Ceil\"]=function(){return(_Ceil=Module[\"_Ceil\"]=Module[\"asm\"][\"M\"]).apply(null,arguments)};var _ClipByValue=Module[\"_ClipByValue\"]=function(){return(_ClipByValue=Module[\"_ClipByValue\"]=Module[\"asm\"][\"N\"]).apply(null,arguments)};var _Conv2D=Module[\"_Conv2D\"]=function(){return(_Conv2D=Module[\"_Conv2D\"]=Module[\"asm\"][\"O\"]).apply(null,arguments)};var _Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=function(){return(_Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=Module[\"asm\"][\"P\"]).apply(null,arguments)};var _Cos=Module[\"_Cos\"]=function(){return(_Cos=Module[\"_Cos\"]=Module[\"asm\"][\"Q\"]).apply(null,arguments)};var _CropAndResize=Module[\"_CropAndResize\"]=function(){return(_CropAndResize=Module[\"_CropAndResize\"]=Module[\"asm\"][\"R\"]).apply(null,arguments)};var _Cumsum=Module[\"_Cumsum\"]=function(){return(_Cumsum=Module[\"_Cumsum\"]=Module[\"asm\"][\"S\"]).apply(null,arguments)};var _DepthToSpace=Module[\"_DepthToSpace\"]=function(){return(_DepthToSpace=Module[\"_DepthToSpace\"]=Module[\"asm\"][\"T\"]).apply(null,arguments)};var _DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=function(){return(_DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=Module[\"asm\"][\"U\"]).apply(null,arguments)};var _Equal=Module[\"_Equal\"]=function(){return(_Equal=Module[\"_Equal\"]=Module[\"asm\"][\"V\"]).apply(null,arguments)};var _Exp=Module[\"_Exp\"]=function(){return(_Exp=Module[\"_Exp\"]=Module[\"asm\"][\"W\"]).apply(null,arguments)};var _FlipLeftRight=Module[\"_FlipLeftRight\"]=function(){return(_FlipLeftRight=Module[\"_FlipLeftRight\"]=Module[\"asm\"][\"X\"]).apply(null,arguments)};var _Floor=Module[\"_Floor\"]=function(){return(_Floor=Module[\"_Floor\"]=Module[\"asm\"][\"Y\"]).apply(null,arguments)};var _FloorDiv=Module[\"_FloorDiv\"]=function(){return(_FloorDiv=Module[\"_FloorDiv\"]=Module[\"asm\"][\"Z\"]).apply(null,arguments)};var _FusedBatchNorm=Module[\"_FusedBatchNorm\"]=function(){return(_FusedBatchNorm=Module[\"_FusedBatchNorm\"]=Module[\"asm\"][\"_\"]).apply(null,arguments)};var _FusedConv2D=Module[\"_FusedConv2D\"]=function(){return(_FusedConv2D=Module[\"_FusedConv2D\"]=Module[\"asm\"][\"$\"]).apply(null,arguments)};var _FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=function(){return(_FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=Module[\"asm\"][\"aa\"]).apply(null,arguments)};var _Gather=Module[\"_Gather\"]=function(){return(_Gather=Module[\"_Gather\"]=Module[\"asm\"][\"ba\"]).apply(null,arguments)};var _GatherNd=Module[\"_GatherNd\"]=function(){return(_GatherNd=Module[\"_GatherNd\"]=Module[\"asm\"][\"ca\"]).apply(null,arguments)};var _Greater=Module[\"_Greater\"]=function(){return(_Greater=Module[\"_Greater\"]=Module[\"asm\"][\"da\"]).apply(null,arguments)};var _GreaterEqual=Module[\"_GreaterEqual\"]=function(){return(_GreaterEqual=Module[\"_GreaterEqual\"]=Module[\"asm\"][\"ea\"]).apply(null,arguments)};var _LeakyRelu=Module[\"_LeakyRelu\"]=function(){return(_LeakyRelu=Module[\"_LeakyRelu\"]=Module[\"asm\"][\"fa\"]).apply(null,arguments)};var _Less=Module[\"_Less\"]=function(){return(_Less=Module[\"_Less\"]=Module[\"asm\"][\"ga\"]).apply(null,arguments)};var _LessEqual=Module[\"_LessEqual\"]=function(){return(_LessEqual=Module[\"_LessEqual\"]=Module[\"asm\"][\"ha\"]).apply(null,arguments)};var _Log=Module[\"_Log\"]=function(){return(_Log=Module[\"_Log\"]=Module[\"asm\"][\"ia\"]).apply(null,arguments)};var _LogicalAnd=Module[\"_LogicalAnd\"]=function(){return(_LogicalAnd=Module[\"_LogicalAnd\"]=Module[\"asm\"][\"ja\"]).apply(null,arguments)};var _Max=Module[\"_Max\"]=function(){return(_Max=Module[\"_Max\"]=Module[\"asm\"][\"ka\"]).apply(null,arguments)};var _MaxPool=Module[\"_MaxPool\"]=function(){return(_MaxPool=Module[\"_MaxPool\"]=Module[\"asm\"][\"la\"]).apply(null,arguments)};var _Maximum=Module[\"_Maximum\"]=function(){return(_Maximum=Module[\"_Maximum\"]=Module[\"asm\"][\"ma\"]).apply(null,arguments)};var _Mean=Module[\"_Mean\"]=function(){return(_Mean=Module[\"_Mean\"]=Module[\"asm\"][\"na\"]).apply(null,arguments)};var _Min=Module[\"_Min\"]=function(){return(_Min=Module[\"_Min\"]=Module[\"asm\"][\"oa\"]).apply(null,arguments)};var _Minimum=Module[\"_Minimum\"]=function(){return(_Minimum=Module[\"_Minimum\"]=Module[\"asm\"][\"pa\"]).apply(null,arguments)};var _Multiply=Module[\"_Multiply\"]=function(){return(_Multiply=Module[\"_Multiply\"]=Module[\"asm\"][\"qa\"]).apply(null,arguments)};var _Neg=Module[\"_Neg\"]=function(){return(_Neg=Module[\"_Neg\"]=Module[\"asm\"][\"ra\"]).apply(null,arguments)};var _NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=function(){return(_NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=Module[\"asm\"][\"sa\"]).apply(null,arguments)};var _NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=function(){return(_NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=Module[\"asm\"][\"ta\"]).apply(null,arguments)};var _NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=function(){return(_NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=Module[\"asm\"][\"ua\"]).apply(null,arguments)};var _NotEqual=Module[\"_NotEqual\"]=function(){return(_NotEqual=Module[\"_NotEqual\"]=Module[\"asm\"][\"va\"]).apply(null,arguments)};var _OneHot=Module[\"_OneHot\"]=function(){return(_OneHot=Module[\"_OneHot\"]=Module[\"asm\"][\"wa\"]).apply(null,arguments)};var _PadV2=Module[\"_PadV2\"]=function(){return(_PadV2=Module[\"_PadV2\"]=Module[\"asm\"][\"xa\"]).apply(null,arguments)};var _Pow=Module[\"_Pow\"]=function(){return(_Pow=Module[\"_Pow\"]=Module[\"asm\"][\"ya\"]).apply(null,arguments)};var _Prelu=Module[\"_Prelu\"]=function(){return(_Prelu=Module[\"_Prelu\"]=Module[\"asm\"][\"za\"]).apply(null,arguments)};var _Prod=Module[\"_Prod\"]=function(){return(_Prod=Module[\"_Prod\"]=Module[\"asm\"][\"Aa\"]).apply(null,arguments)};var _RealDiv=Module[\"_RealDiv\"]=function(){return(_RealDiv=Module[\"_RealDiv\"]=Module[\"asm\"][\"Ba\"]).apply(null,arguments)};var _Relu=Module[\"_Relu\"]=function(){return(_Relu=Module[\"_Relu\"]=Module[\"asm\"][\"Ca\"]).apply(null,arguments)};var _Relu6=Module[\"_Relu6\"]=function(){return(_Relu6=Module[\"_Relu6\"]=Module[\"asm\"][\"Da\"]).apply(null,arguments)};var _ResizeBilinear=Module[\"_ResizeBilinear\"]=function(){return(_ResizeBilinear=Module[\"_ResizeBilinear\"]=Module[\"asm\"][\"Ea\"]).apply(null,arguments)};var _Reverse=Module[\"_Reverse\"]=function(){return(_Reverse=Module[\"_Reverse\"]=Module[\"asm\"][\"Fa\"]).apply(null,arguments)};var _RotateWithOffset=Module[\"_RotateWithOffset\"]=function(){return(_RotateWithOffset=Module[\"_RotateWithOffset\"]=Module[\"asm\"][\"Ga\"]).apply(null,arguments)};var _Round=Module[\"_Round\"]=function(){return(_Round=Module[\"_Round\"]=Module[\"asm\"][\"Ha\"]).apply(null,arguments)};var _Rsqrt=Module[\"_Rsqrt\"]=function(){return(_Rsqrt=Module[\"_Rsqrt\"]=Module[\"asm\"][\"Ia\"]).apply(null,arguments)};var _ScatterNd=Module[\"_ScatterNd\"]=function(){return(_ScatterNd=Module[\"_ScatterNd\"]=Module[\"asm\"][\"Ja\"]).apply(null,arguments)};var _SelectV2=Module[\"_SelectV2\"]=function(){return(_SelectV2=Module[\"_SelectV2\"]=Module[\"asm\"][\"Ka\"]).apply(null,arguments)};var _Sigmoid=Module[\"_Sigmoid\"]=function(){return(_Sigmoid=Module[\"_Sigmoid\"]=Module[\"asm\"][\"La\"]).apply(null,arguments)};var _Sin=Module[\"_Sin\"]=function(){return(_Sin=Module[\"_Sin\"]=Module[\"asm\"][\"Ma\"]).apply(null,arguments)};var _Softmax=Module[\"_Softmax\"]=function(){return(_Softmax=Module[\"_Softmax\"]=Module[\"asm\"][\"Na\"]).apply(null,arguments)};var _Sqrt=Module[\"_Sqrt\"]=function(){return(_Sqrt=Module[\"_Sqrt\"]=Module[\"asm\"][\"Oa\"]).apply(null,arguments)};var _Square=Module[\"_Square\"]=function(){return(_Square=Module[\"_Square\"]=Module[\"asm\"][\"Pa\"]).apply(null,arguments)};var _SquaredDifference=Module[\"_SquaredDifference\"]=function(){return(_SquaredDifference=Module[\"_SquaredDifference\"]=Module[\"asm\"][\"Qa\"]).apply(null,arguments)};var _Step=Module[\"_Step\"]=function(){return(_Step=Module[\"_Step\"]=Module[\"asm\"][\"Ra\"]).apply(null,arguments)};var _StridedSlice=Module[\"_StridedSlice\"]=function(){return(_StridedSlice=Module[\"_StridedSlice\"]=Module[\"asm\"][\"Sa\"]).apply(null,arguments)};var _Sub=Module[\"_Sub\"]=function(){return(_Sub=Module[\"_Sub\"]=Module[\"asm\"][\"Ta\"]).apply(null,arguments)};var _Sum=Module[\"_Sum\"]=function(){return(_Sum=Module[\"_Sum\"]=Module[\"asm\"][\"Ua\"]).apply(null,arguments)};var _Tanh=Module[\"_Tanh\"]=function(){return(_Tanh=Module[\"_Tanh\"]=Module[\"asm\"][\"Va\"]).apply(null,arguments)};var _Tile=Module[\"_Tile\"]=function(){return(_Tile=Module[\"_Tile\"]=Module[\"asm\"][\"Wa\"]).apply(null,arguments)};var _TopK=Module[\"_TopK\"]=function(){return(_TopK=Module[\"_TopK\"]=Module[\"asm\"][\"Xa\"]).apply(null,arguments)};var _Transpose=Module[\"_Transpose\"]=function(){return(_Transpose=Module[\"_Transpose\"]=Module[\"asm\"][\"Ya\"]).apply(null,arguments)};var __FusedMatMul=Module[\"__FusedMatMul\"]=function(){return(__FusedMatMul=Module[\"__FusedMatMul\"]=Module[\"asm\"][\"Za\"]).apply(null,arguments)};var _malloc=Module[\"_malloc\"]=function(){return(_malloc=Module[\"_malloc\"]=Module[\"asm\"][\"_a\"]).apply(null,arguments)};var _free=Module[\"_free\"]=function(){return(_free=Module[\"_free\"]=Module[\"asm\"][\"$a\"]).apply(null,arguments)};var ___errno_location=Module[\"___errno_location\"]=function(){return(___errno_location=Module[\"___errno_location\"]=Module[\"asm\"][\"ab\"]).apply(null,arguments)};var _emscripten_get_global_libc=Module[\"_emscripten_get_global_libc\"]=function(){return(_emscripten_get_global_libc=Module[\"_emscripten_get_global_libc\"]=Module[\"asm\"][\"bb\"]).apply(null,arguments)};var _pthread_self=Module[\"_pthread_self\"]=function(){return(_pthread_self=Module[\"_pthread_self\"]=Module[\"asm\"][\"cb\"]).apply(null,arguments)};var ___pthread_tsd_run_dtors=Module[\"___pthread_tsd_run_dtors\"]=function(){return(___pthread_tsd_run_dtors=Module[\"___pthread_tsd_run_dtors\"]=Module[\"asm\"][\"db\"]).apply(null,arguments)};var _emscripten_main_thread_process_queued_calls=Module[\"_emscripten_main_thread_process_queued_calls\"]=function(){return(_emscripten_main_thread_process_queued_calls=Module[\"_emscripten_main_thread_process_queued_calls\"]=Module[\"asm\"][\"eb\"]).apply(null,arguments)};var _emscripten_current_thread_process_queued_calls=Module[\"_emscripten_current_thread_process_queued_calls\"]=function(){return(_emscripten_current_thread_process_queued_calls=Module[\"_emscripten_current_thread_process_queued_calls\"]=Module[\"asm\"][\"fb\"]).apply(null,arguments)};var _emscripten_register_main_browser_thread_id=Module[\"_emscripten_register_main_browser_thread_id\"]=function(){return(_emscripten_register_main_browser_thread_id=Module[\"_emscripten_register_main_browser_thread_id\"]=Module[\"asm\"][\"gb\"]).apply(null,arguments)};var __emscripten_do_dispatch_to_thread=Module[\"__emscripten_do_dispatch_to_thread\"]=function(){return(__emscripten_do_dispatch_to_thread=Module[\"__emscripten_do_dispatch_to_thread\"]=Module[\"asm\"][\"hb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_4=Module[\"_emscripten_sync_run_in_main_thread_4\"]=function(){return(_emscripten_sync_run_in_main_thread_4=Module[\"_emscripten_sync_run_in_main_thread_4\"]=Module[\"asm\"][\"ib\"]).apply(null,arguments)};var _emscripten_run_in_main_runtime_thread_js=Module[\"_emscripten_run_in_main_runtime_thread_js\"]=function(){return(_emscripten_run_in_main_runtime_thread_js=Module[\"_emscripten_run_in_main_runtime_thread_js\"]=Module[\"asm\"][\"jb\"]).apply(null,arguments)};var __emscripten_call_on_thread=Module[\"__emscripten_call_on_thread\"]=function(){return(__emscripten_call_on_thread=Module[\"__emscripten_call_on_thread\"]=Module[\"asm\"][\"kb\"]).apply(null,arguments)};var _emscripten_tls_init=Module[\"_emscripten_tls_init\"]=function(){return(_emscripten_tls_init=Module[\"_emscripten_tls_init\"]=Module[\"asm\"][\"lb\"]).apply(null,arguments)};var __emscripten_thread_init=Module[\"__emscripten_thread_init\"]=function(){return(__emscripten_thread_init=Module[\"__emscripten_thread_init\"]=Module[\"asm\"][\"mb\"]).apply(null,arguments)};var stackSave=Module[\"stackSave\"]=function(){return(stackSave=Module[\"stackSave\"]=Module[\"asm\"][\"nb\"]).apply(null,arguments)};var stackRestore=Module[\"stackRestore\"]=function(){return(stackRestore=Module[\"stackRestore\"]=Module[\"asm\"][\"ob\"]).apply(null,arguments)};var stackAlloc=Module[\"stackAlloc\"]=function(){return(stackAlloc=Module[\"stackAlloc\"]=Module[\"asm\"][\"pb\"]).apply(null,arguments)};var _emscripten_stack_set_limits=Module[\"_emscripten_stack_set_limits\"]=function(){return(_emscripten_stack_set_limits=Module[\"_emscripten_stack_set_limits\"]=Module[\"asm\"][\"qb\"]).apply(null,arguments)};var _memalign=Module[\"_memalign\"]=function(){return(_memalign=Module[\"_memalign\"]=Module[\"asm\"][\"rb\"]).apply(null,arguments)};var __emscripten_allow_main_runtime_queued_calls=Module[\"__emscripten_allow_main_runtime_queued_calls\"]=9880;var __emscripten_main_thread_futex=Module[\"__emscripten_main_thread_futex\"]=11368;Module[\"cwrap\"]=cwrap;Module[\"PThread\"]=PThread;Module[\"PThread\"]=PThread;Module[\"wasmMemory\"]=wasmMemory;Module[\"ExitStatus\"]=ExitStatus;var calledRun;function ExitStatus(status){this.name=\"ExitStatus\";this.message=\"Program terminated with exit(\"+status+\")\";this.status=status}dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function run(args){args=args||arguments_;if(runDependencies>0){return}if(ENVIRONMENT_IS_PTHREAD){readyPromiseResolve(Module);postMessage({\"cmd\":\"loaded\"});return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module[\"calledRun\"]=true;if(ABORT)return;initRuntime();preMain();readyPromiseResolve(Module);if(Module[\"onRuntimeInitialized\"])Module[\"onRuntimeInitialized\"]();postRun()}if(Module[\"setStatus\"]){Module[\"setStatus\"](\"Running...\");setTimeout(function(){setTimeout(function(){Module[\"setStatus\"](\"\")},1);doRun()},1)}else{doRun()}}Module[\"run\"]=run;function exit(status,implicit){if(implicit&&noExitRuntime&&status===0){return}if(!implicit){if(ENVIRONMENT_IS_PTHREAD){postMessage({\"cmd\":\"exitProcess\",\"returnCode\":status});throw new ExitStatus(status)}else{}}if(noExitRuntime){}else{PThread.terminateAllThreads();EXITSTATUS=status;exitRuntime();if(Module[\"onExit\"])Module[\"onExit\"](status);ABORT=true}quit_(status,new ExitStatus(status))}if(Module[\"preInit\"]){if(typeof Module[\"preInit\"]==\"function\")Module[\"preInit\"]=[Module[\"preInit\"]];while(Module[\"preInit\"].length>0){Module[\"preInit\"].pop()()}}if(ENVIRONMENT_IS_PTHREAD){noExitRuntime=false;PThread.initWorker()}run();\n\n\n return WasmBackendModuleThreadedSimd.ready\n}\n);\n})();\nif (typeof exports === 'object' && typeof module === 'object')\n module.exports = WasmBackendModuleThreadedSimd;\nelse if (typeof define === 'function' && define['amd'])\n define([], function() { return WasmBackendModuleThreadedSimd; });\nelse if (typeof exports === 'object')\n exports[\"WasmBackendModuleThreadedSimd\"] = WasmBackendModuleThreadedSimd;\n", "\nvar WasmBackendModule = (function() {\n var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined;\n if (typeof __filename !== 'undefined') _scriptDir = _scriptDir || __filename;\n return (\nfunction(WasmBackendModule) {\n WasmBackendModule = WasmBackendModule || {};\n\nvar Module=typeof WasmBackendModule!==\"undefined\"?WasmBackendModule:{};var readyPromiseResolve,readyPromiseReject;Module[\"ready\"]=new Promise(function(resolve,reject){readyPromiseResolve=resolve;readyPromiseReject=reject});var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var arguments_=[];var thisProgram=\"./this.program\";var quit_=function(status,toThrow){throw toThrow};var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;ENVIRONMENT_IS_WEB=typeof window===\"object\";ENVIRONMENT_IS_WORKER=typeof importScripts===\"function\";ENVIRONMENT_IS_NODE=typeof process===\"object\"&&typeof process.versions===\"object\"&&typeof process.versions.node===\"string\";ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var scriptDirectory=\"\";function locateFile(path){if(Module[\"locateFile\"]){return Module[\"locateFile\"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;var nodeFS;var nodePath;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require(\"path\").dirname(scriptDirectory)+\"/\"}else{scriptDirectory=__dirname+\"/\"}read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require(\"fs\");if(!nodePath)nodePath=require(\"path\");filename=nodePath[\"normalize\"](filename);return nodeFS[\"readFileSync\"](filename,binary?null:\"utf8\")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};if(process[\"argv\"].length>1){thisProgram=process[\"argv\"][1].replace(/\\\\/g,\"/\")}arguments_=process[\"argv\"].slice(2);process[\"on\"](\"uncaughtException\",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process[\"on\"](\"unhandledRejection\",abort);quit_=function(status){process[\"exit\"](status)};Module[\"inspect\"]=function(){return\"[Emscripten Module object]\"}}else if(ENVIRONMENT_IS_SHELL){if(typeof read!=\"undefined\"){read_=function shell_read(f){return read(f)}}readBinary=function readBinary(f){var data;if(typeof readbuffer===\"function\"){return new Uint8Array(readbuffer(f))}data=read(f,\"binary\");assert(typeof data===\"object\");return data};if(typeof scriptArgs!=\"undefined\"){arguments_=scriptArgs}else if(typeof arguments!=\"undefined\"){arguments_=arguments}if(typeof quit===\"function\"){quit_=function(status){quit(status)}}if(typeof print!==\"undefined\"){if(typeof console===\"undefined\")console={};console.log=print;console.warn=console.error=typeof printErr!==\"undefined\"?printErr:print}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!==\"undefined\"&&document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptDir){scriptDirectory=_scriptDir}if(scriptDirectory.indexOf(\"blob:\")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf(\"/\")+1)}else{scriptDirectory=\"\"}{read_=function(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=function(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.responseType=\"arraybuffer\";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=function(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,true);xhr.responseType=\"arraybuffer\";xhr.onload=function(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=function(title){document.title=title}}else{}var out=Module[\"print\"]||console.log.bind(console);var err=Module[\"printErr\"]||console.warn.bind(console);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=null;if(Module[\"arguments\"])arguments_=Module[\"arguments\"];if(Module[\"thisProgram\"])thisProgram=Module[\"thisProgram\"];if(Module[\"quit\"])quit_=Module[\"quit\"];var wasmBinary;if(Module[\"wasmBinary\"])wasmBinary=Module[\"wasmBinary\"];var noExitRuntime=Module[\"noExitRuntime\"]||true;if(typeof WebAssembly!==\"object\"){abort(\"no native wasm support detected\")}var wasmMemory;var ABORT=false;var EXITSTATUS;function assert(condition,text){if(!condition){abort(\"Assertion failed: \"+text)}}function getCFunc(ident){var func=Module[\"_\"+ident];assert(func,\"Cannot call unknown function \"+ident+\", make sure it is exported\");return func}function ccall(ident,returnType,argTypes,args,opts){var toC={\"string\":function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){var len=(str.length<<2)+1;ret=stackAlloc(len);stringToUTF8(str,ret,len)}return ret},\"array\":function(arr){var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType===\"string\")return UTF8ToString(ret);if(returnType===\"boolean\")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i=endIdx))++endPtr;if(endPtr-idx>16&&heap.subarray&&UTF8Decoder){return UTF8Decoder.decode(heap.subarray(idx,endPtr))}else{var str=\"\";while(idx>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):\"\"}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}function alignUp(x,multiple){if(x%multiple>0){x+=multiple-x%multiple}return x}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module[\"HEAP8\"]=HEAP8=new Int8Array(buf);Module[\"HEAP16\"]=HEAP16=new Int16Array(buf);Module[\"HEAP32\"]=HEAP32=new Int32Array(buf);Module[\"HEAPU8\"]=HEAPU8=new Uint8Array(buf);Module[\"HEAPU16\"]=HEAPU16=new Uint16Array(buf);Module[\"HEAPU32\"]=HEAPU32=new Uint32Array(buf);Module[\"HEAPF32\"]=HEAPF32=new Float32Array(buf);Module[\"HEAPF64\"]=HEAPF64=new Float64Array(buf)}var INITIAL_MEMORY=Module[\"INITIAL_MEMORY\"]||16777216;var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;__ATINIT__.push({func:function(){___wasm_call_ctors()}});function preRun(){if(Module[\"preRun\"]){if(typeof Module[\"preRun\"]==\"function\")Module[\"preRun\"]=[Module[\"preRun\"]];while(Module[\"preRun\"].length){addOnPreRun(Module[\"preRun\"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function postRun(){if(Module[\"postRun\"]){if(typeof Module[\"postRun\"]==\"function\")Module[\"postRun\"]=[Module[\"postRun\"]];while(Module[\"postRun\"].length){addOnPostRun(Module[\"postRun\"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){runDependencies++;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module[\"preloadedImages\"]={};Module[\"preloadedAudios\"]={};function abort(what){if(Module[\"onAbort\"]){Module[\"onAbort\"](what)}what+=\"\";err(what);ABORT=true;EXITSTATUS=1;what=\"abort(\"+what+\"). Build with -s ASSERTIONS=1 for more info.\";var e=new WebAssembly.RuntimeError(what);readyPromiseReject(e);throw e}function hasPrefix(str,prefix){return String.prototype.startsWith?str.startsWith(prefix):str.indexOf(prefix)===0}var dataURIPrefix=\"data:application/octet-stream;base64,\";function isDataURI(filename){return hasPrefix(filename,dataURIPrefix)}var fileURIPrefix=\"file://\";function isFileURI(filename){return hasPrefix(filename,fileURIPrefix)}var wasmBinaryFile=\"tfjs-backend-wasm.wasm\";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}else{throw\"both async and sync fetching of the wasm failed\"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch===\"function\"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){if(!response[\"ok\"]){throw\"failed to load wasm binary file at '\"+wasmBinaryFile+\"'\"}return response[\"arrayBuffer\"]()}).catch(function(){return getBinary(wasmBinaryFile)})}else{if(readAsync){return new Promise(function(resolve,reject){readAsync(wasmBinaryFile,function(response){resolve(new Uint8Array(response))},reject)})}}}return Promise.resolve().then(function(){return getBinary(wasmBinaryFile)})}function createWasm(){var info={\"a\":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module[\"asm\"]=exports;wasmMemory=Module[\"asm\"][\"g\"];updateGlobalBufferAndViews(wasmMemory.buffer);wasmTable=Module[\"asm\"][\"m\"];removeRunDependency(\"wasm-instantiate\")}addRunDependency(\"wasm-instantiate\");function receiveInstantiatedSource(output){receiveInstance(output[\"instance\"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err(\"failed to asynchronously prepare wasm: \"+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming===\"function\"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch===\"function\"){return fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err(\"wasm streaming compile failed: \"+reason);err(\"falling back to ArrayBuffer instantiation\");return instantiateArrayBuffer(receiveInstantiatedSource)})})}else{return instantiateArrayBuffer(receiveInstantiatedSource)}}if(Module[\"instantiateWasm\"]){try{var exports=Module[\"instantiateWasm\"](info,receiveInstance);return exports}catch(e){err(\"Module.instantiateWasm callback failed with error: \"+e);return false}}instantiateAsync().catch(readyPromiseReject);return{}}function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback==\"function\"){callback(Module);continue}var func=callback.func;if(typeof func===\"number\"){if(callback.arg===undefined){wasmTable.get(func)()}else{wasmTable.get(func)(callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}function _abort(){abort()}function _emscripten_memcpy_big(dest,src,num){HEAPU8.copyWithin(dest,src,src+num)}function _emscripten_get_heap_size(){return HEAPU8.length}function emscripten_realloc_buffer(size){try{wasmMemory.grow(size-buffer.byteLength+65535>>>16);updateGlobalBufferAndViews(wasmMemory.buffer);return 1}catch(e){}}function _emscripten_resize_heap(requestedSize){var oldSize=_emscripten_get_heap_size();var maxHeapSize=2147483648;if(requestedSize>maxHeapSize){return false}for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=emscripten_realloc_buffer(newSize);if(replacement){return true}}return false}var SYSCALLS={mappings:{},buffers:[null,[],[]],printChar:function(stream,curr){var buffer=SYSCALLS.buffers[stream];if(curr===0||curr===10){(stream===1?out:err)(UTF8ArrayToString(buffer,0));buffer.length=0}else{buffer.push(curr)}},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},get64:function(low,high){return low}};function _fd_close(fd){return 0}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){}function _fd_write(fd,iov,iovcnt,pnum){var num=0;for(var i=0;i>2];var len=HEAP32[iov+(i*8+4)>>2];for(var j=0;j>2]=num;return 0}var asmLibraryArg={\"a\":_abort,\"d\":_emscripten_memcpy_big,\"e\":_emscripten_resize_heap,\"f\":_fd_close,\"c\":_fd_seek,\"b\":_fd_write};var asm=createWasm();var ___wasm_call_ctors=Module[\"___wasm_call_ctors\"]=function(){return(___wasm_call_ctors=Module[\"___wasm_call_ctors\"]=Module[\"asm\"][\"h\"]).apply(null,arguments)};var _init=Module[\"_init\"]=function(){return(_init=Module[\"_init\"]=Module[\"asm\"][\"i\"]).apply(null,arguments)};var _register_tensor=Module[\"_register_tensor\"]=function(){return(_register_tensor=Module[\"_register_tensor\"]=Module[\"asm\"][\"j\"]).apply(null,arguments)};var _dispose_data=Module[\"_dispose_data\"]=function(){return(_dispose_data=Module[\"_dispose_data\"]=Module[\"asm\"][\"k\"]).apply(null,arguments)};var _dispose=Module[\"_dispose\"]=function(){return(_dispose=Module[\"_dispose\"]=Module[\"asm\"][\"l\"]).apply(null,arguments)};var _Abs=Module[\"_Abs\"]=function(){return(_Abs=Module[\"_Abs\"]=Module[\"asm\"][\"n\"]).apply(null,arguments)};var _Add=Module[\"_Add\"]=function(){return(_Add=Module[\"_Add\"]=Module[\"asm\"][\"o\"]).apply(null,arguments)};var _AddN=Module[\"_AddN\"]=function(){return(_AddN=Module[\"_AddN\"]=Module[\"asm\"][\"p\"]).apply(null,arguments)};var _ArgMax=Module[\"_ArgMax\"]=function(){return(_ArgMax=Module[\"_ArgMax\"]=Module[\"asm\"][\"q\"]).apply(null,arguments)};var _AvgPool=Module[\"_AvgPool\"]=function(){return(_AvgPool=Module[\"_AvgPool\"]=Module[\"asm\"][\"r\"]).apply(null,arguments)};var _BatchMatMul=Module[\"_BatchMatMul\"]=function(){return(_BatchMatMul=Module[\"_BatchMatMul\"]=Module[\"asm\"][\"s\"]).apply(null,arguments)};var _Ceil=Module[\"_Ceil\"]=function(){return(_Ceil=Module[\"_Ceil\"]=Module[\"asm\"][\"t\"]).apply(null,arguments)};var _ClipByValue=Module[\"_ClipByValue\"]=function(){return(_ClipByValue=Module[\"_ClipByValue\"]=Module[\"asm\"][\"u\"]).apply(null,arguments)};var _Conv2D=Module[\"_Conv2D\"]=function(){return(_Conv2D=Module[\"_Conv2D\"]=Module[\"asm\"][\"v\"]).apply(null,arguments)};var _Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=function(){return(_Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=Module[\"asm\"][\"w\"]).apply(null,arguments)};var _Cos=Module[\"_Cos\"]=function(){return(_Cos=Module[\"_Cos\"]=Module[\"asm\"][\"x\"]).apply(null,arguments)};var _CropAndResize=Module[\"_CropAndResize\"]=function(){return(_CropAndResize=Module[\"_CropAndResize\"]=Module[\"asm\"][\"y\"]).apply(null,arguments)};var _Cumsum=Module[\"_Cumsum\"]=function(){return(_Cumsum=Module[\"_Cumsum\"]=Module[\"asm\"][\"z\"]).apply(null,arguments)};var _DepthToSpace=Module[\"_DepthToSpace\"]=function(){return(_DepthToSpace=Module[\"_DepthToSpace\"]=Module[\"asm\"][\"A\"]).apply(null,arguments)};var _DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=function(){return(_DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=Module[\"asm\"][\"B\"]).apply(null,arguments)};var _Equal=Module[\"_Equal\"]=function(){return(_Equal=Module[\"_Equal\"]=Module[\"asm\"][\"C\"]).apply(null,arguments)};var _Exp=Module[\"_Exp\"]=function(){return(_Exp=Module[\"_Exp\"]=Module[\"asm\"][\"D\"]).apply(null,arguments)};var _FlipLeftRight=Module[\"_FlipLeftRight\"]=function(){return(_FlipLeftRight=Module[\"_FlipLeftRight\"]=Module[\"asm\"][\"E\"]).apply(null,arguments)};var _Floor=Module[\"_Floor\"]=function(){return(_Floor=Module[\"_Floor\"]=Module[\"asm\"][\"F\"]).apply(null,arguments)};var _FloorDiv=Module[\"_FloorDiv\"]=function(){return(_FloorDiv=Module[\"_FloorDiv\"]=Module[\"asm\"][\"G\"]).apply(null,arguments)};var _FusedBatchNorm=Module[\"_FusedBatchNorm\"]=function(){return(_FusedBatchNorm=Module[\"_FusedBatchNorm\"]=Module[\"asm\"][\"H\"]).apply(null,arguments)};var _FusedConv2D=Module[\"_FusedConv2D\"]=function(){return(_FusedConv2D=Module[\"_FusedConv2D\"]=Module[\"asm\"][\"I\"]).apply(null,arguments)};var _FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=function(){return(_FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=Module[\"asm\"][\"J\"]).apply(null,arguments)};var _Gather=Module[\"_Gather\"]=function(){return(_Gather=Module[\"_Gather\"]=Module[\"asm\"][\"K\"]).apply(null,arguments)};var _GatherNd=Module[\"_GatherNd\"]=function(){return(_GatherNd=Module[\"_GatherNd\"]=Module[\"asm\"][\"L\"]).apply(null,arguments)};var _Greater=Module[\"_Greater\"]=function(){return(_Greater=Module[\"_Greater\"]=Module[\"asm\"][\"M\"]).apply(null,arguments)};var _GreaterEqual=Module[\"_GreaterEqual\"]=function(){return(_GreaterEqual=Module[\"_GreaterEqual\"]=Module[\"asm\"][\"N\"]).apply(null,arguments)};var _LeakyRelu=Module[\"_LeakyRelu\"]=function(){return(_LeakyRelu=Module[\"_LeakyRelu\"]=Module[\"asm\"][\"O\"]).apply(null,arguments)};var _Less=Module[\"_Less\"]=function(){return(_Less=Module[\"_Less\"]=Module[\"asm\"][\"P\"]).apply(null,arguments)};var _LessEqual=Module[\"_LessEqual\"]=function(){return(_LessEqual=Module[\"_LessEqual\"]=Module[\"asm\"][\"Q\"]).apply(null,arguments)};var _Log=Module[\"_Log\"]=function(){return(_Log=Module[\"_Log\"]=Module[\"asm\"][\"R\"]).apply(null,arguments)};var _LogicalAnd=Module[\"_LogicalAnd\"]=function(){return(_LogicalAnd=Module[\"_LogicalAnd\"]=Module[\"asm\"][\"S\"]).apply(null,arguments)};var _Max=Module[\"_Max\"]=function(){return(_Max=Module[\"_Max\"]=Module[\"asm\"][\"T\"]).apply(null,arguments)};var _MaxPool=Module[\"_MaxPool\"]=function(){return(_MaxPool=Module[\"_MaxPool\"]=Module[\"asm\"][\"U\"]).apply(null,arguments)};var _Maximum=Module[\"_Maximum\"]=function(){return(_Maximum=Module[\"_Maximum\"]=Module[\"asm\"][\"V\"]).apply(null,arguments)};var _Mean=Module[\"_Mean\"]=function(){return(_Mean=Module[\"_Mean\"]=Module[\"asm\"][\"W\"]).apply(null,arguments)};var _Min=Module[\"_Min\"]=function(){return(_Min=Module[\"_Min\"]=Module[\"asm\"][\"X\"]).apply(null,arguments)};var _Minimum=Module[\"_Minimum\"]=function(){return(_Minimum=Module[\"_Minimum\"]=Module[\"asm\"][\"Y\"]).apply(null,arguments)};var _Multiply=Module[\"_Multiply\"]=function(){return(_Multiply=Module[\"_Multiply\"]=Module[\"asm\"][\"Z\"]).apply(null,arguments)};var _Neg=Module[\"_Neg\"]=function(){return(_Neg=Module[\"_Neg\"]=Module[\"asm\"][\"_\"]).apply(null,arguments)};var _NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=function(){return(_NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=Module[\"asm\"][\"$\"]).apply(null,arguments)};var _NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=function(){return(_NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=Module[\"asm\"][\"aa\"]).apply(null,arguments)};var _NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=function(){return(_NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=Module[\"asm\"][\"ba\"]).apply(null,arguments)};var _NotEqual=Module[\"_NotEqual\"]=function(){return(_NotEqual=Module[\"_NotEqual\"]=Module[\"asm\"][\"ca\"]).apply(null,arguments)};var _OneHot=Module[\"_OneHot\"]=function(){return(_OneHot=Module[\"_OneHot\"]=Module[\"asm\"][\"da\"]).apply(null,arguments)};var _PadV2=Module[\"_PadV2\"]=function(){return(_PadV2=Module[\"_PadV2\"]=Module[\"asm\"][\"ea\"]).apply(null,arguments)};var _Pow=Module[\"_Pow\"]=function(){return(_Pow=Module[\"_Pow\"]=Module[\"asm\"][\"fa\"]).apply(null,arguments)};var _Prelu=Module[\"_Prelu\"]=function(){return(_Prelu=Module[\"_Prelu\"]=Module[\"asm\"][\"ga\"]).apply(null,arguments)};var _Prod=Module[\"_Prod\"]=function(){return(_Prod=Module[\"_Prod\"]=Module[\"asm\"][\"ha\"]).apply(null,arguments)};var _RealDiv=Module[\"_RealDiv\"]=function(){return(_RealDiv=Module[\"_RealDiv\"]=Module[\"asm\"][\"ia\"]).apply(null,arguments)};var _Relu=Module[\"_Relu\"]=function(){return(_Relu=Module[\"_Relu\"]=Module[\"asm\"][\"ja\"]).apply(null,arguments)};var _Relu6=Module[\"_Relu6\"]=function(){return(_Relu6=Module[\"_Relu6\"]=Module[\"asm\"][\"ka\"]).apply(null,arguments)};var _ResizeBilinear=Module[\"_ResizeBilinear\"]=function(){return(_ResizeBilinear=Module[\"_ResizeBilinear\"]=Module[\"asm\"][\"la\"]).apply(null,arguments)};var _Reverse=Module[\"_Reverse\"]=function(){return(_Reverse=Module[\"_Reverse\"]=Module[\"asm\"][\"ma\"]).apply(null,arguments)};var _RotateWithOffset=Module[\"_RotateWithOffset\"]=function(){return(_RotateWithOffset=Module[\"_RotateWithOffset\"]=Module[\"asm\"][\"na\"]).apply(null,arguments)};var _Round=Module[\"_Round\"]=function(){return(_Round=Module[\"_Round\"]=Module[\"asm\"][\"oa\"]).apply(null,arguments)};var _Rsqrt=Module[\"_Rsqrt\"]=function(){return(_Rsqrt=Module[\"_Rsqrt\"]=Module[\"asm\"][\"pa\"]).apply(null,arguments)};var _ScatterNd=Module[\"_ScatterNd\"]=function(){return(_ScatterNd=Module[\"_ScatterNd\"]=Module[\"asm\"][\"qa\"]).apply(null,arguments)};var _SelectV2=Module[\"_SelectV2\"]=function(){return(_SelectV2=Module[\"_SelectV2\"]=Module[\"asm\"][\"ra\"]).apply(null,arguments)};var _Sigmoid=Module[\"_Sigmoid\"]=function(){return(_Sigmoid=Module[\"_Sigmoid\"]=Module[\"asm\"][\"sa\"]).apply(null,arguments)};var _Sin=Module[\"_Sin\"]=function(){return(_Sin=Module[\"_Sin\"]=Module[\"asm\"][\"ta\"]).apply(null,arguments)};var _Softmax=Module[\"_Softmax\"]=function(){return(_Softmax=Module[\"_Softmax\"]=Module[\"asm\"][\"ua\"]).apply(null,arguments)};var _Sqrt=Module[\"_Sqrt\"]=function(){return(_Sqrt=Module[\"_Sqrt\"]=Module[\"asm\"][\"va\"]).apply(null,arguments)};var _Square=Module[\"_Square\"]=function(){return(_Square=Module[\"_Square\"]=Module[\"asm\"][\"wa\"]).apply(null,arguments)};var _SquaredDifference=Module[\"_SquaredDifference\"]=function(){return(_SquaredDifference=Module[\"_SquaredDifference\"]=Module[\"asm\"][\"xa\"]).apply(null,arguments)};var _Step=Module[\"_Step\"]=function(){return(_Step=Module[\"_Step\"]=Module[\"asm\"][\"ya\"]).apply(null,arguments)};var _StridedSlice=Module[\"_StridedSlice\"]=function(){return(_StridedSlice=Module[\"_StridedSlice\"]=Module[\"asm\"][\"za\"]).apply(null,arguments)};var _Sub=Module[\"_Sub\"]=function(){return(_Sub=Module[\"_Sub\"]=Module[\"asm\"][\"Aa\"]).apply(null,arguments)};var _Sum=Module[\"_Sum\"]=function(){return(_Sum=Module[\"_Sum\"]=Module[\"asm\"][\"Ba\"]).apply(null,arguments)};var _Tanh=Module[\"_Tanh\"]=function(){return(_Tanh=Module[\"_Tanh\"]=Module[\"asm\"][\"Ca\"]).apply(null,arguments)};var _Tile=Module[\"_Tile\"]=function(){return(_Tile=Module[\"_Tile\"]=Module[\"asm\"][\"Da\"]).apply(null,arguments)};var _TopK=Module[\"_TopK\"]=function(){return(_TopK=Module[\"_TopK\"]=Module[\"asm\"][\"Ea\"]).apply(null,arguments)};var _Transpose=Module[\"_Transpose\"]=function(){return(_Transpose=Module[\"_Transpose\"]=Module[\"asm\"][\"Fa\"]).apply(null,arguments)};var __FusedMatMul=Module[\"__FusedMatMul\"]=function(){return(__FusedMatMul=Module[\"__FusedMatMul\"]=Module[\"asm\"][\"Ga\"]).apply(null,arguments)};var _malloc=Module[\"_malloc\"]=function(){return(_malloc=Module[\"_malloc\"]=Module[\"asm\"][\"Ha\"]).apply(null,arguments)};var _free=Module[\"_free\"]=function(){return(_free=Module[\"_free\"]=Module[\"asm\"][\"Ia\"]).apply(null,arguments)};var stackSave=Module[\"stackSave\"]=function(){return(stackSave=Module[\"stackSave\"]=Module[\"asm\"][\"Ja\"]).apply(null,arguments)};var stackRestore=Module[\"stackRestore\"]=function(){return(stackRestore=Module[\"stackRestore\"]=Module[\"asm\"][\"Ka\"]).apply(null,arguments)};var stackAlloc=Module[\"stackAlloc\"]=function(){return(stackAlloc=Module[\"stackAlloc\"]=Module[\"asm\"][\"La\"]).apply(null,arguments)};Module[\"cwrap\"]=cwrap;var calledRun;function ExitStatus(status){this.name=\"ExitStatus\";this.message=\"Program terminated with exit(\"+status+\")\";this.status=status}dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module[\"calledRun\"]=true;if(ABORT)return;initRuntime();preMain();readyPromiseResolve(Module);if(Module[\"onRuntimeInitialized\"])Module[\"onRuntimeInitialized\"]();postRun()}if(Module[\"setStatus\"]){Module[\"setStatus\"](\"Running...\");setTimeout(function(){setTimeout(function(){Module[\"setStatus\"](\"\")},1);doRun()},1)}else{doRun()}}Module[\"run\"]=run;if(Module[\"preInit\"]){if(typeof Module[\"preInit\"]==\"function\")Module[\"preInit\"]=[Module[\"preInit\"]];while(Module[\"preInit\"].length>0){Module[\"preInit\"].pop()()}}run();\n\n\n return WasmBackendModule.ready\n}\n);\n})();\nif (typeof exports === 'object' && typeof module === 'object')\n module.exports = WasmBackendModule;\nelse if (typeof define === 'function' && define['amd'])\n define([], function() { return WasmBackendModule; });\nelse if (typeof exports === 'object')\n exports[\"WasmBackendModule\"] = WasmBackendModule;\n", "// A port of an algorithm by Johannes Baag\u00F8e , 2010\n// http://baagoe.com/en/RandomMusings/javascript/\n// https://github.com/nquinlan/better-random-numbers-for-javascript-mirror\n// Original work is under MIT license -\n\n// Copyright (C) 2010 by Johannes Baag\u00F8e \n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n\n\n(function(global, module, define) {\n\nfunction Alea(seed) {\n var me = this, mash = Mash();\n\n me.next = function() {\n var t = 2091639 * me.s0 + me.c * 2.3283064365386963e-10; // 2^-32\n me.s0 = me.s1;\n me.s1 = me.s2;\n return me.s2 = t - (me.c = t | 0);\n };\n\n // Apply the seeding algorithm from Baagoe.\n me.c = 1;\n me.s0 = mash(' ');\n me.s1 = mash(' ');\n me.s2 = mash(' ');\n me.s0 -= mash(seed);\n if (me.s0 < 0) { me.s0 += 1; }\n me.s1 -= mash(seed);\n if (me.s1 < 0) { me.s1 += 1; }\n me.s2 -= mash(seed);\n if (me.s2 < 0) { me.s2 += 1; }\n mash = null;\n}\n\nfunction copy(f, t) {\n t.c = f.c;\n t.s0 = f.s0;\n t.s1 = f.s1;\n t.s2 = f.s2;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new Alea(seed),\n state = opts && opts.state,\n prng = xg.next;\n prng.int32 = function() { return (xg.next() * 0x100000000) | 0; }\n prng.double = function() {\n return prng() + (prng() * 0x200000 | 0) * 1.1102230246251565e-16; // 2^-53\n };\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nfunction Mash() {\n var n = 0xefc8249d;\n\n var mash = function(data) {\n data = String(data);\n for (var i = 0; i < data.length; i++) {\n n += data.charCodeAt(i);\n var h = 0.02519603282416938 * n;\n n = h >>> 0;\n h -= n;\n h *= n;\n n = h >>> 0;\n h -= n;\n n += h * 0x100000000; // 2^32\n }\n return (n >>> 0) * 2.3283064365386963e-10; // 2^-32\n };\n\n return mash;\n}\n\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.alea = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xor128\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n\n // Set up generator function.\n me.next = function() {\n var t = me.x ^ (me.x << 11);\n me.x = me.y;\n me.y = me.z;\n me.z = me.w;\n return me.w ^= (me.w >>> 19) ^ t ^ (t >>> 8);\n };\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor128 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorwow\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var t = (me.x ^ (me.x >>> 2));\n me.x = me.y; me.y = me.z; me.z = me.w; me.w = me.v;\n return (me.d = (me.d + 362437 | 0)) +\n (me.v = (me.v ^ (me.v << 4)) ^ (t ^ (t << 1))) | 0;\n };\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n me.v = 0;\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n if (k == strseed.length) {\n me.d = me.x << 10 ^ me.x >>> 4;\n }\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n t.v = f.v;\n t.d = f.d;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorwow = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorshift7\" algorithm by\n// Fran\u00E7ois Panneton and Pierre L'ecuyer:\n// \"On the Xorgshift Random Number Generators\"\n// http://saluc.engr.uconn.edu/refs/crypto/rng/panneton05onthexorshift.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n // Update xor generator.\n var X = me.x, i = me.i, t, v, w;\n t = X[i]; t ^= (t >>> 7); v = t ^ (t << 24);\n t = X[(i + 1) & 7]; v ^= t ^ (t >>> 10);\n t = X[(i + 3) & 7]; v ^= t ^ (t >>> 3);\n t = X[(i + 4) & 7]; v ^= t ^ (t << 7);\n t = X[(i + 7) & 7]; t = t ^ (t << 13); v ^= t ^ (t << 9);\n X[i] = v;\n me.i = (i + 1) & 7;\n return v;\n };\n\n function init(me, seed) {\n var j, w, X = [];\n\n if (seed === (seed | 0)) {\n // Seed state array using a 32-bit integer.\n w = X[0] = seed;\n } else {\n // Seed state using a string.\n seed = '' + seed;\n for (j = 0; j < seed.length; ++j) {\n X[j & 7] = (X[j & 7] << 15) ^\n (seed.charCodeAt(j) + X[(j + 1) & 7] << 13);\n }\n }\n // Enforce an array length of 8, not all zeroes.\n while (X.length < 8) X.push(0);\n for (j = 0; j < 8 && X[j] === 0; ++j);\n if (j == 8) w = X[7] = -1; else w = X[j];\n\n me.x = X;\n me.i = 0;\n\n // Discard an initial 256 values.\n for (j = 256; j > 0; --j) {\n me.next();\n }\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.x = f.x.slice();\n t.i = f.i;\n return t;\n}\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.x) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorshift7 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n", "// A Javascript implementaion of Richard Brent's Xorgens xor4096 algorithm.\n//\n// This fast non-cryptographic random number generator is designed for\n// use in Monte-Carlo algorithms. It combines a long-period xorshift\n// generator with a Weyl generator, and it passes all common batteries\n// of stasticial tests for randomness while consuming only a few nanoseconds\n// for each prng generated. For background on the generator, see Brent's\n// paper: \"Some long-period random number generators using shifts and xors.\"\n// http://arxiv.org/pdf/1004.3115v1.pdf\n//\n// Usage:\n//\n// var xor4096 = require('xor4096');\n// random = xor4096(1); // Seed with int32 or string.\n// assert.equal(random(), 0.1520436450538547); // (0, 1) range, 53 bits.\n// assert.equal(random.int32(), 1806534897); // signed int32, 32 bits.\n//\n// For nonzero numeric keys, this impelementation provides a sequence\n// identical to that by Brent's xorgens 3 implementaion in C. This\n// implementation also provides for initalizing the generator with\n// string seeds, or for saving and restoring the state of the generator.\n//\n// On Chrome, this prng benchmarks about 2.1 times slower than\n// Javascript's built-in Math.random().\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n var w = me.w,\n X = me.X, i = me.i, t, v;\n // Update Weyl generator.\n me.w = w = (w + 0x61c88647) | 0;\n // Update xor generator.\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n // Update Xor generator array state.\n v = X[i] = v ^ t;\n me.i = i;\n // Result is the combination.\n return (v + (w ^ (w >>> 16))) | 0;\n };\n\n function init(me, seed) {\n var t, v, i, j, w, X = [], limit = 128;\n if (seed === (seed | 0)) {\n // Numeric seeds initialize v, which is used to generates X.\n v = seed;\n seed = null;\n } else {\n // String seeds are mixed into v and X one character at a time.\n seed = seed + '\\0';\n v = 0;\n limit = Math.max(limit, seed.length);\n }\n // Initialize circular array and weyl value.\n for (i = 0, j = -32; j < limit; ++j) {\n // Put the unicode characters into the array, and shuffle them.\n if (seed) v ^= seed.charCodeAt((j + 32) % seed.length);\n // After 32 shuffles, take v as the starting w value.\n if (j === 0) w = v;\n v ^= v << 10;\n v ^= v >>> 15;\n v ^= v << 4;\n v ^= v >>> 13;\n if (j >= 0) {\n w = (w + 0x61c88647) | 0; // Weyl.\n t = (X[j & 127] ^= (v + w)); // Combine xor and weyl to init array.\n i = (0 == t) ? i + 1 : 0; // Count zeroes.\n }\n }\n // We have detected all zeroes; make the key nonzero.\n if (i >= 128) {\n X[(seed && seed.length || 0) & 127] = -1;\n }\n // Run the generator 512 times to further mix the state before using it.\n // Factoring this as a function slows the main generator, so it is just\n // unrolled here. The weyl generator is not advanced while warming up.\n i = 127;\n for (j = 4 * 128; j > 0; --j) {\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n X[i] = v ^ t;\n }\n // Storing state as object members is faster than using closure variables.\n me.w = w;\n me.X = X;\n me.i = i;\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.i = f.i;\n t.w = f.w;\n t.X = f.X.slice();\n return t;\n};\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.X) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor4096 = impl;\n}\n\n})(\n this, // window object or global\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n", "// A Javascript implementaion of the \"Tyche-i\" prng algorithm by\n// Samuel Neves and Filipe Araujo.\n// See https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var b = me.b, c = me.c, d = me.d, a = me.a;\n b = (b << 25) ^ (b >>> 7) ^ c;\n c = (c - d) | 0;\n d = (d << 24) ^ (d >>> 8) ^ a;\n a = (a - b) | 0;\n me.b = b = (b << 20) ^ (b >>> 12) ^ c;\n me.c = c = (c - d) | 0;\n me.d = (d << 16) ^ (c >>> 16) ^ a;\n return me.a = (a - b) | 0;\n };\n\n /* The following is non-inverted tyche, which has better internal\n * bit diffusion, but which is about 25% slower than tyche-i in JS.\n me.next = function() {\n var a = me.a, b = me.b, c = me.c, d = me.d;\n a = (me.a + me.b | 0) >>> 0;\n d = me.d ^ a; d = d << 16 ^ d >>> 16;\n c = me.c + d | 0;\n b = me.b ^ c; b = b << 12 ^ d >>> 20;\n me.a = a = a + b | 0;\n d = d ^ a; me.d = d = d << 8 ^ d >>> 24;\n me.c = c = c + d | 0;\n b = b ^ c;\n return me.b = (b << 7 ^ b >>> 25);\n }\n */\n\n me.a = 0;\n me.b = 0;\n me.c = 2654435769 | 0;\n me.d = 1367130551;\n\n if (seed === Math.floor(seed)) {\n // Integer seed.\n me.a = (seed / 0x100000000) | 0;\n me.b = seed | 0;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 20; k++) {\n me.b ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.a = f.a;\n t.b = f.b;\n t.c = f.c;\n t.d = f.d;\n return t;\n};\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.tychei = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "/*\nCopyright 2019 David Bau.\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n*/\n\n(function (global, pool, math) {\n//\n// The following constants are related to IEEE 754 limits.\n//\n\nvar width = 256, // each RC4 output is 0 <= x < 256\n chunks = 6, // at least six RC4 outputs for each double\n digits = 52, // there are 52 significant digits in a double\n rngname = 'random', // rngname: name for Math.random and Math.seedrandom\n startdenom = math.pow(width, chunks),\n significance = math.pow(2, digits),\n overflow = significance * 2,\n mask = width - 1,\n nodecrypto; // node.js crypto module, initialized at the bottom.\n\n//\n// seedrandom()\n// This is the seedrandom function described above.\n//\nfunction seedrandom(seed, options, callback) {\n var key = [];\n options = (options == true) ? { entropy: true } : (options || {});\n\n // Flatten the seed string or build one from local entropy if needed.\n var shortseed = mixkey(flatten(\n options.entropy ? [seed, tostring(pool)] :\n (seed == null) ? autoseed() : seed, 3), key);\n\n // Use the seed to initialize an ARC4 generator.\n var arc4 = new ARC4(key);\n\n // This function returns a random double in [0, 1) that contains\n // randomness in every bit of the mantissa of the IEEE 754 value.\n var prng = function() {\n var n = arc4.g(chunks), // Start with a numerator n < 2 ^ 48\n d = startdenom, // and denominator d = 2 ^ 48.\n x = 0; // and no 'extra last byte'.\n while (n < significance) { // Fill up all significant digits by\n n = (n + x) * width; // shifting numerator and\n d *= width; // denominator and generating a\n x = arc4.g(1); // new least-significant-byte.\n }\n while (n >= overflow) { // To avoid rounding up, before adding\n n /= 2; // last byte, shift everything\n d /= 2; // right using integer math until\n x >>>= 1; // we have exactly the desired bits.\n }\n return (n + x) / d; // Form the number within [0, 1).\n };\n\n prng.int32 = function() { return arc4.g(4) | 0; }\n prng.quick = function() { return arc4.g(4) / 0x100000000; }\n prng.double = prng;\n\n // Mix the randomness into accumulated entropy.\n mixkey(tostring(arc4.S), pool);\n\n // Calling convention: what to return as a function of prng, seed, is_math.\n return (options.pass || callback ||\n function(prng, seed, is_math_call, state) {\n if (state) {\n // Load the arc4 state from the given state if it has an S array.\n if (state.S) { copy(state, arc4); }\n // Only provide the .state method if requested via options.state.\n prng.state = function() { return copy(arc4, {}); }\n }\n\n // If called as a method of Math (Math.seedrandom()), mutate\n // Math.random because that is how seedrandom.js has worked since v1.0.\n if (is_math_call) { math[rngname] = prng; return seed; }\n\n // Otherwise, it is a newer calling convention, so return the\n // prng directly.\n else return prng;\n })(\n prng,\n shortseed,\n 'global' in options ? options.global : (this == math),\n options.state);\n}\n\n//\n// ARC4\n//\n// An ARC4 implementation. The constructor takes a key in the form of\n// an array of at most (width) integers that should be 0 <= x < (width).\n//\n// The g(count) method returns a pseudorandom integer that concatenates\n// the next (count) outputs from ARC4. Its return value is a number x\n// that is in the range 0 <= x < (width ^ count).\n//\nfunction ARC4(key) {\n var t, keylen = key.length,\n me = this, i = 0, j = me.i = me.j = 0, s = me.S = [];\n\n // The empty key [] is treated as [0].\n if (!keylen) { key = [keylen++]; }\n\n // Set up S using the standard key scheduling algorithm.\n while (i < width) {\n s[i] = i++;\n }\n for (i = 0; i < width; i++) {\n s[i] = s[j = mask & (j + key[i % keylen] + (t = s[i]))];\n s[j] = t;\n }\n\n // The \"g\" method returns the next (count) outputs as one number.\n (me.g = function(count) {\n // Using instance members instead of closure state nearly doubles speed.\n var t, r = 0,\n i = me.i, j = me.j, s = me.S;\n while (count--) {\n t = s[i = mask & (i + 1)];\n r = r * width + s[mask & ((s[i] = s[j = mask & (j + t)]) + (s[j] = t))];\n }\n me.i = i; me.j = j;\n return r;\n // For robust unpredictability, the function call below automatically\n // discards an initial batch of values. This is called RC4-drop[256].\n // See http://google.com/search?q=rsa+fluhrer+response&btnI\n })(width);\n}\n\n//\n// copy()\n// Copies internal state of ARC4 to or from a plain object.\n//\nfunction copy(f, t) {\n t.i = f.i;\n t.j = f.j;\n t.S = f.S.slice();\n return t;\n};\n\n//\n// flatten()\n// Converts an object tree to nested arrays of strings.\n//\nfunction flatten(obj, depth) {\n var result = [], typ = (typeof obj), prop;\n if (depth && typ == 'object') {\n for (prop in obj) {\n try { result.push(flatten(obj[prop], depth - 1)); } catch (e) {}\n }\n }\n return (result.length ? result : typ == 'string' ? obj : obj + '\\0');\n}\n\n//\n// mixkey()\n// Mixes a string seed into a key that is an array of integers, and\n// returns a shortened string seed that is equivalent to the result key.\n//\nfunction mixkey(seed, key) {\n var stringseed = seed + '', smear, j = 0;\n while (j < stringseed.length) {\n key[mask & j] =\n mask & ((smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++));\n }\n return tostring(key);\n}\n\n//\n// autoseed()\n// Returns an object for autoseeding, using window.crypto and Node crypto\n// module if available.\n//\nfunction autoseed() {\n try {\n var out;\n if (nodecrypto && (out = nodecrypto.randomBytes)) {\n // The use of 'out' to remember randomBytes makes tight minified code.\n out = out(width);\n } else {\n out = new Uint8Array(width);\n (global.crypto || global.msCrypto).getRandomValues(out);\n }\n return tostring(out);\n } catch (e) {\n var browser = global.navigator,\n plugins = browser && browser.plugins;\n return [+new Date, global, plugins, global.screen, tostring(pool)];\n }\n}\n\n//\n// tostring()\n// Converts an array of charcodes to a string\n//\nfunction tostring(a) {\n return String.fromCharCode.apply(0, a);\n}\n\n//\n// When seedrandom.js is loaded, we immediately mix a few bits\n// from the built-in RNG into the entropy pool. Because we do\n// not want to interfere with deterministic PRNG state later,\n// seedrandom will not call math.random on its own again after\n// initialization.\n//\nmixkey(math.random(), pool);\n\n//\n// Nodejs and AMD support: export the implementation as a module using\n// either convention.\n//\nif ((typeof module) == 'object' && module.exports) {\n module.exports = seedrandom;\n // When in node.js, try using crypto package for autoseeding.\n try {\n nodecrypto = require('crypto');\n } catch (ex) {}\n} else if ((typeof define) == 'function' && define.amd) {\n define(function() { return seedrandom; });\n} else {\n // When included as a plain script, set up Math.seedrandom global.\n math['seed' + rngname] = seedrandom;\n}\n\n\n// End anonymous scope, and pass initial values.\n})(\n // global: `self` in browsers (including strict mode and web workers),\n // otherwise `this` in Node and other environments\n (typeof self !== 'undefined') ? self : this,\n [], // pool: entropy pool starts empty\n Math // math: package containing random, pow, and seedrandom\n);\n", "// A library of seedable RNGs implemented in Javascript.\n//\n// Usage:\n//\n// var seedrandom = require('seedrandom');\n// var random = seedrandom(1); // or any seed.\n// var x = random(); // 0 <= x < 1. Every bit is random.\n// var x = random.quick(); // 0 <= x < 1. 32 bits of randomness.\n\n// alea, a 53-bit multiply-with-carry generator by Johannes Baag\u00F8e.\n// Period: ~2^116\n// Reported to pass all BigCrush tests.\nvar alea = require('./lib/alea');\n\n// xor128, a pure xor-shift generator by George Marsaglia.\n// Period: 2^128-1.\n// Reported to fail: MatrixRank and LinearComp.\nvar xor128 = require('./lib/xor128');\n\n// xorwow, George Marsaglia's 160-bit xor-shift combined plus weyl.\n// Period: 2^192-2^32\n// Reported to fail: CollisionOver, SimpPoker, and LinearComp.\nvar xorwow = require('./lib/xorwow');\n\n// xorshift7, by Fran\u00E7ois Panneton and Pierre L'ecuyer, takes\n// a different approach: it adds robustness by allowing more shifts\n// than Marsaglia's original three. It is a 7-shift generator\n// with 256 bits, that passes BigCrush with no systmatic failures.\n// Period 2^256-1.\n// No systematic BigCrush failures reported.\nvar xorshift7 = require('./lib/xorshift7');\n\n// xor4096, by Richard Brent, is a 4096-bit xor-shift with a\n// very long period that also adds a Weyl generator. It also passes\n// BigCrush with no systematic failures. Its long period may\n// be useful if you have many generators and need to avoid\n// collisions.\n// Period: 2^4128-2^32.\n// No systematic BigCrush failures reported.\nvar xor4096 = require('./lib/xor4096');\n\n// Tyche-i, by Samuel Neves and Filipe Araujo, is a bit-shifting random\n// number generator derived from ChaCha, a modern stream cipher.\n// https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n// Period: ~2^127\n// No systematic BigCrush failures reported.\nvar tychei = require('./lib/tychei');\n\n// The original ARC4-based prng included in this library.\n// Period: ~2^1600\nvar sr = require('./seedrandom');\n\nsr.alea = alea;\nsr.xor128 = xor128;\nsr.xorwow = xorwow;\nsr.xorshift7 = xorshift7;\nsr.xor4096 = xor4096;\nsr.tychei = tychei;\n\nmodule.exports = sr;\n", "", null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, "export const wasmWorkerContents = 'var Module={};function threadPrintErr(){var text=Array.prototype.slice.call(arguments).join(\" \");console.error(text)}function threadAlert(){var text=Array.prototype.slice.call(arguments).join(\" \");postMessage({cmd:\"alert\",text:text,threadId:Module[\"_pthread_self\"]()})}var err=threadPrintErr;this.alert=threadAlert;Module[\"instantiateWasm\"]=function(info,receiveInstance){var instance=new WebAssembly.Instance(Module[\"wasmModule\"],info);Module[\"wasmModule\"]=null;receiveInstance(instance);return instance.exports};function moduleLoaded(){}this.onmessage=function(e){try{if(e.data.cmd===\"load\"){Module[\"wasmModule\"]=e.data.wasmModule;Module[\"wasmMemory\"]=e.data.wasmMemory;Module[\"buffer\"]=Module[\"wasmMemory\"].buffer;Module[\"ENVIRONMENT_IS_PTHREAD\"]=true;if(typeof e.data.urlOrBlob===\"string\"){importScripts(e.data.urlOrBlob)}else{var objectUrl=URL.createObjectURL(e.data.urlOrBlob);importScripts(objectUrl);URL.revokeObjectURL(objectUrl)}WasmBackendModuleThreadedSimd(Module).then(function(instance){Module=instance;moduleLoaded()})}else if(e.data.cmd===\"objectTransfer\"){Module[\"PThread\"].receiveObjectTransfer(e.data)}else if(e.data.cmd===\"run\"){Module[\"__performance_now_clock_drift\"]=performance.now()-e.data.time;Module[\"__emscripten_thread_init\"](e.data.threadInfoStruct,0,0);var max=e.data.stackBase;var top=e.data.stackBase+e.data.stackSize;Module[\"establishStackSpace\"](top,max);Module[\"_emscripten_tls_init\"]();Module[\"PThread\"].receiveObjectTransfer(e.data);Module[\"PThread\"].setThreadStatus(Module[\"_pthread_self\"](),1);try{var result=Module[\"invokeEntryPoint\"](e.data.start_routine,e.data.arg);if(!Module[\"getNoExitRuntime\"]())Module[\"PThread\"].threadExit(result)}catch(ex){if(ex===\"Canceled!\"){Module[\"PThread\"].threadCancel()}else if(ex!=\"unwind\"){if(ex instanceof Module[\"ExitStatus\"]){if(Module[\"getNoExitRuntime\"]()){}else{Module[\"PThread\"].threadExit(ex.status)}}else{Module[\"PThread\"].threadExit(-2);throw ex}}}}else if(e.data.cmd===\"cancel\"){if(Module[\"_pthread_self\"]()){Module[\"PThread\"].threadCancel()}}else if(e.data.target===\"setimmediate\"){}else if(e.data.cmd===\"processThreadQueue\"){if(Module[\"_pthread_self\"]()){Module[\"_emscripten_current_thread_process_queued_calls\"]()}}else{err(\"worker.js received unknown command \"+e.data.cmd);err(e.data)}}catch(ex){err(\"worker.js onmessage() captured an uncaught exception: \"+ex);if(ex&&ex.stack)err(ex.stack);throw ex}};if(typeof process===\"object\"&&typeof process.versions===\"object\"&&typeof process.versions.node===\"string\"){self={location:{href:__filename}};var onmessage=this.onmessage;var nodeWorkerThreads=require(\"worker_threads\");global.Worker=nodeWorkerThreads.Worker;var parentPort=nodeWorkerThreads.parentPort;parentPort.on(\"message\",function(data){onmessage({data:data})});var nodeFS=require(\"fs\");var nodeRead=function(filename){return nodeFS.readFileSync(filename,\"utf8\")};function globalEval(x){global.require=require;global.Module=Module;eval.call(null,x)}importScripts=function(f){globalEval(nodeRead(f))};postMessage=function(msg){parentPort.postMessage(msg)};if(typeof performance===\"undefined\"){performance={now:function(){return Date.now()}}}}';", null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, "// wrapper to load tfjs in a single place so version can be changed quickly\n\n// simplified\n// { modules: 1061, moduleBytes: 3772720, outputBytes: 1531035 }\n\n// export * from '@tensorflow/tfjs/dist/index.js';\n// export * from '@tensorflow/tfjs-backend-wasm';\n\n// modular\n// { modules: 1064, moduleBytes: 3793219, outputBytes: 1535600 }\n\n// get versions of all packages.\nimport * as packageBundle from '@tensorflow/tfjs/package.json';\nimport * as packageCore from '@tensorflow/tfjs-core/package.json';\nimport * as packageData from '@tensorflow/tfjs-data/package.json';\nimport * as packageLayers from '@tensorflow/tfjs-layers/package.json';\nimport * as packageConverter from '@tensorflow/tfjs-converter/package.json';\n// for backends, get version from source so it can register backend during import\nimport { version_cpu } from '@tensorflow/tfjs-backend-cpu/dist/index.js';\nimport { version_webgl } from '@tensorflow/tfjs-backend-webgl/dist/index.js';\nimport { version_wasm } from '@tensorflow/tfjs-backend-wasm/dist/index.js';\n\n// export all\nexport * from '@tensorflow/tfjs-core/dist/index.js';\nexport * from '@tensorflow/tfjs-layers/dist/index.js';\nexport * from '@tensorflow/tfjs-converter/dist/index.js';\nexport * as data from '@tensorflow/tfjs-data/dist/index.js';\nexport * from '@tensorflow/tfjs-backend-cpu/dist/index.js';\nexport * from '@tensorflow/tfjs-backend-webgl/dist/index.js';\nexport * from '@tensorflow/tfjs-backend-wasm/dist/index.js';\n\n// export versions\nexport const version = {\n tfjs: packageBundle.version,\n 'tfjs-core': packageCore.version,\n 'tfjs-data': packageData.version,\n 'tfjs-layers': packageLayers.version,\n 'tfjs-converter': packageConverter.version,\n 'tfjs-backend-cpu': version_cpu,\n 'tfjs-backend-webgl': version_webgl,\n 'tfjs-backend-wasm': version_wasm,\n};\n", "import { log } from '../helpers';\nimport * as tf from '../../dist/tfjs.esm.js';\n\nexport const config = {\n name: 'humangl',\n priority: 99,\n canvas: null,\n gl: null,\n width: 1024,\n height: 1024,\n webGLattr: { // https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.2\n alpha: false,\n antialias: false,\n premultipliedAlpha: false,\n preserveDrawingBuffer: false,\n depth: false,\n stencil: false,\n failIfMajorPerformanceCaveat: false,\n desynchronized: true,\n },\n};\n\nexport function register(): void {\n if (!tf.findBackend(config.name)) {\n log('backend registration:', config.name);\n try {\n // @ts-ignore\n config.canvas = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(config.width, config.height) : document.createElement('canvas');\n } catch (err) {\n log('error: cannot create canvas:', err);\n return;\n }\n try {\n // @ts-ignore\n config.gl = config.canvas.getContext('webgl2', config.webGLattr);\n } catch (err) {\n log('error: cannot get WebGL2 context:', err);\n return;\n }\n try {\n tf.setWebGLContext(2, config.gl);\n } catch (err) {\n log('error: cannot set WebGL2 context:', err);\n return;\n }\n try {\n const ctx = new tf.GPGPUContext(config.gl);\n tf.registerBackend(config.name, () => new tf.MathBackendWebGL(ctx), config.priority);\n } catch (err) {\n log('error: cannot register WebGL backend:', err);\n return;\n }\n try {\n const kernels = tf.getKernelsForBackend('webgl');\n kernels.forEach((kernelConfig) => {\n const newKernelConfig = { ...kernelConfig, backendName: config.name };\n tf.registerKernel(newKernelConfig);\n });\n } catch (err) {\n log('error: cannot update WebGL backend registration:', err);\n return;\n }\n try {\n tf.ENV.set('WEBGL_VERSION', 2);\n // @ts-ignore\n // tf.ENV.set('WEBGL_MAX_TEXTURE_SIZE', config.gl.getParameter(config.gl.MAX_TEXTURE_SIZE));\n // tf.ENV.set('WEBGL_FORCE_F16_TEXTURES', true);\n // tf.ENV.set('WEBGL_PACK_DEPTHWISECONV', true);\n } catch (err) {\n log('error: cannot set WebGL backend flags:', err);\n return;\n }\n log('backend registered:', config.name);\n }\n}\n", "import { log } from '../helpers';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile';\n\nlet model;\nlet last = { age: 0 };\nlet skipped = Number.MAX_SAFE_INTEGER;\n\nexport async function load(config) {\n if (!model) {\n model = await tf.loadGraphModel(config.face.age.modelPath);\n if (config.debug) log(`load model: ${config.face.age.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return model;\n}\n\nexport async function predict(image, config) {\n if (!model) return null;\n if ((skipped < config.face.age.skipFrames) && config.videoOptimized && last.age && (last.age > 0)) {\n skipped++;\n return last;\n }\n if (config.videoOptimized) skipped = 0;\n else skipped = Number.MAX_SAFE_INTEGER;\n return new Promise(async (resolve) => {\n const resize = tf.image.resizeBilinear(image, [model.inputs[0].shape[2], model.inputs[0].shape[1]], false);\n const enhance = tf.mul(resize, [255.0]);\n tf.dispose(resize);\n\n let ageT;\n const obj = { age: 0 };\n\n if (!config.profile) {\n if (config.face.age.enabled) ageT = await model.predict(enhance);\n } else {\n const profileAge = config.face.age.enabled ? await tf.profile(() => model.predict(enhance)) : {};\n ageT = profileAge.result.clone();\n profileAge.result.dispose();\n profile.run('age', profileAge);\n }\n enhance.dispose();\n\n if (ageT) {\n const data = ageT.dataSync();\n obj.age = Math.trunc(10 * data[0]) / 10;\n }\n ageT.dispose();\n\n last = obj;\n resolve(obj);\n });\n}\n", "import { log } from './helpers';\n\nexport const data = {};\n\nexport function run(name: string, raw: any): void {\n if (!raw || !raw.kernels) return;\n const maxResults = 5;\n const time = raw.kernels\n .filter((a) => a.kernelTimeMs > 0)\n .reduce((a, b) => a += b.kernelTimeMs, 0);\n const slowest = raw.kernels\n .map((a, i) => { a.id = i; return a; })\n .filter((a) => a.kernelTimeMs > 0)\n .sort((a, b) => b.kernelTimeMs - a.kernelTimeMs);\n const largest = raw.kernels\n .map((a, i) => { a.id = i; return a; })\n .filter((a) => a.totalBytesSnapshot > 0)\n .sort((a, b) => b.totalBytesSnapshot - a.totalBytesSnapshot);\n if (slowest.length > maxResults) slowest.length = maxResults;\n if (largest.length > maxResults) largest.length = maxResults;\n const res = { newBytes: raw.newBytes, newTensors: raw.newTensors, peakBytes: raw.peakBytes, numKernelOps: raw.kernels.length, timeKernelOps: time, slowestKernelOps: slowest, largestKernelOps: largest };\n data[name] = res;\n log('Human profiler', name, res);\n}\n", "import { log } from '../helpers';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile';\n\nlet model;\nlet last = { gender: '' };\nlet skipped = Number.MAX_SAFE_INTEGER;\nlet alternative = false;\n\n// tuning values\nconst rgb = [0.2989, 0.5870, 0.1140]; // factors for red/green/blue colors when converting to grayscale\n\nexport async function load(config) {\n if (!model) {\n model = await tf.loadGraphModel(config.face.gender.modelPath);\n alternative = model.inputs[0].shape[3] === 1;\n if (config.debug) log(`load model: ${config.face.gender.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return model;\n}\n\nexport async function predict(image, config) {\n if (!model) return null;\n if ((skipped < config.face.gender.skipFrames) && config.videoOptimized && last.gender !== '') {\n skipped++;\n return last;\n }\n if (config.videoOptimized) skipped = 0;\n else skipped = Number.MAX_SAFE_INTEGER;\n return new Promise(async (resolve) => {\n const resize = tf.image.resizeBilinear(image, [model.inputs[0].shape[2], model.inputs[0].shape[1]], false);\n let enhance;\n if (alternative) {\n enhance = tf.tidy(() => {\n const [red, green, blue] = tf.split(resize, 3, 3);\n const redNorm = tf.mul(red, rgb[0]);\n const greenNorm = tf.mul(green, rgb[1]);\n const blueNorm = tf.mul(blue, rgb[2]);\n const grayscale = tf.addN([redNorm, greenNorm, blueNorm]);\n const normalize = grayscale.sub(0.5).mul(2); // range grayscale:-1..1\n return normalize;\n });\n } else {\n enhance = tf.mul(resize, [255.0]); // range RGB:0..255\n }\n tf.dispose(resize);\n\n let genderT;\n const obj = { gender: '', confidence: 0 };\n\n if (!config.profile) {\n if (config.face.gender.enabled) genderT = await model.predict(enhance);\n } else {\n const profileGender = config.face.gender.enabled ? await tf.profile(() => model.predict(enhance)) : {};\n genderT = profileGender.result.clone();\n profileGender.result.dispose();\n profile.run('gender', profileGender);\n }\n enhance.dispose();\n\n if (genderT) {\n if (!Array.isArray(genderT)) {\n const data = genderT.dataSync();\n if (alternative) {\n // returns two values 0..1, bigger one is prediction\n if (data[0] > config.face.gender.minConfidence || data[1] > config.face.gender.minConfidence) {\n obj.gender = data[0] > data[1] ? 'female' : 'male';\n obj.confidence = data[0] > data[1] ? (Math.trunc(100 * data[0]) / 100) : (Math.trunc(100 * data[1]) / 100);\n }\n } else {\n // returns one value 0..1, .5 is prediction threshold\n const confidence = Math.trunc(200 * Math.abs((data[0] - 0.5))) / 100;\n if (confidence > config.face.gender.minConfidence) {\n obj.gender = data[0] <= 0.5 ? 'female' : 'male';\n obj.confidence = Math.min(0.99, confidence);\n }\n }\n genderT.dispose();\n } else {\n const gender = genderT[0].dataSync();\n const confidence = Math.trunc(200 * Math.abs((gender[0] - 0.5))) / 100;\n if (confidence > config.face.gender.minConfidence) {\n obj.gender = gender[0] <= 0.5 ? 'female' : 'male';\n obj.confidence = Math.min(0.99, confidence);\n }\n /*\n let age = genderT[1].argMax(1).dataSync()[0];\n const all = genderT[1].dataSync();\n age = Math.round(all[age - 1] > all[age + 1] ? 10 * age - 100 * all[age - 1] : 10 * age + 100 * all[age + 1]) / 10;\n const descriptor = genderT[1].dataSync();\n */\n genderT.forEach((t) => tf.dispose(t));\n }\n }\n last = obj;\n resolve(obj);\n });\n}\n", "import { log } from '../helpers';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile';\n\nconst annotations = ['angry', 'disgust', 'fear', 'happy', 'sad', 'surprise', 'neutral'];\nlet model;\nlet last: Array<{ score: number, emotion: string }> = [];\nlet skipped = Number.MAX_SAFE_INTEGER;\n\n// tuning values\nconst rgb = [0.2989, 0.5870, 0.1140]; // factors for red/green/blue colors when converting to grayscale\n\nexport async function load(config) {\n if (!model) {\n model = await tf.loadGraphModel(config.face.emotion.modelPath);\n if (config.debug) log(`load model: ${config.face.emotion.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return model;\n}\n\nexport async function predict(image, config) {\n if (!model) return null;\n if ((skipped < config.face.emotion.skipFrames) && config.videoOptimized && (last.length > 0)) {\n skipped++;\n return last;\n }\n if (config.videoOptimized) skipped = 0;\n else skipped = Number.MAX_SAFE_INTEGER;\n return new Promise(async (resolve) => {\n const resize = tf.image.resizeBilinear(image, [model.inputs[0].shape[2], model.inputs[0].shape[1]], false);\n const [red, green, blue] = tf.split(resize, 3, 3);\n resize.dispose();\n // weighted rgb to grayscale: https://www.mathworks.com/help/matlab/ref/rgb2gray.html\n const redNorm = tf.mul(red, rgb[0]);\n const greenNorm = tf.mul(green, rgb[1]);\n const blueNorm = tf.mul(blue, rgb[2]);\n red.dispose();\n green.dispose();\n blue.dispose();\n const grayscale = tf.addN([redNorm, greenNorm, blueNorm]);\n redNorm.dispose();\n greenNorm.dispose();\n blueNorm.dispose();\n const normalize = tf.tidy(() => grayscale.sub(0.5).mul(2));\n grayscale.dispose();\n const obj: Array<{ score: number, emotion: string }> = [];\n if (config.face.emotion.enabled) {\n let data;\n if (!config.profile) {\n const emotionT = await model.predict(normalize); // result is already in range 0..1, no need for additional activation\n data = emotionT.dataSync();\n tf.dispose(emotionT);\n } else {\n const profileData = await tf.profile(() => model.predict(normalize));\n data = profileData.result.dataSync();\n profileData.result.dispose();\n profile.run('emotion', profileData);\n }\n for (let i = 0; i < data.length; i++) {\n if (data[i] > config.face.emotion.minConfidence) obj.push({ score: Math.min(0.99, Math.trunc(100 * data[i]) / 100), emotion: annotations[i] });\n }\n obj.sort((a, b) => b.score - a.score);\n }\n normalize.dispose();\n last = obj;\n resolve(obj);\n });\n}\n", "import { log } from '../helpers';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile';\n\ntype Tensor = typeof tf.Tensor;\ntype DB = Array<{ name: string, source: string, embedding: number[] }>;\nlet model;\n\nexport async function load(config) {\n if (!model) {\n model = await tf.loadGraphModel(config.face.embedding.modelPath);\n if (config.debug) log(`load model: ${config.face.embedding.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return model;\n}\n\nexport function similarity(embedding1, embedding2, order = 2): number {\n if (!embedding1 || !embedding2) return 0;\n if (embedding1?.length === 0 || embedding2?.length === 0) return 0;\n if (embedding1?.length !== embedding2?.length) return 0;\n // general minkowski distance, euclidean distance is limited case where order is 2\n const distance = embedding1\n .map((val, i) => (Math.abs(embedding1[i] - embedding2[i]) ** order)) // distance squared\n .reduce((sum, now) => (sum + now), 0) // sum all distances\n ** (1 / order); // get root of\n const res = Math.max(Math.trunc(1000 * (1 - distance)) / 1000, 0);\n return res;\n}\n\nexport function match(embedding: Array, db: DB, threshold = 0) {\n let best = { similarity: 0, name: '', source: '', embedding: [] as number[] };\n if (!embedding || !db || !Array.isArray(embedding) || !Array.isArray(db)) return best;\n for (const f of db) {\n if (f.embedding && f.name) {\n const perc = similarity(embedding, f.embedding);\n if (perc > threshold && perc > best.similarity) best = { ...f, similarity: perc };\n }\n }\n return best;\n}\n\nexport function enhance(input): Tensor {\n const image = tf.tidy(() => {\n // input received from detector is already normalized to 0..1\n // input is also assumed to be straightened\n // const data = tf.image.resizeBilinear(input, [model.inputs[0].shape[2], model.inputs[0].shape[1]], false); // just resize to fit the embedding model\n // do a tight crop of image and resize it to fit the model\n const box = [[0.05, 0.15, 0.85, 0.85]]; // empyrical values for top, left, bottom, right\n const tensor = input.image || input.tensor;\n if (!(tensor instanceof tf.Tensor)) return null;\n const crop = (tensor.shape.length === 3)\n ? tf.image.cropAndResize(tf.expandDims(tensor, 0), box, [0], [model.inputs[0].shape[2], model.inputs[0].shape[1]]) // add batch dimension if missing\n : tf.image.cropAndResize(tensor, box, [0], [model.inputs[0].shape[2], model.inputs[0].shape[1]]);\n\n // convert to black&white to avoid colorization impact\n const rgb = [0.2989, 0.5870, 0.1140]; // factors for red/green/blue colors when converting to grayscale: https://www.mathworks.com/help/matlab/ref/rgb2gray.html\n const [red, green, blue] = tf.split(crop, 3, 3);\n const redNorm = tf.mul(red, rgb[0]);\n const greenNorm = tf.mul(green, rgb[1]);\n const blueNorm = tf.mul(blue, rgb[2]);\n const grayscale = tf.addN([redNorm, greenNorm, blueNorm]);\n const merge = tf.stack([grayscale, grayscale, grayscale], 3).squeeze(4);\n\n /*\n // optional increase image contrast\n // or do it per-channel so mean is done on each channel\n // or do it based on histogram\n const mean = merge.mean();\n const factor = 5;\n const contrast = merge.sub(mean).mul(factor).add(mean);\n */\n\n // normalize brightness from 0..1\n const darken = merge.sub(merge.min());\n const lighten = darken.div(darken.max());\n\n return lighten;\n });\n return image;\n}\n\nexport async function predict(input, config): Promise {\n if (!model) return [];\n return new Promise(async (resolve) => {\n // let data: Array<[]> = [];\n let data: Array = [];\n if (config.face.embedding.enabled) {\n const image = enhance(input);\n if (!config.profile) {\n data = tf.tidy(() => {\n /*\n // if needed convert from NHWC to NCHW\n const nchw = image.transpose([3, 0, 1, 2]);\n */\n\n const res = model.predict(image);\n\n /*\n // optionally do it twice with flipped image and average results\n const res1 = model.predict(image);\n const flipped = tf.image.flipLeftRight(image);\n const res2 = model.predict(flipped);\n const merge = tf.stack([res1, res2], 2).squeeze();\n const res = reshape.logSumExp(1);\n */\n\n /*\n // optional normalize outputs with l2 normalization\n const scaled = tf.tidy(() => {\n const l2 = res.norm('euclidean');\n const scale = res.div(l2);\n return scale;\n });\n */\n\n // optional reduce feature vector complexity\n const reshape = res.reshape([128, 2]); // split 256 vectors into 128 x 2\n const reduce = reshape.logSumExp(1); // reduce 2nd dimension by calculating logSumExp on it\n\n const output: Array = reduce.dataSync();\n return [...output]; // convert typed array to simple array\n });\n } else {\n const profileData = await tf.profile(() => model.predict({ img_inputs: image }));\n data = [...profileData.result.dataSync()];\n profileData.result.dispose();\n profile.run('emotion', profileData);\n }\n tf.dispose(image);\n }\n resolve(data);\n });\n}\n\n/*\ngit clone https://github.com/becauseofAI/MobileFace\ncd MobileFace/MobileFace_Identification\nmmconvert --srcFramework mxnet --inputWeight MobileFace_Identification_V3-0000.params --inputNetwork MobileFace_Identification_V3-symbol.json --inputShape 3,112,112 --dstFramework tensorflow --outputModel saved\nsaved_model_cli show --dir saved/\ntensorflowjs_converter --input_format tf_saved_model --output_format tfjs_graph_model --saved_model_tags train saved/ graph/\n~/dev/detector/signature.js graph/\n2021-03-12 08:25:12 DATA: created on: 2021-03-12T13:17:11.960Z\n2021-03-12 08:25:12 INFO: graph model: /home/vlado/dev/face/MobileFace/MobileFace_Identification/graph/model.json\n2021-03-12 08:25:12 INFO: size: { unreliable: true, numTensors: 75, numDataBuffers: 75, numBytes: 2183192 }\n2021-03-12 08:25:12 INFO: model inputs based on signature\n2021-03-12 08:25:12 INFO: model outputs based on signature\n2021-03-12 08:25:12 DATA: inputs: [ { name: 'data:0', dtype: 'DT_FLOAT', shape: [ -1, 112, 112, 3, [length]: 4 ] }, [length]: 1 ]\n2021-03-12 08:25:12 DATA: outputs: [ { id: 0, name: 'batchnorm0/add_1:0', dytpe: 'DT_FLOAT', shape: [ -1, 256, [length]: 2 ] }, [length]: 1 ]\n*/\n", "import { log } from '../helpers';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile';\n\nlet model;\nlet last = { age: 0 };\nlet skipped = Number.MAX_SAFE_INTEGER;\n\ntype Tensor = typeof tf.Tensor;\ntype DB = Array<{ name: string, source: string, embedding: number[] }>;\n\nexport async function load(config) {\n if (!model) {\n model = await tf.loadGraphModel(config.face.description.modelPath);\n if (config.debug) log(`load model: ${config.face.description.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return model;\n}\n\nexport function similarity(embedding1, embedding2, order = 2): number {\n if (!embedding1 || !embedding2) return 0;\n if (embedding1?.length === 0 || embedding2?.length === 0) return 0;\n if (embedding1?.length !== embedding2?.length) return 0;\n // general minkowski distance, euclidean distance is limited case where order is 2\n const distance = 4.0 * embedding1\n .map((val, i) => (Math.abs(embedding1[i] - embedding2[i]) ** order)) // distance squared\n .reduce((sum, now) => (sum + now), 0) // sum all distances\n ** (1 / order); // get root of\n const res = Math.max(0, 100 - distance) / 100.0;\n return res;\n}\n\nexport function match(embedding: Array, db: DB, threshold = 0) {\n let best = { similarity: 0, name: '', source: '', embedding: [] as number[] };\n if (!embedding || !db || !Array.isArray(embedding) || !Array.isArray(db)) return best;\n for (const f of db) {\n if (f.embedding && f.name) {\n const perc = similarity(embedding, f.embedding);\n if (perc > threshold && perc > best.similarity) best = { ...f, similarity: perc };\n }\n }\n return best;\n}\n\nexport function enhance(input): Tensor {\n const image = tf.tidy(() => {\n // input received from detector is already normalized to 0..1\n // input is also assumed to be straightened\n const tensor = input.image || input.tensor || input;\n if (!(tensor instanceof tf.Tensor)) return null;\n // do a tight crop of image and resize it to fit the model\n const box = [[0.05, 0.15, 0.85, 0.85]]; // empyrical values for top, left, bottom, right\n const crop = (tensor.shape.length === 3)\n ? tf.image.cropAndResize(tf.expandDims(tensor, 0), box, [0], [model.inputs[0].shape[2], model.inputs[0].shape[1]]) // add batch dimension if missing\n : tf.image.cropAndResize(tensor, box, [0], [model.inputs[0].shape[2], model.inputs[0].shape[1]]);\n // const crop = tf.image.resizeBilinear(tensor, [model.inputs[0].shape[2], model.inputs[0].shape[1]], false); // just resize to fit the embedding model\n\n /*\n // convert to black&white to avoid colorization impact\n const rgb = [0.2989, 0.5870, 0.1140]; // factors for red/green/blue colors when converting to grayscale: https://www.mathworks.com/help/matlab/ref/rgb2gray.html\n const [red, green, blue] = tf.split(crop, 3, 3);\n const redNorm = tf.mul(red, rgb[0]);\n const greenNorm = tf.mul(green, rgb[1]);\n const blueNorm = tf.mul(blue, rgb[2]);\n const grayscale = tf.addN([redNorm, greenNorm, blueNorm]);\n const merge = tf.stack([grayscale, grayscale, grayscale], 3).squeeze(4);\n */\n\n /*\n // optional increase image contrast\n // or do it per-channel so mean is done on each channel\n // or do it based on histogram\n const mean = merge.mean();\n const factor = 5;\n const contrast = merge.sub(mean).mul(factor).add(mean);\n */\n /*\n // normalize brightness from 0..1\n const darken = crop.sub(crop.min());\n const lighten = darken.div(darken.max());\n */\n const norm = crop.mul(255);\n\n return norm;\n });\n return image;\n}\n\nexport async function predict(image, config) {\n if (!model) return null;\n if ((skipped < config.face.description.skipFrames) && config.videoOptimized && last.age && (last.age > 0)) {\n skipped++;\n return last;\n }\n if (config.videoOptimized) skipped = 0;\n else skipped = Number.MAX_SAFE_INTEGER;\n return new Promise(async (resolve) => {\n // const resize = tf.image.resizeBilinear(image, [model.inputs[0].shape[2], model.inputs[0].shape[1]], false);\n // const enhanced = tf.mul(resize, [255.0]);\n // tf.dispose(resize);\n const enhanced = enhance(image);\n\n let resT;\n const obj = {\n age: 0,\n gender: 'unknown',\n genderConfidence: 0,\n descriptor: [] };\n\n if (!config.profile) {\n if (config.face.description.enabled) resT = await model.predict(enhanced);\n } else {\n const profileAge = config.face.description.enabled ? await tf.profile(() => model.predict(enhanced)) : {};\n resT = profileAge.result.clone();\n profileAge.result.dispose();\n profile.run('age', profileAge);\n }\n tf.dispose(enhanced);\n\n if (resT) {\n tf.tidy(() => {\n const gender = resT.find((t) => t.shape[1] === 1).dataSync();\n const confidence = Math.trunc(200 * Math.abs((gender[0] - 0.5))) / 100;\n if (confidence > config.face.gender.minConfidence) {\n obj.gender = gender[0] <= 0.5 ? 'female' : 'male';\n obj.genderConfidence = Math.min(0.99, confidence);\n }\n const age = resT.find((t) => t.shape[1] === 100).argMax(1).dataSync()[0];\n const all = resT.find((t) => t.shape[1] === 100).dataSync();\n obj.age = Math.round(all[age - 1] > all[age + 1] ? 10 * age - 100 * all[age - 1] : 10 * age + 100 * all[age + 1]) / 10;\n\n const desc = resT.find((t) => t.shape[1] === 1024);\n // const reshape = desc.reshape([128, 8]);\n // const reduce = reshape.logSumExp(1); // reduce 2nd dimension by calculating logSumExp on it\n\n obj.descriptor = [...desc.dataSync()];\n });\n resT.forEach((t) => tf.dispose(t));\n }\n\n last = obj;\n resolve(obj);\n });\n}\n", "import { log, now } from './helpers';\nimport * as tf from '../dist/tfjs.esm.js';\nimport * as age from './age/age';\nimport * as gender from './gender/gender';\nimport * as emotion from './emotion/emotion';\nimport * as embedding from './embedding/embedding';\nimport * as faceres from './faceres/faceres';\n\ntype Tensor = typeof tf.Tensor;\n\nconst calculateFaceAngle = (mesh): { roll: number | null, yaw: number | null, pitch: number | null } => {\n if (!mesh || mesh.length < 300) return { roll: null, yaw: null, pitch: null };\n const radians = (a1, a2, b1, b2) => Math.atan2(b2 - a2, b1 - a1);\n // eslint-disable-next-line no-unused-vars, @typescript-eslint/no-unused-vars\n const degrees = (theta) => Math.abs(((theta * 180) / Math.PI) % 360);\n const angle = {\n // values are in radians in range of -pi/2 to pi/2 which is -90 to +90 degrees\n // value of 0 means center\n // roll is face lean left/right\n roll: radians(mesh[33][0], mesh[33][1], mesh[263][0], mesh[263][1]), // looking at x,y of outside corners of leftEye and rightEye\n // yaw is face turn left/right\n yaw: radians(mesh[33][0], mesh[33][2], mesh[263][0], mesh[263][2]), // looking at x,z of outside corners of leftEye and rightEye\n // pitch is face move up/down\n pitch: radians(mesh[10][1], mesh[10][2], mesh[152][1], mesh[152][2]), // looking at y,z of top and bottom points of the face\n };\n return angle;\n};\n\nexport const detectFace = async (parent, input): Promise => {\n // run facemesh, includes blazeface and iris\n // eslint-disable-next-line no-async-promise-executor\n let timeStamp;\n let ageRes;\n let genderRes;\n let emotionRes;\n let embeddingRes;\n let descRes;\n const faceRes: Array<{\n confidence: number,\n boxConfidence: number,\n faceConfidence: number,\n box: [number, number, number, number],\n mesh: Array<[number, number, number]>\n meshRaw: Array<[number, number, number]>\n boxRaw: [number, number, number, number],\n annotations: Array<{ part: string, points: Array<[number, number, number]>[] }>,\n age: number,\n gender: string,\n genderConfidence: number,\n emotion: string,\n embedding: number[],\n iris: number,\n angle: { roll: number | null, yaw: number | null, pitch: number | null },\n tensor: Tensor,\n }> = [];\n parent.state = 'run:face';\n timeStamp = now();\n const faces = await parent.models.face?.estimateFaces(input, parent.config);\n parent.perf.face = Math.trunc(now() - timeStamp);\n if (!faces) return [];\n for (const face of faces) {\n parent.analyze('Get Face');\n\n // is something went wrong, skip the face\n if (!face.image || face.image.isDisposedInternal) {\n log('Face object is disposed:', face.image);\n continue;\n }\n\n const angle = calculateFaceAngle(face.mesh);\n\n // run age, inherits face from blazeface\n parent.analyze('Start Age:');\n if (parent.config.async) {\n ageRes = parent.config.face.age.enabled ? age.predict(face.image, parent.config) : {};\n } else {\n parent.state = 'run:age';\n timeStamp = now();\n ageRes = parent.config.face.age.enabled ? await age.predict(face.image, parent.config) : {};\n parent.perf.age = Math.trunc(now() - timeStamp);\n }\n\n // run gender, inherits face from blazeface\n parent.analyze('Start Gender:');\n if (parent.config.async) {\n genderRes = parent.config.face.gender.enabled ? gender.predict(face.image, parent.config) : {};\n } else {\n parent.state = 'run:gender';\n timeStamp = now();\n genderRes = parent.config.face.gender.enabled ? await gender.predict(face.image, parent.config) : {};\n parent.perf.gender = Math.trunc(now() - timeStamp);\n }\n\n // run emotion, inherits face from blazeface\n parent.analyze('Start Emotion:');\n if (parent.config.async) {\n emotionRes = parent.config.face.emotion.enabled ? emotion.predict(face.image, parent.config) : {};\n } else {\n parent.state = 'run:emotion';\n timeStamp = now();\n emotionRes = parent.config.face.emotion.enabled ? await emotion.predict(face.image, parent.config) : {};\n parent.perf.emotion = Math.trunc(now() - timeStamp);\n }\n parent.analyze('End Emotion:');\n\n // run emotion, inherits face from blazeface\n parent.analyze('Start Embedding:');\n if (parent.config.async) {\n embeddingRes = parent.config.face.embedding.enabled ? embedding.predict(face, parent.config) : [];\n } else {\n parent.state = 'run:embedding';\n timeStamp = now();\n embeddingRes = parent.config.face.embedding.enabled ? await embedding.predict(face, parent.config) : [];\n parent.perf.embedding = Math.trunc(now() - timeStamp);\n }\n parent.analyze('End Embedding:');\n\n // run emotion, inherits face from blazeface\n parent.analyze('Start Description:');\n if (parent.config.async) {\n descRes = parent.config.face.description.enabled ? faceres.predict(face, parent.config) : [];\n } else {\n parent.state = 'run:description';\n timeStamp = now();\n descRes = parent.config.face.description.enabled ? await faceres.predict(face.image, parent.config) : [];\n parent.perf.embedding = Math.trunc(now() - timeStamp);\n }\n parent.analyze('End Description:');\n\n // if async wait for results\n if (parent.config.async) {\n [ageRes, genderRes, emotionRes, embeddingRes, descRes] = await Promise.all([ageRes, genderRes, emotionRes, embeddingRes, descRes]);\n }\n\n parent.analyze('Finish Face:');\n\n // calculate iris distance\n // iris: array[ center, left, top, right, bottom]\n if (!parent.config.face.iris.enabled && face?.annotations?.leftEyeIris && face?.annotations?.rightEyeIris) {\n delete face.annotations.leftEyeIris;\n delete face.annotations.rightEyeIris;\n }\n const irisSize = (face.annotations?.leftEyeIris && face.annotations?.rightEyeIris)\n /* average human iris size is 11.7mm */\n ? 11.7 * Math.max(Math.abs(face.annotations.leftEyeIris[3][0] - face.annotations.leftEyeIris[1][0]), Math.abs(face.annotations.rightEyeIris[4][1] - face.annotations.rightEyeIris[2][1]))\n : 0;\n\n // combine results\n faceRes.push({\n ...face,\n age: descRes.age || ageRes.age,\n gender: descRes.gender || genderRes.gender,\n genderConfidence: descRes.genderConfidence || genderRes.confidence,\n embedding: descRes.descriptor || embeddingRes,\n emotion: emotionRes,\n iris: (irisSize !== 0) ? Math.trunc(irisSize) / 100 : 0,\n angle,\n tensor: parent.config.face.detector.return ? face.image?.squeeze() : null,\n });\n // dispose original face tensor\n face.image?.dispose();\n\n parent.analyze('End Face');\n }\n parent.analyze('End FaceMesh:');\n if (parent.config.async) {\n if (parent.perf.face) delete parent.perf.face;\n if (parent.perf.age) delete parent.perf.age;\n if (parent.perf.gender) delete parent.perf.gender;\n if (parent.perf.emotion) delete parent.perf.emotion;\n }\n return faceRes;\n};\n", "import { log } from '../helpers';\nimport * as tf from '../../dist/tfjs.esm.js';\n\nconst NUM_LANDMARKS = 6;\n\nfunction generateAnchors(inputSize) {\n const spec = { strides: [inputSize / 16, inputSize / 8], anchors: [2, 6] };\n const anchors: Array<[number, number]> = [];\n for (let i = 0; i < spec.strides.length; i++) {\n const stride = spec.strides[i];\n const gridRows = Math.floor((inputSize + stride - 1) / stride);\n const gridCols = Math.floor((inputSize + stride - 1) / stride);\n const anchorsNum = spec.anchors[i];\n for (let gridY = 0; gridY < gridRows; gridY++) {\n const anchorY = stride * (gridY + 0.5);\n for (let gridX = 0; gridX < gridCols; gridX++) {\n const anchorX = stride * (gridX + 0.5);\n for (let n = 0; n < anchorsNum; n++) {\n anchors.push([anchorX, anchorY]);\n }\n }\n }\n }\n return anchors;\n}\n\nexport const disposeBox = (box) => {\n box.startEndTensor.dispose();\n box.startPoint.dispose();\n box.endPoint.dispose();\n};\n\nconst createBox = (startEndTensor) => ({\n startEndTensor,\n startPoint: tf.slice(startEndTensor, [0, 0], [-1, 2]),\n endPoint: tf.slice(startEndTensor, [0, 2], [-1, 2]),\n});\n\nfunction decodeBounds(boxOutputs, anchors, inputSize) {\n const boxStarts = tf.slice(boxOutputs, [0, 1], [-1, 2]);\n const centers = tf.add(boxStarts, anchors);\n const boxSizes = tf.slice(boxOutputs, [0, 3], [-1, 2]);\n const boxSizesNormalized = tf.div(boxSizes, inputSize);\n const centersNormalized = tf.div(centers, inputSize);\n const halfBoxSize = tf.div(boxSizesNormalized, 2);\n const starts = tf.sub(centersNormalized, halfBoxSize);\n const ends = tf.add(centersNormalized, halfBoxSize);\n const startNormalized = tf.mul(starts, inputSize);\n const endNormalized = tf.mul(ends, inputSize);\n const concatAxis = 1;\n return tf.concat2d([startNormalized, endNormalized], concatAxis);\n}\n\nexport class BlazeFaceModel {\n model: any;\n anchorsData: any;\n anchors: any;\n inputSize: number;\n config: any;\n\n constructor(model, config) {\n this.model = model;\n this.anchorsData = generateAnchors(model.inputs[0].shape[1]);\n this.anchors = tf.tensor2d(this.anchorsData);\n this.inputSize = model.inputs[0].shape[2];\n this.config = config;\n }\n\n async getBoundingBoxes(inputImage) {\n // sanity check on input\n if ((!inputImage) || (inputImage.isDisposedInternal) || (inputImage.shape.length !== 4) || (inputImage.shape[1] < 1) || (inputImage.shape[2] < 1)) return null;\n const [batch, boxes, scores] = tf.tidy(() => {\n const resizedImage = inputImage.resizeBilinear([this.inputSize, this.inputSize]);\n // const normalizedImage = tf.mul(tf.sub(resizedImage.div(255), 0.5), 2);\n const normalizedImage = resizedImage.div(127.5).sub(0.5);\n const batchedPrediction = this.model.predict(normalizedImage);\n let batchOut;\n // are we using tfhub or pinto converted model?\n if (Array.isArray(batchedPrediction)) {\n const sorted = batchedPrediction.sort((a, b) => a.size - b.size);\n const concat384 = tf.concat([sorted[0], sorted[2]], 2); // dim: 384, 1 + 16\n const concat512 = tf.concat([sorted[1], sorted[3]], 2); // dim: 512, 1 + 16\n const concat = tf.concat([concat512, concat384], 1);\n batchOut = concat.squeeze(0);\n } else {\n batchOut = batchedPrediction.squeeze(); // when using tfhub model\n }\n const boxesOut = decodeBounds(batchOut, this.anchors, [this.inputSize, this.inputSize]);\n const logits = tf.slice(batchOut, [0, 0], [-1, 1]);\n const scoresOut = tf.sigmoid(logits).squeeze();\n return [batchOut, boxesOut, scoresOut];\n });\n const boxIndicesTensor = await tf.image.nonMaxSuppressionAsync(boxes, scores, this.config.face.detector.maxFaces, this.config.face.detector.iouThreshold, this.config.face.detector.scoreThreshold);\n const boxIndices = boxIndicesTensor.arraySync();\n boxIndicesTensor.dispose();\n const boundingBoxesMap = boxIndices.map((boxIndex) => tf.slice(boxes, [boxIndex, 0], [1, -1]));\n const boundingBoxes = boundingBoxesMap.map((boundingBox) => {\n const vals = boundingBox.arraySync();\n boundingBox.dispose();\n return vals;\n });\n\n const scoresVal = scores.dataSync();\n const annotatedBoxes: Array<{ box: any, landmarks: any, anchor: any, confidence: number }> = [];\n for (let i = 0; i < boundingBoxes.length; i++) {\n const boxIndex = boxIndices[i];\n const confidence = scoresVal[boxIndex];\n if (confidence > this.config.face.detector.minConfidence) {\n const box = createBox(boundingBoxes[i]);\n const anchor = this.anchorsData[boxIndex];\n const landmarks = tf.tidy(() => tf.slice(batch, [boxIndex, NUM_LANDMARKS - 1], [1, -1]).squeeze().reshape([NUM_LANDMARKS, -1]));\n annotatedBoxes.push({ box, landmarks, anchor, confidence });\n }\n }\n batch.dispose();\n boxes.dispose();\n scores.dispose();\n return {\n boxes: annotatedBoxes,\n scaleFactor: [inputImage.shape[2] / this.inputSize, inputImage.shape[1] / this.inputSize],\n };\n }\n}\n\nexport async function load(config) {\n const blazeface = await tf.loadGraphModel(config.face.detector.modelPath, { fromTFHub: config.face.detector.modelPath.includes('tfhub.dev') });\n const model = new BlazeFaceModel(blazeface, config);\n if (config.debug) log(`load model: ${config.face.detector.modelPath.match(/\\/(.*)\\./)[1]}`);\n return model;\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nexport function scaleBoxCoordinates(box, factor) {\n const startPoint = [box.startPoint[0] * factor[0], box.startPoint[1] * factor[1]];\n const endPoint = [box.endPoint[0] * factor[0], box.endPoint[1] * factor[1]];\n return { startPoint, endPoint };\n}\n\nexport function getBoxSize(box) {\n return [\n Math.abs(box.endPoint[0] - box.startPoint[0]),\n Math.abs(box.endPoint[1] - box.startPoint[1]),\n ];\n}\n\nexport function getBoxCenter(box) {\n return [\n box.startPoint[0] + (box.endPoint[0] - box.startPoint[0]) / 2,\n box.startPoint[1] + (box.endPoint[1] - box.startPoint[1]) / 2,\n ];\n}\n\nexport function cutBoxFromImageAndResize(box, image, cropSize) {\n const h = image.shape[1];\n const w = image.shape[2];\n const boxes = [[\n box.startPoint[1] / h,\n box.startPoint[0] / w,\n box.endPoint[1] / h,\n box.endPoint[0] / w,\n ]];\n return tf.image.cropAndResize(image, boxes, [0], cropSize);\n}\n\nexport function enlargeBox(box, factor = 1.5) {\n const center = getBoxCenter(box);\n const size = getBoxSize(box);\n const newHalfSize = [factor * size[0] / 2, factor * size[1] / 2];\n const startPoint = [center[0] - newHalfSize[0], center[1] - newHalfSize[1]];\n const endPoint = [center[0] + newHalfSize[0], center[1] + newHalfSize[1]];\n return { startPoint, endPoint, landmarks: box.landmarks };\n}\n\nexport function squarifyBox(box) {\n const centers = getBoxCenter(box);\n const size = getBoxSize(box);\n const maxEdge = Math.max(...size);\n const halfSize = maxEdge / 2;\n const startPoint = [centers[0] - halfSize, centers[1] - halfSize];\n const endPoint = [centers[0] + halfSize, centers[1] + halfSize];\n return { startPoint, endPoint, landmarks: box.landmarks };\n}\n", "export const IDENTITY_MATRIX = [[1, 0, 0], [0, 1, 0], [0, 0, 1]];\n/**\n * Normalizes the provided angle to the range -pi to pi.\n * @param angle The angle in radians to be normalized.\n */\nexport function normalizeRadians(angle) {\n return angle - 2 * Math.PI * Math.floor((angle + Math.PI) / (2 * Math.PI));\n}\n\n/**\n * Computes the angle of rotation between two anchor points.\n * @param point1 First anchor point\n * @param point2 Second anchor point\n */\nexport function computeRotation(point1, point2) {\n const radians = Math.PI / 2 - Math.atan2(-(point2[1] - point1[1]), point2[0] - point1[0]);\n return normalizeRadians(radians);\n}\n\nexport function radToDegrees(rad) {\n return rad * 180 / Math.PI;\n}\n\nexport function buildTranslationMatrix(x, y) {\n return [[1, 0, x], [0, 1, y], [0, 0, 1]];\n}\n\nexport function dot(v1, v2) {\n let product = 0;\n for (let i = 0; i < v1.length; i++) {\n product += v1[i] * v2[i];\n }\n return product;\n}\n\nexport function getColumnFrom2DArr(arr, columnIndex) {\n const column: Array = [];\n for (let i = 0; i < arr.length; i++) {\n column.push(arr[i][columnIndex]);\n }\n return column;\n}\n\nexport function multiplyTransformMatrices(mat1, mat2) {\n const product: Array = [];\n const size = mat1.length;\n for (let row = 0; row < size; row++) {\n product.push([]);\n for (let col = 0; col < size; col++) {\n product[row].push(dot(mat1[row], getColumnFrom2DArr(mat2, col)));\n }\n }\n return product;\n}\n\nexport function buildRotationMatrix(rotation, center) {\n const cosA = Math.cos(rotation);\n const sinA = Math.sin(rotation);\n const rotationMatrix = [[cosA, -sinA, 0], [sinA, cosA, 0], [0, 0, 1]];\n const translationMatrix = buildTranslationMatrix(center[0], center[1]);\n const translationTimesRotation = multiplyTransformMatrices(translationMatrix, rotationMatrix);\n const negativeTranslationMatrix = buildTranslationMatrix(-center[0], -center[1]);\n return multiplyTransformMatrices(translationTimesRotation, negativeTranslationMatrix);\n}\n\nexport function invertTransformMatrix(matrix) {\n const rotationComponent = [[matrix[0][0], matrix[1][0]], [matrix[0][1], matrix[1][1]]];\n const translationComponent = [matrix[0][2], matrix[1][2]];\n const invertedTranslation = [\n -dot(rotationComponent[0], translationComponent),\n -dot(rotationComponent[1], translationComponent),\n ];\n return [\n rotationComponent[0].concat(invertedTranslation[0]),\n rotationComponent[1].concat(invertedTranslation[1]),\n [0, 0, 1],\n ];\n}\n\nexport function rotatePoint(homogeneousCoordinate, rotationMatrix) {\n return [\n dot(homogeneousCoordinate, rotationMatrix[0]),\n dot(homogeneousCoordinate, rotationMatrix[1]),\n ];\n}\n\nexport function xyDistanceBetweenPoints(a, b) {\n return Math.sqrt(((a[0] - b[0]) ** 2) + ((a[1] - b[1]) ** 2));\n}\n", "export const MESH_ANNOTATIONS = {\n silhouette: [\n 10, 338, 297, 332, 284, 251, 389, 356, 454, 323, 361, 288,\n 397, 365, 379, 378, 400, 377, 152, 148, 176, 149, 150, 136,\n 172, 58, 132, 93, 234, 127, 162, 21, 54, 103, 67, 109,\n ],\n lipsUpperOuter: [61, 185, 40, 39, 37, 0, 267, 269, 270, 409, 291],\n lipsLowerOuter: [146, 91, 181, 84, 17, 314, 405, 321, 375, 291],\n lipsUpperInner: [78, 191, 80, 81, 82, 13, 312, 311, 310, 415, 308],\n lipsLowerInner: [78, 95, 88, 178, 87, 14, 317, 402, 318, 324, 308],\n rightEyeUpper0: [246, 161, 160, 159, 158, 157, 173],\n rightEyeLower0: [33, 7, 163, 144, 145, 153, 154, 155, 133],\n rightEyeUpper1: [247, 30, 29, 27, 28, 56, 190],\n rightEyeLower1: [130, 25, 110, 24, 23, 22, 26, 112, 243],\n rightEyeUpper2: [113, 225, 224, 223, 222, 221, 189],\n rightEyeLower2: [226, 31, 228, 229, 230, 231, 232, 233, 244],\n rightEyeLower3: [143, 111, 117, 118, 119, 120, 121, 128, 245],\n rightEyebrowUpper: [156, 70, 63, 105, 66, 107, 55, 193],\n rightEyebrowLower: [35, 124, 46, 53, 52, 65],\n rightEyeIris: [473, 474, 475, 476, 477],\n leftEyeUpper0: [466, 388, 387, 386, 385, 384, 398],\n leftEyeLower0: [263, 249, 390, 373, 374, 380, 381, 382, 362],\n leftEyeUpper1: [467, 260, 259, 257, 258, 286, 414],\n leftEyeLower1: [359, 255, 339, 254, 253, 252, 256, 341, 463],\n leftEyeUpper2: [342, 445, 444, 443, 442, 441, 413],\n leftEyeLower2: [446, 261, 448, 449, 450, 451, 452, 453, 464],\n leftEyeLower3: [372, 340, 346, 347, 348, 349, 350, 357, 465],\n leftEyebrowUpper: [383, 300, 293, 334, 296, 336, 285, 417],\n leftEyebrowLower: [265, 353, 276, 283, 282, 295],\n leftEyeIris: [468, 469, 470, 471, 472],\n midwayBetweenEyes: [168],\n noseTip: [1],\n noseBottom: [2],\n noseRightCorner: [98],\n noseLeftCorner: [327],\n rightCheek: [205],\n leftCheek: [425],\n};\n\nexport const MESH_TO_IRIS_INDICES_MAP = [ // A mapping from facemesh model keypoints to iris model keypoints.\n { key: 'EyeUpper0', indices: [9, 10, 11, 12, 13, 14, 15] },\n { key: 'EyeUpper1', indices: [25, 26, 27, 28, 29, 30, 31] },\n { key: 'EyeUpper2', indices: [41, 42, 43, 44, 45, 46, 47] },\n { key: 'EyeLower0', indices: [0, 1, 2, 3, 4, 5, 6, 7, 8] },\n { key: 'EyeLower1', indices: [16, 17, 18, 19, 20, 21, 22, 23, 24] },\n { key: 'EyeLower2', indices: [32, 33, 34, 35, 36, 37, 38, 39, 40] },\n { key: 'EyeLower3', indices: [54, 55, 56, 57, 58, 59, 60, 61, 62] },\n // { key: 'EyebrowUpper', indices: [63, 64, 65, 66, 67, 68, 69, 70] },\n // { key: 'EyebrowLower', indices: [48, 49, 50, 51, 52, 53] },\n];\n\nexport const UV468 = [\n [0.499976992607117, 0.652534008026123],\n [0.500025987625122, 0.547487020492554],\n [0.499974012374878, 0.602371990680695],\n [0.482113003730774, 0.471979022026062],\n [0.500150978565216, 0.527155995368958],\n [0.499909996986389, 0.498252987861633],\n [0.499523013830185, 0.40106201171875],\n [0.289712011814117, 0.380764007568359],\n [0.499954998493195, 0.312398016452789],\n [0.499987006187439, 0.269918978214264],\n [0.500023007392883, 0.107050001621246],\n [0.500023007392883, 0.666234016418457],\n [0.5000159740448, 0.679224014282227],\n [0.500023007392883, 0.692348003387451],\n [0.499976992607117, 0.695277988910675],\n [0.499976992607117, 0.70593398809433],\n [0.499976992607117, 0.719385027885437],\n [0.499976992607117, 0.737019002437592],\n [0.499967992305756, 0.781370997428894],\n [0.499816000461578, 0.562981009483337],\n [0.473773002624512, 0.573909997940063],\n [0.104906998574734, 0.254140973091125],\n [0.365929991006851, 0.409575998783112],\n [0.338757991790771, 0.41302502155304],\n [0.311120003461838, 0.409460008144379],\n [0.274657994508743, 0.389131009578705],\n [0.393361985683441, 0.403706014156342],\n [0.345234006643295, 0.344011008739471],\n [0.370094001293182, 0.346076011657715],\n [0.319321990013123, 0.347265005111694],\n [0.297903001308441, 0.353591024875641],\n [0.24779200553894, 0.410809993743896],\n [0.396889001131058, 0.842755019664764],\n [0.280097991228104, 0.375599980354309],\n [0.106310002505779, 0.399955987930298],\n [0.2099249958992, 0.391353011131287],\n [0.355807989835739, 0.534406006336212],\n [0.471751004457474, 0.65040397644043],\n [0.474155008792877, 0.680191993713379],\n [0.439785003662109, 0.657229006290436],\n [0.414617002010345, 0.66654098033905],\n [0.450374007225037, 0.680860996246338],\n [0.428770989179611, 0.682690978050232],\n [0.374971002340317, 0.727805018424988],\n [0.486716985702515, 0.547628998756409],\n [0.485300987958908, 0.527395009994507],\n [0.257764995098114, 0.314490020275116],\n [0.401223003864288, 0.455172002315521],\n [0.429818987846375, 0.548614978790283],\n [0.421351999044418, 0.533740997314453],\n [0.276895999908447, 0.532056987285614],\n [0.483370006084442, 0.499586999416351],\n [0.33721199631691, 0.282882988452911],\n [0.296391993761063, 0.293242990970612],\n [0.169294998049736, 0.193813979625702],\n [0.447580009698868, 0.302609980106354],\n [0.392390012741089, 0.353887975215912],\n [0.354490011930466, 0.696784019470215],\n [0.067304998636246, 0.730105042457581],\n [0.442739009857178, 0.572826027870178],\n [0.457098007202148, 0.584792017936707],\n [0.381974011659622, 0.694710969924927],\n [0.392388999462128, 0.694203019142151],\n [0.277076005935669, 0.271932005882263],\n [0.422551989555359, 0.563233017921448],\n [0.385919004678726, 0.281364023685455],\n [0.383103013038635, 0.255840003490448],\n [0.331431001424789, 0.119714021682739],\n [0.229923993349075, 0.232002973556519],\n [0.364500999450684, 0.189113974571228],\n [0.229622006416321, 0.299540996551514],\n [0.173287004232407, 0.278747975826263],\n [0.472878992557526, 0.666198015213013],\n [0.446828007698059, 0.668527007102966],\n [0.422762006521225, 0.673889994621277],\n [0.445307999849319, 0.580065965652466],\n [0.388103008270264, 0.693961024284363],\n [0.403039008378983, 0.706539988517761],\n [0.403629004955292, 0.693953037261963],\n [0.460041999816895, 0.557139039039612],\n [0.431158006191254, 0.692366003990173],\n [0.452181994915009, 0.692366003990173],\n [0.475387006998062, 0.692366003990173],\n [0.465828001499176, 0.779190003871918],\n [0.472328990697861, 0.736225962638855],\n [0.473087012767792, 0.717857003211975],\n [0.473122000694275, 0.704625964164734],\n [0.473033010959625, 0.695277988910675],\n [0.427942007780075, 0.695277988910675],\n [0.426479011774063, 0.703539967536926],\n [0.423162013292313, 0.711845993995667],\n [0.4183090031147, 0.720062971115112],\n [0.390094995498657, 0.639572978019714],\n [0.013953999616206, 0.560034036636353],\n [0.499913990497589, 0.58014702796936],\n [0.413199990987778, 0.69539999961853],\n [0.409626007080078, 0.701822996139526],\n [0.468080013990402, 0.601534962654114],\n [0.422728985548019, 0.585985004901886],\n [0.463079988956451, 0.593783974647522],\n [0.37211999297142, 0.47341400384903],\n [0.334562003612518, 0.496073007583618],\n [0.411671012639999, 0.546965003013611],\n [0.242175996303558, 0.14767599105835],\n [0.290776997804642, 0.201445996761322],\n [0.327338010072708, 0.256527006626129],\n [0.399509996175766, 0.748921036720276],\n [0.441727995872498, 0.261676013469696],\n [0.429764986038208, 0.187834024429321],\n [0.412198007106781, 0.108901023864746],\n [0.288955003023148, 0.398952007293701],\n [0.218936994671822, 0.435410976409912],\n [0.41278201341629, 0.398970007896423],\n [0.257135003805161, 0.355440020561218],\n [0.427684992551804, 0.437960982322693],\n [0.448339998722076, 0.536936044692993],\n [0.178560003638268, 0.45755398273468],\n [0.247308000922203, 0.457193970680237],\n [0.286267012357712, 0.467674970626831],\n [0.332827985286713, 0.460712015628815],\n [0.368755996227264, 0.447206974029541],\n [0.398963987827301, 0.432654976844788],\n [0.476410001516342, 0.405806005001068],\n [0.189241006970406, 0.523923993110657],\n [0.228962004184723, 0.348950982093811],\n [0.490725994110107, 0.562400996685028],\n [0.404670000076294, 0.485132992267609],\n [0.019469000399113, 0.401564002037048],\n [0.426243007183075, 0.420431017875671],\n [0.396993011236191, 0.548797011375427],\n [0.266469985246658, 0.376977026462555],\n [0.439121007919312, 0.51895797252655],\n [0.032313998788595, 0.644356966018677],\n [0.419054001569748, 0.387154996395111],\n [0.462783008813858, 0.505746960639954],\n [0.238978996872902, 0.779744982719421],\n [0.198220998048782, 0.831938028335571],\n [0.107550002634525, 0.540755033493042],\n [0.183610007166862, 0.740257024765015],\n [0.134409993886948, 0.333683013916016],\n [0.385764002799988, 0.883153975009918],\n [0.490967005491257, 0.579378008842468],\n [0.382384985685349, 0.508572995662689],\n [0.174399003386497, 0.397670984268188],\n [0.318785011768341, 0.39623498916626],\n [0.343364000320435, 0.400596976280212],\n [0.396100014448166, 0.710216999053955],\n [0.187885001301765, 0.588537991046906],\n [0.430987000465393, 0.944064974784851],\n [0.318993002176285, 0.898285031318665],\n [0.266247987747192, 0.869701027870178],\n [0.500023007392883, 0.190576016902924],\n [0.499976992607117, 0.954452991485596],\n [0.366169989109039, 0.398822009563446],\n [0.393207013607025, 0.39553701877594],\n [0.410373002290726, 0.391080021858215],\n [0.194993004202843, 0.342101991176605],\n [0.388664990663528, 0.362284004688263],\n [0.365961998701096, 0.355970978736877],\n [0.343364000320435, 0.355356991291046],\n [0.318785011768341, 0.35834002494812],\n [0.301414996385574, 0.363156020641327],\n [0.058132998645306, 0.319076001644135],\n [0.301414996385574, 0.387449026107788],\n [0.499987989664078, 0.618434011936188],\n [0.415838003158569, 0.624195992946625],\n [0.445681989192963, 0.566076993942261],\n [0.465844005346298, 0.620640993118286],\n [0.49992299079895, 0.351523995399475],\n [0.288718998432159, 0.819945991039276],\n [0.335278987884521, 0.852819979190826],\n [0.440512001514435, 0.902418971061707],\n [0.128294005990028, 0.791940987110138],\n [0.408771991729736, 0.373893976211548],\n [0.455606997013092, 0.451801002025604],\n [0.499877005815506, 0.908990025520325],\n [0.375436991453171, 0.924192011356354],\n [0.11421000212431, 0.615022003650665],\n [0.448662012815475, 0.695277988910675],\n [0.4480200111866, 0.704632043838501],\n [0.447111994028091, 0.715808033943176],\n [0.444831997156143, 0.730794012546539],\n [0.430011987686157, 0.766808986663818],\n [0.406787008047104, 0.685672998428345],\n [0.400738000869751, 0.681069016456604],\n [0.392399996519089, 0.677703022956848],\n [0.367855995893478, 0.663918972015381],\n [0.247923001646996, 0.601333022117615],\n [0.452769994735718, 0.420849978923798],\n [0.43639200925827, 0.359887003898621],\n [0.416164010763168, 0.368713974952698],\n [0.413385987281799, 0.692366003990173],\n [0.228018000721931, 0.683571994304657],\n [0.468268007040024, 0.352671027183533],\n [0.411361992359161, 0.804327011108398],\n [0.499989002943039, 0.469825029373169],\n [0.479153990745544, 0.442654013633728],\n [0.499974012374878, 0.439637005329132],\n [0.432112008333206, 0.493588984012604],\n [0.499886006116867, 0.866917014122009],\n [0.49991300702095, 0.821729004383087],\n [0.456548988819122, 0.819200992584229],\n [0.344549000263214, 0.745438992977142],\n [0.37890899181366, 0.574010014533997],\n [0.374292999505997, 0.780184984207153],\n [0.319687992334366, 0.570737957954407],\n [0.357154995203018, 0.604269981384277],\n [0.295284003019333, 0.621580958366394],\n [0.447750002145767, 0.862477004528046],\n [0.410986006259918, 0.508723020553589],\n [0.31395098567009, 0.775308012962341],\n [0.354128003120422, 0.812552988529205],\n [0.324548006057739, 0.703992962837219],\n [0.189096003770828, 0.646299958229065],\n [0.279776990413666, 0.71465802192688],\n [0.1338230073452, 0.682700991630554],\n [0.336768001317978, 0.644733011722565],\n [0.429883986711502, 0.466521978378296],\n [0.455527991056442, 0.548622965812683],\n [0.437114000320435, 0.558896005153656],\n [0.467287987470627, 0.529924988746643],\n [0.414712011814117, 0.335219979286194],\n [0.37704598903656, 0.322777986526489],\n [0.344107985496521, 0.320150971412659],\n [0.312875986099243, 0.32233202457428],\n [0.283526003360748, 0.333190023899078],\n [0.241245999932289, 0.382785975933075],\n [0.102986000478268, 0.468762993812561],\n [0.267612010240555, 0.424560010433197],\n [0.297879010438919, 0.433175981044769],\n [0.333433985710144, 0.433878004550934],\n [0.366427004337311, 0.426115989685059],\n [0.396012008190155, 0.416696012020111],\n [0.420121014118195, 0.41022801399231],\n [0.007561000064015, 0.480777025222778],\n [0.432949006557465, 0.569517970085144],\n [0.458638995885849, 0.479089021682739],\n [0.473466008901596, 0.545744001865387],\n [0.476087987422943, 0.563830018043518],\n [0.468472003936768, 0.555056989192963],\n [0.433990985155106, 0.582361996173859],\n [0.483518004417419, 0.562983989715576],\n [0.482482999563217, 0.57784903049469],\n [0.42645001411438, 0.389798998832703],\n [0.438998997211456, 0.39649498462677],\n [0.450067013502121, 0.400434017181396],\n [0.289712011814117, 0.368252992630005],\n [0.276670008897781, 0.363372981548309],\n [0.517862021923065, 0.471948027610779],\n [0.710287988185883, 0.380764007568359],\n [0.526226997375488, 0.573909997940063],\n [0.895093023777008, 0.254140973091125],\n [0.634069979190826, 0.409575998783112],\n [0.661242008209229, 0.41302502155304],\n [0.688880026340485, 0.409460008144379],\n [0.725341975688934, 0.389131009578705],\n [0.606630027294159, 0.40370500087738],\n [0.654766023159027, 0.344011008739471],\n [0.629905998706818, 0.346076011657715],\n [0.680678009986877, 0.347265005111694],\n [0.702096998691559, 0.353591024875641],\n [0.75221198797226, 0.410804986953735],\n [0.602918028831482, 0.842862963676453],\n [0.719901978969574, 0.375599980354309],\n [0.893692970275879, 0.399959981441498],\n [0.790081977844238, 0.391354024410248],\n [0.643998026847839, 0.534487962722778],\n [0.528249025344849, 0.65040397644043],\n [0.525849997997284, 0.680191040039062],\n [0.560214996337891, 0.657229006290436],\n [0.585384011268616, 0.66654098033905],\n [0.549625992774963, 0.680860996246338],\n [0.57122802734375, 0.682691991329193],\n [0.624852001667023, 0.72809898853302],\n [0.513050019741058, 0.547281980514526],\n [0.51509702205658, 0.527251958847046],\n [0.742246985435486, 0.314507007598877],\n [0.598631024360657, 0.454979002475739],\n [0.570338010787964, 0.548575043678284],\n [0.578631997108459, 0.533622980117798],\n [0.723087012767792, 0.532054007053375],\n [0.516445994377136, 0.499638974666595],\n [0.662801027297974, 0.282917976379395],\n [0.70362401008606, 0.293271005153656],\n [0.830704987049103, 0.193813979625702],\n [0.552385985851288, 0.302568018436432],\n [0.607609987258911, 0.353887975215912],\n [0.645429015159607, 0.696707010269165],\n [0.932694971561432, 0.730105042457581],\n [0.557260990142822, 0.572826027870178],\n [0.542901992797852, 0.584792017936707],\n [0.6180260181427, 0.694710969924927],\n [0.607590973377228, 0.694203019142151],\n [0.722943007946014, 0.271963000297546],\n [0.577413976192474, 0.563166975975037],\n [0.614082992076874, 0.281386971473694],\n [0.616907000541687, 0.255886018276215],\n [0.668509006500244, 0.119913995265961],\n [0.770092010498047, 0.232020974159241],\n [0.635536015033722, 0.189248979091644],\n [0.77039098739624, 0.299556016921997],\n [0.826722025871277, 0.278755009174347],\n [0.527121007442474, 0.666198015213013],\n [0.553171992301941, 0.668527007102966],\n [0.577238023281097, 0.673889994621277],\n [0.554691970348358, 0.580065965652466],\n [0.611896991729736, 0.693961024284363],\n [0.59696102142334, 0.706539988517761],\n [0.596370995044708, 0.693953037261963],\n [0.539958000183105, 0.557139039039612],\n [0.568841993808746, 0.692366003990173],\n [0.547818005084991, 0.692366003990173],\n [0.52461302280426, 0.692366003990173],\n [0.534089982509613, 0.779141008853912],\n [0.527670979499817, 0.736225962638855],\n [0.526912987232208, 0.717857003211975],\n [0.526877999305725, 0.704625964164734],\n [0.526966989040375, 0.695277988910675],\n [0.572058022022247, 0.695277988910675],\n [0.573521018028259, 0.703539967536926],\n [0.57683801651001, 0.711845993995667],\n [0.581691026687622, 0.720062971115112],\n [0.609944999217987, 0.639909982681274],\n [0.986046016216278, 0.560034036636353],\n [0.5867999792099, 0.69539999961853],\n [0.590372025966644, 0.701822996139526],\n [0.531915009021759, 0.601536989212036],\n [0.577268004417419, 0.585934996604919],\n [0.536915004253387, 0.593786001205444],\n [0.627542972564697, 0.473352015018463],\n [0.665585994720459, 0.495950996875763],\n [0.588353991508484, 0.546862006187439],\n [0.757824003696442, 0.14767599105835],\n [0.709249973297119, 0.201507985591888],\n [0.672684013843536, 0.256581008434296],\n [0.600408971309662, 0.74900496006012],\n [0.55826598405838, 0.261672019958496],\n [0.570303976535797, 0.187870979309082],\n [0.588165998458862, 0.109044015407562],\n [0.711045026779175, 0.398952007293701],\n [0.781069993972778, 0.435405015945435],\n [0.587247014045715, 0.398931980133057],\n [0.742869973182678, 0.355445981025696],\n [0.572156012058258, 0.437651991844177],\n [0.55186802148819, 0.536570012569427],\n [0.821442008018494, 0.457556009292603],\n [0.752701997756958, 0.457181990146637],\n [0.71375697851181, 0.467626988887787],\n [0.66711300611496, 0.460672974586487],\n [0.631101012229919, 0.447153985500336],\n [0.6008620262146, 0.432473003864288],\n [0.523481011390686, 0.405627012252808],\n [0.810747981071472, 0.523926019668579],\n [0.771045982837677, 0.348959028720856],\n [0.509127020835876, 0.562718033790588],\n [0.595292985439301, 0.485023975372314],\n [0.980530977249146, 0.401564002037048],\n [0.573499977588654, 0.420000016689301],\n [0.602994978427887, 0.548687994480133],\n [0.733529984951019, 0.376977026462555],\n [0.560611009597778, 0.519016981124878],\n [0.967685997486115, 0.644356966018677],\n [0.580985009670258, 0.387160003185272],\n [0.537728011608124, 0.505385041236877],\n [0.760966002941132, 0.779752969741821],\n [0.801778972148895, 0.831938028335571],\n [0.892440974712372, 0.54076099395752],\n [0.816350996494293, 0.740260004997253],\n [0.865594983100891, 0.333687007427216],\n [0.614073991775513, 0.883246004581451],\n [0.508952975273132, 0.579437971115112],\n [0.617941975593567, 0.508316040039062],\n [0.825608015060425, 0.397674977779388],\n [0.681214988231659, 0.39623498916626],\n [0.656635999679565, 0.400596976280212],\n [0.603900015354156, 0.710216999053955],\n [0.81208598613739, 0.588539004325867],\n [0.56801301240921, 0.944564998149872],\n [0.681007981300354, 0.898285031318665],\n [0.733752012252808, 0.869701027870178],\n [0.633830010890961, 0.398822009563446],\n [0.606792986392975, 0.39553701877594],\n [0.589659988880157, 0.391062021255493],\n [0.805015981197357, 0.342108011245728],\n [0.611334979534149, 0.362284004688263],\n [0.634037971496582, 0.355970978736877],\n [0.656635999679565, 0.355356991291046],\n [0.681214988231659, 0.35834002494812],\n [0.698584973812103, 0.363156020641327],\n [0.941866993904114, 0.319076001644135],\n [0.698584973812103, 0.387449026107788],\n [0.584177017211914, 0.624107003211975],\n [0.554318010807037, 0.566076993942261],\n [0.534153997898102, 0.62064003944397],\n [0.711217999458313, 0.819975018501282],\n [0.664629995822906, 0.852871000766754],\n [0.559099972248077, 0.902631998062134],\n [0.871706008911133, 0.791940987110138],\n [0.591234028339386, 0.373893976211548],\n [0.544341027736664, 0.451583981513977],\n [0.624562978744507, 0.924192011356354],\n [0.88577002286911, 0.615028977394104],\n [0.551338016986847, 0.695277988910675],\n [0.551980018615723, 0.704632043838501],\n [0.552887976169586, 0.715808033943176],\n [0.555167973041534, 0.730794012546539],\n [0.569944024085999, 0.767035007476807],\n [0.593203008174896, 0.685675978660583],\n [0.599261999130249, 0.681069016456604],\n [0.607599973678589, 0.677703022956848],\n [0.631937980651855, 0.663500010967255],\n [0.752032995223999, 0.601315021514893],\n [0.547226011753082, 0.420395016670227],\n [0.563543975353241, 0.359827995300293],\n [0.583841025829315, 0.368713974952698],\n [0.586614012718201, 0.692366003990173],\n [0.771915018558502, 0.683578014373779],\n [0.531597018241882, 0.352482974529266],\n [0.588370978832245, 0.804440975189209],\n [0.52079701423645, 0.442565023899078],\n [0.567984998226166, 0.493479013442993],\n [0.543282985687256, 0.819254994392395],\n [0.655317008495331, 0.745514988899231],\n [0.621008992195129, 0.574018001556396],\n [0.625559985637665, 0.78031200170517],\n [0.680198013782501, 0.570719003677368],\n [0.64276397228241, 0.604337990283966],\n [0.704662978649139, 0.621529996395111],\n [0.552012026309967, 0.862591981887817],\n [0.589071989059448, 0.508637011051178],\n [0.685944974422455, 0.775357007980347],\n [0.645735025405884, 0.812640011310577],\n [0.675342977046967, 0.703978002071381],\n [0.810858011245728, 0.646304965019226],\n [0.72012197971344, 0.714666962623596],\n [0.866151988506317, 0.682704985141754],\n [0.663187026977539, 0.644596993923187],\n [0.570082008838654, 0.466325998306274],\n [0.544561982154846, 0.548375964164734],\n [0.562758982181549, 0.558784961700439],\n [0.531987011432648, 0.530140042304993],\n [0.585271000862122, 0.335177004337311],\n [0.622952997684479, 0.32277899980545],\n [0.655896008014679, 0.320163011550903],\n [0.687132000923157, 0.322345972061157],\n [0.716481983661652, 0.333200991153717],\n [0.758756995201111, 0.382786989212036],\n [0.897013008594513, 0.468769013881683],\n [0.732392013072968, 0.424547016620636],\n [0.70211398601532, 0.433162987232208],\n [0.66652500629425, 0.433866024017334],\n [0.633504986763, 0.426087975502014],\n [0.603875994682312, 0.416586995124817],\n [0.579657971858978, 0.409945011138916],\n [0.992439985275269, 0.480777025222778],\n [0.567192018032074, 0.569419980049133],\n [0.54136598110199, 0.478899002075195],\n [0.526564002037048, 0.546118021011353],\n [0.523913025856018, 0.563830018043518],\n [0.531529009342194, 0.555056989192963],\n [0.566035985946655, 0.582329034805298],\n [0.51631098985672, 0.563053965568542],\n [0.5174720287323, 0.577877044677734],\n [0.573594987392426, 0.389806985855103],\n [0.560697972774506, 0.395331978797913],\n [0.549755990505219, 0.399751007556915],\n [0.710287988185883, 0.368252992630005],\n [0.723330020904541, 0.363372981548309],\n];\n\nexport const TRI468 = [\n 127, 34, 139, 11, 0, 37, 232, 231, 120, 72, 37, 39, 128, 121, 47, 232, 121, 128, 104, 69, 67, 175, 171, 148, 157, 154, 155, 118, 50, 101, 73, 39, 40, 9,\n 151, 108, 48, 115, 131, 194, 204, 211, 74, 40, 185, 80, 42, 183, 40, 92, 186, 230, 229, 118, 202, 212, 214, 83, 18, 17, 76, 61, 146, 160, 29, 30, 56,\n 157, 173, 106, 204, 194, 135, 214, 192, 203, 165, 98, 21, 71, 68, 51, 45, 4, 144, 24, 23, 77, 146, 91, 205, 50, 187, 201, 200, 18, 91, 106, 182, 90, 91,\n 181, 85, 84, 17, 206, 203, 36, 148, 171, 140, 92, 40, 39, 193, 189, 244, 159, 158, 28, 247, 246, 161, 236, 3, 196, 54, 68, 104, 193, 168, 8, 117,\n 228, 31, 189, 193, 55, 98, 97, 99, 126, 47, 100, 166, 79, 218, 155, 154, 26, 209, 49, 131, 135, 136, 150, 47, 126, 217, 223, 52, 53, 45, 51, 134, 211,\n 170, 140, 67, 69, 108, 43, 106, 91, 230, 119, 120, 226, 130, 247, 63, 53, 52, 238, 20, 242, 46, 70, 156, 78, 62, 96, 46, 53, 63, 143, 34, 227, 173,\n 155, 133, 123, 117, 111, 44, 125, 19, 236, 134, 51, 216, 206, 205, 154, 153, 22, 39, 37, 167, 200, 201, 208, 36, 142, 100, 57, 212, 202, 20, 60, 99, 28,\n 158, 157, 35, 226, 113, 160, 159, 27, 204, 202, 210, 113, 225, 46, 43, 202, 204, 62, 76, 77, 137, 123, 116, 41, 38, 72, 203, 129, 142, 64, 98, 240, 49,\n 102, 64, 41, 73, 74, 212, 216, 207, 42, 74, 184, 169, 170, 211, 170, 149, 176, 105, 66, 69, 122, 6, 168, 123, 147, 187, 96, 77, 90, 65, 55, 107, 89,\n 90, 180, 101, 100, 120, 63, 105, 104, 93, 137, 227, 15, 86, 85, 129, 102, 49, 14, 87, 86, 55, 8, 9, 100, 47, 121, 145, 23, 22, 88, 89, 179, 6, 122,\n 196, 88, 95, 96, 138, 172, 136, 215, 58, 172, 115, 48, 219, 42, 80, 81, 195, 3, 51, 43, 146, 61, 171, 175, 199, 81, 82, 38, 53, 46, 225, 144, 163, 110,\n 246, 33, 7, 52, 65, 66, 229, 228, 117, 34, 127, 234, 107, 108, 69, 109, 108, 151, 48, 64, 235, 62, 78, 191, 129, 209, 126, 111, 35, 143, 163, 161, 246,\n 117, 123, 50, 222, 65, 52, 19, 125, 141, 221, 55, 65, 3, 195, 197, 25, 7, 33, 220, 237, 44, 70, 71, 139, 122, 193, 245, 247, 130, 33, 71, 21, 162,\n 153, 158, 159, 170, 169, 150, 188, 174, 196, 216, 186, 92, 144, 160, 161, 2, 97, 167, 141, 125, 241, 164, 167, 37, 72, 38, 12, 145, 159, 160, 38, 82, 13,\n 63, 68, 71, 226, 35, 111, 158, 153, 154, 101, 50, 205, 206, 92, 165, 209, 198, 217, 165, 167, 97, 220, 115, 218, 133, 112, 243, 239, 238, 241, 214,\n 135, 169, 190, 173, 133, 171, 208, 32, 125, 44, 237, 86, 87, 178, 85, 86, 179, 84, 85, 180, 83, 84, 181, 201, 83, 182, 137, 93, 132, 76, 62, 183, 61,\n 76, 184, 57, 61, 185, 212, 57, 186, 214, 207, 187, 34, 143, 156, 79, 239, 237, 123, 137, 177, 44, 1, 4, 201, 194, 32, 64, 102, 129, 213, 215, 138, 59,\n 166, 219, 242, 99, 97, 2, 94, 141, 75, 59, 235, 24, 110, 228, 25, 130, 226, 23, 24, 229, 22, 23, 230, 26, 22, 231, 112, 26, 232, 189, 190, 243, 221, 56,\n 190, 28, 56, 221, 27, 28, 222, 29, 27, 223, 30, 29, 224, 247, 30, 225, 238, 79, 20, 166, 59, 75, 60, 75, 240, 147, 177, 215, 20, 79, 166, 187, 147, 213,\n 112, 233, 244, 233, 128, 245, 128, 114, 188, 114, 217, 174, 131, 115, 220, 217, 198, 236, 198, 131, 134, 177, 132, 58, 143, 35, 124, 110, 163, 7, 228,\n 110, 25, 356, 389, 368, 11, 302, 267, 452, 350, 349, 302, 303, 269, 357, 343, 277, 452, 453, 357, 333, 332, 297, 175, 152, 377, 384, 398, 382, 347,\n 348, 330, 303, 304, 270, 9, 336, 337, 278, 279, 360, 418, 262, 431, 304, 408, 409, 310, 415, 407, 270, 409, 410, 450, 348, 347, 422, 430, 434, 313,\n 314, 17, 306, 307, 375, 387, 388, 260, 286, 414, 398, 335, 406, 418, 364, 367, 416, 423, 358, 327, 251, 284, 298, 281, 5, 4, 373, 374, 253, 307, 320,\n 321, 425, 427, 411, 421, 313, 18, 321, 405, 406, 320, 404, 405, 315, 16, 17, 426, 425, 266, 377, 400, 369, 322, 391, 269, 417, 465, 464, 386, 257, 258,\n 466, 260, 388, 456, 399, 419, 284, 332, 333, 417, 285, 8, 346, 340, 261, 413, 441, 285, 327, 460, 328, 355, 371, 329, 392, 439, 438, 382, 341, 256,\n 429, 420, 360, 364, 394, 379, 277, 343, 437, 443, 444, 283, 275, 440, 363, 431, 262, 369, 297, 338, 337, 273, 375, 321, 450, 451, 349, 446, 342, 467,\n 293, 334, 282, 458, 461, 462, 276, 353, 383, 308, 324, 325, 276, 300, 293, 372, 345, 447, 382, 398, 362, 352, 345, 340, 274, 1, 19, 456, 248, 281, 436,\n 427, 425, 381, 256, 252, 269, 391, 393, 200, 199, 428, 266, 330, 329, 287, 273, 422, 250, 462, 328, 258, 286, 384, 265, 353, 342, 387, 259, 257, 424,\n 431, 430, 342, 353, 276, 273, 335, 424, 292, 325, 307, 366, 447, 345, 271, 303, 302, 423, 266, 371, 294, 455, 460, 279, 278, 294, 271, 272, 304, 432,\n 434, 427, 272, 407, 408, 394, 430, 431, 395, 369, 400, 334, 333, 299, 351, 417, 168, 352, 280, 411, 325, 319, 320, 295, 296, 336, 319, 403, 404, 330,\n 348, 349, 293, 298, 333, 323, 454, 447, 15, 16, 315, 358, 429, 279, 14, 15, 316, 285, 336, 9, 329, 349, 350, 374, 380, 252, 318, 402, 403, 6, 197, 419,\n 318, 319, 325, 367, 364, 365, 435, 367, 397, 344, 438, 439, 272, 271, 311, 195, 5, 281, 273, 287, 291, 396, 428, 199, 311, 271, 268, 283, 444, 445,\n 373, 254, 339, 263, 466, 249, 282, 334, 296, 449, 347, 346, 264, 447, 454, 336, 296, 299, 338, 10, 151, 278, 439, 455, 292, 407, 415, 358, 371, 355,\n 340, 345, 372, 390, 249, 466, 346, 347, 280, 442, 443, 282, 19, 94, 370, 441, 442, 295, 248, 419, 197, 263, 255, 359, 440, 275, 274, 300, 383, 368,\n 351, 412, 465, 263, 467, 466, 301, 368, 389, 380, 374, 386, 395, 378, 379, 412, 351, 419, 436, 426, 322, 373, 390, 388, 2, 164, 393, 370, 462, 461,\n 164, 0, 267, 302, 11, 12, 374, 373, 387, 268, 12, 13, 293, 300, 301, 446, 261, 340, 385, 384, 381, 330, 266, 425, 426, 423, 391, 429, 355, 437, 391,\n 327, 326, 440, 457, 438, 341, 382, 362, 459, 457, 461, 434, 430, 394, 414, 463, 362, 396, 369, 262, 354, 461, 457, 316, 403, 402, 315, 404, 403, 314,\n 405, 404, 313, 406, 405, 421, 418, 406, 366, 401, 361, 306, 408, 407, 291, 409, 408, 287, 410, 409, 432, 436, 410, 434, 416, 411, 264, 368, 383, 309,\n 438, 457, 352, 376, 401, 274, 275, 4, 421, 428, 262, 294, 327, 358, 433, 416, 367, 289, 455, 439, 462, 370, 326, 2, 326, 370, 305, 460, 455, 254,\n 449, 448, 255, 261, 446, 253, 450, 449, 252, 451, 450, 256, 452, 451, 341, 453, 452, 413, 464, 463, 441, 413, 414, 258, 442, 441, 257, 443, 442, 259,\n 444, 443, 260, 445, 444, 467, 342, 445, 459, 458, 250, 289, 392, 290, 290, 328, 460, 376, 433, 435, 250, 290, 392, 411, 416, 433, 341, 463, 464, 453,\n 464, 465, 357, 465, 412, 343, 412, 399, 360, 363, 440, 437, 399, 456, 420, 456, 363, 401, 435, 288, 372, 383, 353, 339, 255, 249, 448, 261, 255, 133,\n 243, 190, 133, 155, 112, 33, 246, 247, 33, 130, 25, 398, 384, 286, 362, 398, 414, 362, 463, 341, 263, 359, 467, 263, 249, 255, 466, 467, 260, 75, 60,\n 166, 238, 239, 79, 162, 127, 139, 72, 11, 37, 121, 232, 120, 73, 72, 39, 114, 128, 47, 233, 232, 128, 103, 104, 67, 152, 175, 148, 173, 157, 155,\n 119, 118, 101, 74, 73, 40, 107, 9, 108, 49, 48, 131, 32, 194, 211, 184, 74, 185, 191, 80, 183, 185, 40, 186, 119, 230, 118, 210, 202, 214, 84, 83, 17,\n 77, 76, 146, 161, 160, 30, 190, 56, 173, 182, 106, 194, 138, 135, 192, 129, 203, 98, 54, 21, 68, 5, 51, 4, 145, 144, 23, 90, 77, 91, 207, 205, 187, 83,\n 201, 18, 181, 91, 182, 180, 90, 181, 16, 85, 17, 205, 206, 36, 176, 148, 140, 165, 92, 39, 245, 193, 244, 27, 159, 28, 30, 247, 161, 174, 236, 196,\n 103, 54, 104, 55, 193, 8, 111, 117, 31, 221, 189, 55, 240, 98, 99, 142, 126, 100, 219, 166, 218, 112, 155, 26, 198, 209, 131, 169, 135, 150, 114, 47,\n 217, 224, 223, 53, 220, 45, 134, 32, 211, 140, 109, 67, 108, 146, 43, 91, 231, 230, 120, 113, 226, 247, 105, 63, 52, 241, 238, 242, 124, 46, 156, 95,\n 78, 96, 70, 46, 63, 116, 143, 227, 116, 123, 111, 1, 44, 19, 3, 236, 51, 207, 216, 205, 26, 154, 22, 165, 39, 167, 199, 200, 208, 101, 36, 100, 43,\n 57, 202, 242, 20, 99, 56, 28, 157, 124, 35, 113, 29, 160, 27, 211, 204, 210, 124, 113, 46, 106, 43, 204, 96, 62, 77, 227, 137, 116, 73, 41, 72, 36, 203,\n 142, 235, 64, 240, 48, 49, 64, 42, 41, 74, 214, 212, 207, 183, 42, 184, 210, 169, 211, 140, 170, 176, 104, 105, 69, 193, 122, 168, 50, 123, 187, 89, 96,\n 90, 66, 65, 107, 179, 89, 180, 119, 101, 120, 68, 63, 104, 234, 93, 227, 16, 15, 85, 209, 129, 49, 15, 14, 86, 107, 55, 9, 120, 100, 121, 153, 145, 22,\n 178, 88, 179, 197, 6, 196, 89, 88, 96, 135, 138, 136, 138, 215, 172, 218, 115, 219, 41, 42, 81, 5, 195, 51, 57, 43, 61, 208, 171, 199, 41, 81, 38,\n 224, 53, 225, 24, 144, 110, 105, 52, 66, 118, 229, 117, 227, 34, 234, 66, 107, 69, 10, 109, 151, 219, 48, 235, 183, 62, 191, 142, 129, 126, 116, 111,\n 143, 7, 163, 246, 118, 117, 50, 223, 222, 52, 94, 19, 141, 222, 221, 65, 196, 3, 197, 45, 220, 44, 156, 70, 139, 188, 122, 245, 139, 71, 162, 145,\n 153, 159, 149, 170, 150, 122, 188, 196, 206, 216, 92, 163, 144, 161, 164, 2, 167, 242, 141, 241, 0, 164, 37, 11, 72, 12, 144, 145, 160, 12, 38, 13, 70,\n 63, 71, 31, 226, 111, 157, 158, 154, 36, 101, 205, 203, 206, 165, 126, 209, 217, 98, 165, 97, 237, 220, 218, 237, 239, 241, 210, 214, 169, 140, 171, 32,\n 241, 125, 237, 179, 86, 178, 180, 85, 179, 181, 84, 180, 182, 83, 181, 194, 201, 182, 177, 137, 132, 184, 76, 183, 185, 61, 184, 186, 57, 185, 216, 212,\n 186, 192, 214, 187, 139, 34, 156, 218, 79, 237, 147, 123, 177, 45, 44, 4, 208, 201, 32, 98, 64, 129, 192, 213, 138, 235, 59, 219, 141, 242, 97, 97, 2,\n 141, 240, 75, 235, 229, 24, 228, 31, 25, 226, 230, 23, 229, 231, 22, 230, 232, 26, 231, 233, 112, 232, 244, 189, 243, 189, 221, 190, 222, 28, 221,\n 223, 27, 222, 224, 29, 223, 225, 30, 224, 113, 247, 225, 99, 60, 240, 213, 147, 215, 60, 20, 166, 192, 187, 213, 243, 112, 244, 244, 233, 245, 245,\n 128, 188, 188, 114, 174, 134, 131, 220, 174, 217, 236, 236, 198, 134, 215, 177, 58, 156, 143, 124, 25, 110, 7, 31, 228, 25, 264, 356, 368, 0, 11, 267,\n 451, 452, 349, 267, 302, 269, 350, 357, 277, 350, 452, 357, 299, 333, 297, 396, 175, 377, 381, 384, 382, 280, 347, 330, 269, 303, 270, 151, 9, 337,\n 344, 278, 360, 424, 418, 431, 270, 304, 409, 272, 310, 407, 322, 270, 410, 449, 450, 347, 432, 422, 434, 18, 313, 17, 291, 306, 375, 259, 387, 260,\n 424, 335, 418, 434, 364, 416, 391, 423, 327, 301, 251, 298, 275, 281, 4, 254, 373, 253, 375, 307, 321, 280, 425, 411, 200, 421, 18, 335, 321, 406,\n 321, 320, 405, 314, 315, 17, 423, 426, 266, 396, 377, 369, 270, 322, 269, 413, 417, 464, 385, 386, 258, 248, 456, 419, 298, 284, 333, 168, 417, 8,\n 448, 346, 261, 417, 413, 285, 326, 327, 328, 277, 355, 329, 309, 392, 438, 381, 382, 256, 279, 429, 360, 365, 364, 379, 355, 277, 437, 282, 443, 283,\n 281, 275, 363, 395, 431, 369, 299, 297, 337, 335, 273, 321, 348, 450, 349, 359, 446, 467, 283, 293, 282, 250, 458, 462, 300, 276, 383, 292, 308, 325,\n 283, 276, 293, 264, 372, 447, 346, 352, 340, 354, 274, 19, 363, 456, 281, 426, 436, 425, 380, 381, 252, 267, 269, 393, 421, 200, 428, 371, 266, 329,\n 432, 287, 422, 290, 250, 328, 385, 258, 384, 446, 265, 342, 386, 387, 257, 422, 424, 430, 445, 342, 276, 422, 273, 424, 306, 292, 307, 352, 366, 345,\n 268, 271, 302, 358, 423, 371, 327, 294, 460, 331, 279, 294, 303, 271, 304, 436, 432, 427, 304, 272, 408, 395, 394, 431, 378, 395, 400, 296, 334, 299,\n 6, 351, 168, 376, 352, 411, 307, 325, 320, 285, 295, 336, 320, 319, 404, 329, 330, 349, 334, 293, 333, 366, 323, 447, 316, 15, 315, 331, 358, 279,\n 317, 14, 316, 8, 285, 9, 277, 329, 350, 253, 374, 252, 319, 318, 403, 351, 6, 419, 324, 318, 325, 397, 367, 365, 288, 435, 397, 278, 344, 439, 310,\n 272, 311, 248, 195, 281, 375, 273, 291, 175, 396, 199, 312, 311, 268, 276, 283, 445, 390, 373, 339, 295, 282, 296, 448, 449, 346, 356, 264, 454, 337,\n 336, 299, 337, 338, 151, 294, 278, 455, 308, 292, 415, 429, 358, 355, 265, 340, 372, 388, 390, 466, 352, 346, 280, 295, 442, 282, 354, 19, 370, 285,\n 441, 295, 195, 248, 197, 457, 440, 274, 301, 300, 368, 417, 351, 465, 251, 301, 389, 385, 380, 386, 394, 395, 379, 399, 412, 419, 410, 436, 322, 387,\n 373, 388, 326, 2, 393, 354, 370, 461, 393, 164, 267, 268, 302, 12, 386, 374, 387, 312, 268, 13, 298, 293, 301, 265, 446, 340, 380, 385, 381, 280, 330,\n 425, 322, 426, 391, 420, 429, 437, 393, 391, 326, 344, 440, 438, 458, 459, 461, 364, 434, 394, 428, 396, 262, 274, 354, 457, 317, 316, 402, 316, 315,\n 403, 315, 314, 404, 314, 313, 405, 313, 421, 406, 323, 366, 361, 292, 306, 407, 306, 291, 408, 291, 287, 409, 287, 432, 410, 427, 434, 411, 372, 264,\n 383, 459, 309, 457, 366, 352, 401, 1, 274, 4, 418, 421, 262, 331, 294, 358, 435, 433, 367, 392, 289, 439, 328, 462, 326, 94, 2, 370, 289, 305, 455, 339,\n 254, 448, 359, 255, 446, 254, 253, 449, 253, 252, 450, 252, 256, 451, 256, 341, 452, 414, 413, 463, 286, 441, 414, 286, 258, 441, 258, 257, 442, 257,\n 259, 443, 259, 260, 444, 260, 467, 445, 309, 459, 250, 305, 289, 290, 305, 290, 460, 401, 376, 435, 309, 250, 392, 376, 411, 433, 453, 341, 464, 357,\n 453, 465, 343, 357, 412, 437, 343, 399, 344, 360, 440, 420, 437, 456, 360, 420, 363, 361, 401, 288, 265, 372, 353, 390, 339, 249, 339, 448, 255];\n\nexport const TRI68 = [0, 1, 36, 0, 36, 17, 1, 2, 41, 1, 41, 36, 2, 3, 31, 2, 31, 41, 3, 4, 48, 3, 48, 31, 4, 5, 48, 5, 6, 48, 6, 7, 59, 6, 59, 48, 7, 8, 58, 7, 58, 59,\n 8, 9, 56, 8, 56, 57, 8, 57, 58, 9, 10, 55, 9, 55, 56, 10, 11, 54, 10, 54, 55, 11, 12, 54, 12, 13, 54, 13, 14, 35, 13, 35, 54, 14, 15, 46, 14, 46, 35, 15, 16,\n 45, 15, 45, 46, 16, 26, 45, 17, 36, 18, 18, 37, 19, 18, 36, 37, 19, 38, 20, 19, 37, 38, 20, 39, 21, 20, 38, 39, 21, 39, 27, 22, 42, 23, 22, 27, 42, 23, 43, 24,\n 23, 42, 43, 24, 44, 25, 24, 43, 44, 25, 45, 26, 25, 44, 45, 27, 39, 28, 27, 28, 42, 28, 39, 29, 28, 29, 42, 29, 31, 30, 29, 30, 35, 29, 40, 31, 29, 35, 47, 29,\n 39, 40, 29, 47, 42, 30, 31, 32, 30, 32, 33, 30, 33, 34, 30, 34, 35, 31, 50, 32, 31, 40, 41, 31, 48, 49, 31, 49, 50, 32, 51, 33, 32, 50, 51, 33, 51, 34, 34, 52,\n 35, 34, 51, 52, 35, 46, 47, 35, 52, 53, 35, 53, 54, 36, 41, 37, 37, 40, 38, 37, 41, 40, 38, 40, 39, 42, 47, 43, 43, 47, 44, 44, 46, 45, 44, 47, 46, 48, 60, 49,\n 48, 59, 60, 49, 61, 50, 49, 60, 61, 50, 62, 51, 50, 61, 62, 51, 62, 52, 52, 63, 53, 52, 62, 63, 53, 64, 54, 53, 63, 64, 54, 64, 55, 55, 65, 56, 55, 64, 65, 56,\n 66, 57, 56, 65, 66, 57, 66, 58, 58, 67, 59, 58, 66, 67, 59, 67, 60, 60, 67, 61, 61, 66, 62, 61, 67, 66, 62, 66, 63, 63, 65, 64, 63, 66, 65, 21, 27, 22];\n\nexport const TRI33 = [\n /* eyes */ 0, 8, 7, 7, 8, 1, 2, 10, 9, 9, 10, 3,\n /* brows */ 17, 0, 18, 18, 0, 7, 18, 7, 19, 19, 7, 1, 19, 1, 11, 19, 11, 20, 21, 3, 22, 21, 9, 3, 20, 9, 21, 20, 2, 9, 20, 11, 2,\n /* 4head */ 23, 17, 18, 25, 21, 22, 24, 19, 20, 24, 18, 19, 24, 20, 21, 24, 23, 18, 24, 21, 25,\n /* nose */ 11, 12, 4, 11, 4, 13, 1, 12, 11, 11, 13, 2, 12, 14, 4, 4, 14, 13,\n /* up-lip */ 14, 5, 15, 14, 15, 6, 12, 5, 14, 14, 6, 13,\n /* cheeks */ 8, 12, 1, 2, 13, 10, 8, 26, 12, 10, 13, 27, 26, 5, 12, 13, 6, 27, 0, 26, 8, 10, 27, 3,\n /* chin */ 5, 32, 16, 16, 32, 6, 5, 30, 32, 6, 32, 31,\n /* cont */ 26, 30, 5, 27, 6, 31, 0, 28, 26, 3, 27, 29, 17, 28, 0, 3, 29, 22, 23, 28, 17, 22, 29, 25, 28, 30, 26, 27, 31, 29,\n];\n\nexport const TRI7 = [0, 4, 1, 2, 4, 3, 4, 5, 6];\n\nexport const VTX68 = [\n /* cont */ 127, 234, 132, 58, 172, 150, 149, 148, 152, 377, 378, 379, 397, 288, 361, 454, 356,\n /* brows */ 70, 63, 105, 66, 107, 336, 296, 334, 293, 300,\n /* nose */ 168, 6, 195, 4, 98, 97, 2, 326, 327,\n /* eyes */ 33, 160, 158, 133, 153, 144, 362, 385, 387, 263, 373, 380,\n /* lip */ 57, 40, 37, 0, 267, 270, 287, 321, 314, 17, 84, 91,\n /* mouth */ 78, 81, 13, 311, 308, 402, 14, 178,\n];\n\nexport const VTX33 = [33, 133, 362, 263, 1, 62, 308, 159, 145, 386, 374, 6, 102, 331, 2, 13, 14, 70, 105, 107, 336, 334, 300, 54, 10, 284, 50, 280, 234, 454, 58, 288, 152];\n\nexport const VTX7 = [33, 133, 362, 263, 1, 78, 308];\n\nexport const UV68 = VTX68.map((x) => UV468[x]);\n\nexport const UV33 = VTX33.map((x) => UV468[x]);\n\nexport const UV7 = VTX7.map((x) => UV468[x]);\n", "/* eslint-disable class-methods-use-this */\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as bounding from './box';\nimport * as util from './util';\nimport * as coords from './coords';\n\nconst leftOutline = coords.MESH_ANNOTATIONS['leftEyeLower0'];\nconst rightOutline = coords.MESH_ANNOTATIONS['rightEyeLower0'];\n\nconst eyeLandmarks = {\n leftBounds: [leftOutline[0], leftOutline[leftOutline.length - 1]],\n rightBounds: [rightOutline[0], rightOutline[rightOutline.length - 1]],\n};\n\nconst meshLandmarks = {\n count: 468,\n mouth: 13,\n symmetryLine: [13, coords.MESH_ANNOTATIONS['midwayBetweenEyes'][0]],\n};\n\nconst blazeFaceLandmarks = {\n leftEye: 0,\n rightEye: 1,\n nose: 2,\n mouth: 3,\n leftEar: 4,\n rightEar: 5,\n symmetryLine: [3, 2],\n};\n\nconst irisLandmarks = {\n upperCenter: 3,\n lowerCenter: 4,\n index: 71,\n numCoordinates: 76,\n};\n\n// Replace the raw coordinates returned by facemesh with refined iris model coordinates\n// Update the z coordinate to be an average of the original and the new.\nfunction replaceRawCoordinates(rawCoords, newCoords, prefix, keys) {\n for (let i = 0; i < coords.MESH_TO_IRIS_INDICES_MAP.length; i++) {\n const { key, indices } = coords.MESH_TO_IRIS_INDICES_MAP[i];\n const originalIndices = coords.MESH_ANNOTATIONS[`${prefix}${key}`];\n // @ts-ignore\n if (!keys || keys.includes(key)) {\n for (let j = 0; j < indices.length; j++) {\n const index = indices[j];\n rawCoords[originalIndices[j]] = [\n newCoords[index][0], newCoords[index][1],\n (newCoords[index][2] + rawCoords[originalIndices[j]][2]) / 2,\n ];\n }\n }\n }\n}\n// The Pipeline coordinates between the bounding box and skeleton models.\nexport class Pipeline {\n storedBoxes: any;\n boundingBoxDetector: any;\n meshDetector: any;\n irisModel: any;\n boxSize: number;\n meshSize: number;\n irisSize: number;\n irisEnlarge: number;\n skipped: number;\n detectedFaces: number;\n\n constructor(boundingBoxDetector, meshDetector, irisModel) {\n // An array of facial bounding boxes.\n this.storedBoxes = [];\n this.boundingBoxDetector = boundingBoxDetector;\n this.meshDetector = meshDetector;\n this.irisModel = irisModel;\n this.boxSize = boundingBoxDetector?.model?.inputs[0].shape[2] || 0;\n this.meshSize = meshDetector?.inputs[0].shape[2] || boundingBoxDetector?.model?.inputs[0].shape[2];\n this.irisSize = irisModel?.inputs[0].shape[1] || 0;\n this.irisEnlarge = 2.3;\n this.skipped = 0;\n this.detectedFaces = 0;\n }\n\n transformRawCoords(rawCoords, box, angle, rotationMatrix) {\n const boxSize = bounding.getBoxSize({ startPoint: box.startPoint, endPoint: box.endPoint });\n const coordsScaled = rawCoords.map((coord) => ([\n boxSize[0] / this.meshSize * (coord[0] - this.meshSize / 2),\n boxSize[1] / this.meshSize * (coord[1] - this.meshSize / 2),\n coord[2],\n ]));\n const coordsRotationMatrix = (angle !== 0) ? util.buildRotationMatrix(angle, [0, 0]) : util.IDENTITY_MATRIX;\n const coordsRotated = (angle !== 0) ? coordsScaled.map((coord) => ([...util.rotatePoint(coord, coordsRotationMatrix), coord[2]])) : coordsScaled;\n const inverseRotationMatrix = (angle !== 0) ? util.invertTransformMatrix(rotationMatrix) : util.IDENTITY_MATRIX;\n const boxCenter = [...bounding.getBoxCenter({ startPoint: box.startPoint, endPoint: box.endPoint }), 1];\n return coordsRotated.map((coord) => ([\n coord[0] + util.dot(boxCenter, inverseRotationMatrix[0]),\n coord[1] + util.dot(boxCenter, inverseRotationMatrix[1]),\n coord[2],\n ]));\n }\n\n getLeftToRightEyeDepthDifference(rawCoords) {\n const leftEyeZ = rawCoords[eyeLandmarks.leftBounds[0]][2];\n const rightEyeZ = rawCoords[eyeLandmarks.rightBounds[0]][2];\n return leftEyeZ - rightEyeZ;\n }\n\n // Returns a box describing a cropped region around the eye fit for passing to the iris model.\n getEyeBox(rawCoords, face, eyeInnerCornerIndex, eyeOuterCornerIndex, flip = false) {\n const box = bounding.squarifyBox(bounding.enlargeBox(this.calculateLandmarksBoundingBox([rawCoords[eyeInnerCornerIndex], rawCoords[eyeOuterCornerIndex]]), this.irisEnlarge));\n const boxSize = bounding.getBoxSize(box);\n let crop = tf.image.cropAndResize(face, [[\n box.startPoint[1] / this.meshSize,\n box.startPoint[0] / this.meshSize, box.endPoint[1] / this.meshSize,\n box.endPoint[0] / this.meshSize,\n ]], [0], [this.irisSize, this.irisSize]);\n if (flip && tf.ENV.flags.IS_BROWSER) {\n crop = tf.image.flipLeftRight(crop); // flipLeftRight is not defined for tfjs-node\n }\n return { box, boxSize, crop };\n }\n\n // Given a cropped image of an eye, returns the coordinates of the contours surrounding the eye and the iris.\n getEyeCoords(eyeData, eyeBox, eyeBoxSize, flip = false) {\n const eyeRawCoords: Array = [];\n for (let i = 0; i < irisLandmarks.numCoordinates; i++) {\n const x = eyeData[i * 3];\n const y = eyeData[i * 3 + 1];\n const z = eyeData[i * 3 + 2];\n eyeRawCoords.push([\n (flip ? (1 - (x / this.irisSize)) : (x / this.irisSize)) * eyeBoxSize[0] + eyeBox.startPoint[0],\n (y / this.irisSize) * eyeBoxSize[1] + eyeBox.startPoint[1], z,\n ]);\n }\n return { rawCoords: eyeRawCoords, iris: eyeRawCoords.slice(irisLandmarks.index) };\n }\n\n // The z-coordinates returned for the iris are unreliable, so we take the z values from the surrounding keypoints.\n getAdjustedIrisCoords(rawCoords, irisCoords, direction) {\n const upperCenterZ = rawCoords[coords.MESH_ANNOTATIONS[`${direction}EyeUpper0`][irisLandmarks.upperCenter]][2];\n const lowerCenterZ = rawCoords[coords.MESH_ANNOTATIONS[`${direction}EyeLower0`][irisLandmarks.lowerCenter]][2];\n const averageZ = (upperCenterZ + lowerCenterZ) / 2;\n // Iris indices: 0: center | 1: right | 2: above | 3: left | 4: below\n return irisCoords.map((coord, i) => {\n let z = averageZ;\n if (i === 2) {\n z = upperCenterZ;\n } else if (i === 4) {\n z = lowerCenterZ;\n }\n return [coord[0], coord[1], z];\n });\n }\n\n async predict(input, config) {\n let useFreshBox = false;\n // run new detector every skipFrames unless we only want box to start with\n let detector;\n if ((this.skipped === 0) || (this.skipped > config.face.detector.skipFrames) || !config.face.mesh.enabled || !config.videoOptimized) {\n detector = await this.boundingBoxDetector.getBoundingBoxes(input);\n this.skipped = 0;\n }\n if (config.videoOptimized) this.skipped++;\n\n // if detector result count doesn't match current working set, use it to reset current working set\n if (!config.videoOptimized || (detector && detector.boxes && (!config.face.mesh.enabled || (detector.boxes.length !== this.detectedFaces) && (this.detectedFaces !== config.face.detector.maxFaces)))) {\n this.storedBoxes = [];\n this.detectedFaces = 0;\n for (const possible of detector.boxes) {\n this.storedBoxes.push({ startPoint: possible.box.startPoint.dataSync(), endPoint: possible.box.endPoint.dataSync(), landmarks: possible.landmarks, confidence: possible.confidence });\n }\n if (this.storedBoxes.length > 0) useFreshBox = true;\n }\n\n if (config.face.detector.skipInitial && this.detectedFaces === 0) this.skipped = 0;\n\n if (useFreshBox) {\n if (!detector || !detector.boxes || (detector.boxes.length === 0)) {\n this.storedBoxes = [];\n this.detectedFaces = 0;\n return null;\n }\n for (let i = 0; i < this.storedBoxes.length; i++) {\n const scaledBox = bounding.scaleBoxCoordinates({ startPoint: this.storedBoxes[i].startPoint, endPoint: this.storedBoxes[i].endPoint }, detector.scaleFactor);\n const enlargedBox = bounding.enlargeBox(scaledBox);\n const squarifiedBox = bounding.squarifyBox(enlargedBox);\n const landmarks = this.storedBoxes[i].landmarks.arraySync();\n const confidence = this.storedBoxes[i].confidence;\n this.storedBoxes[i] = { ...squarifiedBox, confidence, landmarks };\n }\n }\n if (detector && detector.boxes) {\n detector.boxes.forEach((prediction) => {\n prediction.box.startPoint.dispose();\n prediction.box.endPoint.dispose();\n prediction.landmarks.dispose();\n });\n }\n\n let results = tf.tidy(() => this.storedBoxes.map((box, i) => {\n const boxConfidence = box.confidence;\n\n // The facial bounding box landmarks could come either from blazeface (if we are using a fresh box), or from the mesh model (if we are reusing an old box).\n let face;\n let angle = 0;\n let rotationMatrix;\n\n if (config.face.detector.rotation && config.face.mesh.enabled && tf.ENV.flags.IS_BROWSER) {\n const [indexOfMouth, indexOfForehead] = (box.landmarks.length >= meshLandmarks.count) ? meshLandmarks.symmetryLine : blazeFaceLandmarks.symmetryLine;\n angle = util.computeRotation(box.landmarks[indexOfMouth], box.landmarks[indexOfForehead]);\n const faceCenter = bounding.getBoxCenter({ startPoint: box.startPoint, endPoint: box.endPoint });\n const faceCenterNormalized = [faceCenter[0] / input.shape[2], faceCenter[1] / input.shape[1]];\n const rotatedImage = tf.image.rotateWithOffset(input, angle, 0, faceCenterNormalized); // rotateWithOffset is not defined for tfjs-node\n rotationMatrix = util.buildRotationMatrix(-angle, faceCenter);\n if (config.face.mesh.enabled) face = bounding.cutBoxFromImageAndResize({ startPoint: box.startPoint, endPoint: box.endPoint }, rotatedImage, [this.meshSize, this.meshSize]).div(255);\n else face = bounding.cutBoxFromImageAndResize({ startPoint: box.startPoint, endPoint: box.endPoint }, rotatedImage, [this.boxSize, this.boxSize]).div(255);\n } else {\n rotationMatrix = util.IDENTITY_MATRIX;\n const clonedImage = input.clone();\n if (config.face.mesh.enabled) face = bounding.cutBoxFromImageAndResize({ startPoint: box.startPoint, endPoint: box.endPoint }, clonedImage, [this.meshSize, this.meshSize]).div(255);\n else face = bounding.cutBoxFromImageAndResize({ startPoint: box.startPoint, endPoint: box.endPoint }, clonedImage, [this.boxSize, this.boxSize]).div(255);\n }\n\n // if we're not going to produce mesh, don't spend time with further processing\n if (!config.face.mesh.enabled) {\n const prediction = {\n coords: null,\n box,\n faceConfidence: null,\n boxConfidence,\n confidence: box.confidence,\n image: face,\n };\n return prediction;\n }\n\n const [, confidence, contourCoords] = this.meshDetector.predict(face); // The first returned tensor represents facial contours which are already included in the coordinates.\n const faceConfidence = confidence.dataSync()[0];\n if (faceConfidence < config.face.detector.minConfidence) return null; // if below confidence just exit\n const coordsReshaped = tf.reshape(contourCoords, [-1, 3]);\n let rawCoords = coordsReshaped.arraySync();\n\n if (config.face.iris.enabled) {\n const { box: leftEyeBox, boxSize: leftEyeBoxSize, crop: leftEyeCrop } = this.getEyeBox(rawCoords, face, eyeLandmarks.leftBounds[0], eyeLandmarks.leftBounds[1], true);\n const { box: rightEyeBox, boxSize: rightEyeBoxSize, crop: rightEyeCrop } = this.getEyeBox(rawCoords, face, eyeLandmarks.rightBounds[0], eyeLandmarks.rightBounds[1]);\n const eyePredictions = this.irisModel.predict(tf.concat([leftEyeCrop, rightEyeCrop]));\n const eyePredictionsData = eyePredictions.dataSync();\n const leftEyeData = eyePredictionsData.slice(0, irisLandmarks.numCoordinates * 3);\n const { rawCoords: leftEyeRawCoords, iris: leftIrisRawCoords } = this.getEyeCoords(leftEyeData, leftEyeBox, leftEyeBoxSize, true);\n const rightEyeData = eyePredictionsData.slice(irisLandmarks.numCoordinates * 3);\n const { rawCoords: rightEyeRawCoords, iris: rightIrisRawCoords } = this.getEyeCoords(rightEyeData, rightEyeBox, rightEyeBoxSize);\n const leftToRightEyeDepthDifference = this.getLeftToRightEyeDepthDifference(rawCoords);\n if (Math.abs(leftToRightEyeDepthDifference) < 30) { // User is looking straight ahead.\n replaceRawCoordinates(rawCoords, leftEyeRawCoords, 'left', null);\n replaceRawCoordinates(rawCoords, rightEyeRawCoords, 'right', null);\n // If the user is looking to the left or to the right, the iris coordinates tend to diverge too much from the mesh coordinates for them to be merged\n // So we only update a single contour line above and below the eye.\n } else if (leftToRightEyeDepthDifference < 1) { // User is looking towards the right.\n replaceRawCoordinates(rawCoords, leftEyeRawCoords, 'left', ['EyeUpper0', 'EyeLower0']);\n } else { // User is looking towards the left.\n replaceRawCoordinates(rawCoords, rightEyeRawCoords, 'right', ['EyeUpper0', 'EyeLower0']);\n }\n const adjustedLeftIrisCoords = this.getAdjustedIrisCoords(rawCoords, leftIrisRawCoords, 'left');\n const adjustedRightIrisCoords = this.getAdjustedIrisCoords(rawCoords, rightIrisRawCoords, 'right');\n rawCoords = rawCoords.concat(adjustedLeftIrisCoords).concat(adjustedRightIrisCoords);\n }\n\n // override box from detection with one calculated from mesh\n const transformedCoordsData = this.transformRawCoords(rawCoords, box, angle, rotationMatrix);\n box = bounding.enlargeBox(this.calculateLandmarksBoundingBox(transformedCoordsData), 1.5); // redefine box with mesh calculated one\n const transformedCoords = tf.tensor2d(transformedCoordsData);\n\n // do rotation one more time with mesh keypoints if we want to return perfect image\n if (config.face.detector.rotation && config.face.mesh.enabled && (config.face.description.enabled || config.face.embedding.enabled) && tf.ENV.flags.IS_BROWSER) {\n const [indexOfMouth, indexOfForehead] = (box.landmarks.length >= meshLandmarks.count) ? meshLandmarks.symmetryLine : blazeFaceLandmarks.symmetryLine;\n angle = util.computeRotation(box.landmarks[indexOfMouth], box.landmarks[indexOfForehead]);\n const faceCenter = bounding.getBoxCenter({ startPoint: box.startPoint, endPoint: box.endPoint });\n const faceCenterNormalized = [faceCenter[0] / input.shape[2], faceCenter[1] / input.shape[1]];\n const rotatedImage = tf.image.rotateWithOffset(input, angle, 0, faceCenterNormalized); // rotateWithOffset is not defined for tfjs-node\n rotationMatrix = util.buildRotationMatrix(-angle, faceCenter);\n face = bounding.cutBoxFromImageAndResize({ startPoint: box.startPoint, endPoint: box.endPoint }, rotatedImage, [this.meshSize, this.meshSize]).div(255);\n }\n\n const prediction = {\n coords: transformedCoords,\n box,\n faceConfidence,\n boxConfidence,\n image: face,\n rawCoords,\n };\n\n // updated stored cache values\n const squarifiedLandmarksBox = bounding.squarifyBox(box);\n this.storedBoxes[i] = { ...squarifiedLandmarksBox, landmarks: transformedCoordsData, confidence: box.confidence, faceConfidence };\n\n return prediction;\n }));\n\n results = results.filter((a) => a !== null);\n // remove cache entries for detected boxes on low confidence\n if (config.face.mesh.enabled) this.storedBoxes = this.storedBoxes.filter((a) => a.faceConfidence > config.face.detector.minConfidence);\n this.detectedFaces = results.length;\n\n return results;\n }\n\n calculateLandmarksBoundingBox(landmarks) {\n const xs = landmarks.map((d) => d[0]);\n const ys = landmarks.map((d) => d[1]);\n const startPoint = [Math.min(...xs), Math.min(...ys)];\n const endPoint = [Math.max(...xs), Math.max(...ys)];\n return { startPoint, endPoint, landmarks };\n }\n}\n", "import { log, now, mergeDeep } from './helpers';\nimport * as sysinfo from './sysinfo';\nimport * as tf from '../dist/tfjs.esm.js';\nimport * as backend from './tfjs/backend';\nimport * as faceall from './faceall';\nimport * as facemesh from './blazeface/facemesh';\nimport * as age from './age/age';\nimport * as gender from './gender/gender';\nimport * as faceres from './faceres/faceres';\nimport * as emotion from './emotion/emotion';\nimport * as embedding from './embedding/embedding';\nimport * as posenet from './posenet/posenet';\nimport * as handpose from './handpose/handpose';\nimport * as blazepose from './blazepose/blazepose';\nimport * as nanodet from './nanodet/nanodet';\nimport * as gesture from './gesture/gesture';\nimport * as image from './image/image';\nimport * as draw from './draw/draw';\nimport * as profile from './profile';\nimport { Config, defaults } from './config';\nimport { Result } from './result';\nimport * as sample from './sample';\nimport * as app from '../package.json';\n\n/** Generic Tensor object type */\nexport type Tensor = typeof tf.Tensor;\nexport type { Config } from './config';\nexport type { Result } from './result';\n/** Defines all possible input types for **Human** detection */\nexport type Input = Tensor | ImageData | ImageBitmap | HTMLVideoElement | HTMLCanvasElement | OffscreenCanvas;\n/** Error message */\nexport type Error = { error: string };\n/** Instance of TensorFlow/JS */\nexport type TensorFlow = typeof tf;\n/** Generic Model object type, holds instance of individual models */\ntype Model = Object;\n\n/**\n * **Human** library main class\n *\n * All methods and properties are available only as members of Human class\n *\n * - Configuration object definition: {@link Config}\n * - Results object definition: {@link Result}\n * - Possible inputs: {@link Input}\n */\nexport class Human {\n version: string;\n config: Config;\n state: string;\n image: { tensor: Tensor, canvas: OffscreenCanvas | HTMLCanvasElement };\n // classes\n tf: TensorFlow;\n draw: {\n drawOptions?: typeof draw.drawOptions,\n gesture: typeof draw.gesture,\n face: typeof draw.face,\n body: typeof draw.body,\n hand: typeof draw.hand,\n canvas: typeof draw.canvas,\n all: typeof draw.all,\n };\n // models\n models: {\n face: facemesh.MediaPipeFaceMesh | null,\n posenet: posenet.PoseNet | null,\n blazepose: Model | null,\n handpose: handpose.HandPose | null,\n iris: Model | null,\n age: Model | null,\n gender: Model | null,\n emotion: Model | null,\n embedding: Model | null,\n nanodet: Model | null,\n faceres: Model | null,\n };\n classes: {\n facemesh: typeof facemesh;\n age: typeof age;\n gender: typeof gender;\n emotion: typeof emotion;\n body: typeof posenet | typeof blazepose;\n hand: typeof handpose;\n nanodet: typeof nanodet;\n faceres: typeof faceres;\n };\n sysinfo: { platform: string, agent: string };\n perf: any;\n #numTensors: number;\n #analyzeMemoryLeaks: boolean;\n #checkSanity: boolean;\n #firstRun: boolean;\n // definition end\n\n constructor(userConfig: Config | Object = {}) {\n this.tf = tf;\n this.draw = draw;\n this.version = app.version;\n this.config = mergeDeep(defaults, userConfig);\n this.state = 'idle';\n this.#numTensors = 0;\n this.#analyzeMemoryLeaks = false;\n this.#checkSanity = false;\n this.#firstRun = true;\n this.perf = {};\n // object that contains all initialized models\n this.models = {\n face: null,\n posenet: null,\n blazepose: null,\n handpose: null,\n iris: null,\n age: null,\n gender: null,\n emotion: null,\n embedding: null,\n nanodet: null,\n faceres: null,\n };\n // export access to image processing\n // @ts-ignore\n this.image = (input: Input) => image.process(input, this.config);\n // export raw access to underlying models\n this.classes = {\n facemesh,\n age,\n gender,\n emotion,\n faceres,\n body: this.config.body.modelPath.includes('posenet') ? posenet : blazepose,\n hand: handpose,\n nanodet,\n };\n // include platform info\n this.sysinfo = sysinfo.info();\n }\n\n profileData(): { newBytes, newTensors, peakBytes, numKernelOps, timeKernelOps, slowestKernelOps, largestKernelOps } | {} {\n if (this.config.profile) return profile.data;\n return {};\n }\n\n // helper function: measure tensor leak\n /** @hidden */\n analyze = (...msg) => {\n if (!this.#analyzeMemoryLeaks) return;\n const current = this.tf.engine().state.numTensors;\n const previous = this.#numTensors;\n this.#numTensors = current;\n const leaked = current - previous;\n if (leaked !== 0) log(...msg, leaked);\n }\n\n // quick sanity check on inputs\n /** @hidden */\n #sanity = (input): null | string => {\n if (!this.#checkSanity) return null;\n if (!input) return 'input is not defined';\n if (this.tf.ENV.flags.IS_NODE && !(input instanceof tf.Tensor)) return 'input must be a tensor';\n try {\n this.tf.getBackend();\n } catch {\n return 'backend not loaded';\n }\n return null;\n }\n\n similarity(embedding1: Array, embedding2: Array): number {\n if (this.config.face.description.enabled) return faceres.similarity(embedding1, embedding2);\n if (this.config.face.embedding.enabled) return embedding.similarity(embedding1, embedding2);\n return 0;\n }\n\n // eslint-disable-next-line class-methods-use-this\n enhance(input: Tensor): Tensor | null {\n return faceres.enhance(input);\n }\n\n // eslint-disable-next-line class-methods-use-this\n match(faceEmbedding: Array, db: Array<{ name: string, source: string, embedding: number[] }>, threshold = 0): { name: string, source: string, similarity: number, embedding: number[] } {\n return faceres.match(faceEmbedding, db, threshold);\n }\n\n // preload models, not explicitly required as it's done automatically on first use\n async load(userConfig: Config | Object = {}) {\n this.state = 'load';\n const timeStamp = now();\n if (userConfig) this.config = mergeDeep(this.config, userConfig);\n\n if (this.#firstRun) {\n if (this.config.debug) log(`version: ${this.version}`);\n if (this.config.debug) log(`tfjs version: ${this.tf.version_core}`);\n if (this.config.debug) log('platform:', this.sysinfo.platform);\n if (this.config.debug) log('agent:', this.sysinfo.agent);\n\n await this.#checkBackend(true);\n if (this.tf.ENV.flags.IS_BROWSER) {\n if (this.config.debug) log('configuration:', this.config);\n if (this.config.debug) log('tf flags:', this.tf.ENV.flags);\n }\n }\n if (this.config.async) {\n [\n this.models.face,\n this.models.age,\n this.models.gender,\n this.models.emotion,\n this.models.embedding,\n this.models.handpose,\n this.models.posenet,\n this.models.blazepose,\n this.models.nanodet,\n this.models.faceres,\n ] = await Promise.all([\n this.models.face || (this.config.face.enabled ? facemesh.load(this.config) : null),\n this.models.age || ((this.config.face.enabled && this.config.face.age.enabled) ? age.load(this.config) : null),\n this.models.gender || ((this.config.face.enabled && this.config.face.gender.enabled) ? gender.load(this.config) : null),\n this.models.emotion || ((this.config.face.enabled && this.config.face.emotion.enabled) ? emotion.load(this.config) : null),\n this.models.embedding || ((this.config.face.enabled && this.config.face.embedding.enabled) ? embedding.load(this.config) : null),\n this.models.handpose || (this.config.hand.enabled ? handpose.load(this.config) : null),\n this.models.posenet || (this.config.body.enabled && this.config.body.modelPath.includes('posenet') ? posenet.load(this.config) : null),\n this.models.posenet || (this.config.body.enabled && this.config.body.modelPath.includes('blazepose') ? blazepose.load(this.config) : null),\n this.models.nanodet || (this.config.object.enabled ? nanodet.load(this.config) : null),\n this.models.faceres || ((this.config.face.enabled && this.config.face.description.enabled) ? faceres.load(this.config) : null),\n ]);\n } else {\n if (this.config.face.enabled && !this.models.face) this.models.face = await facemesh.load(this.config);\n if (this.config.face.enabled && this.config.face.age.enabled && !this.models.age) this.models.age = await age.load(this.config);\n if (this.config.face.enabled && this.config.face.gender.enabled && !this.models.gender) this.models.gender = await gender.load(this.config);\n if (this.config.face.enabled && this.config.face.emotion.enabled && !this.models.emotion) this.models.emotion = await emotion.load(this.config);\n if (this.config.face.enabled && this.config.face.embedding.enabled && !this.models.embedding) this.models.embedding = await embedding.load(this.config);\n if (this.config.hand.enabled && !this.models.handpose) this.models.handpose = await handpose.load(this.config);\n if (this.config.body.enabled && !this.models.posenet && this.config.body.modelPath.includes('posenet')) this.models.posenet = await posenet.load(this.config);\n if (this.config.body.enabled && !this.models.blazepose && this.config.body.modelPath.includes('blazepose')) this.models.blazepose = await blazepose.load(this.config);\n if (this.config.object.enabled && !this.models.nanodet) this.models.nanodet = await nanodet.load(this.config);\n if (this.config.face.enabled && this.config.face.description.enabled && !this.models.faceres) this.models.faceres = await faceres.load(this.config);\n }\n\n if (this.#firstRun) {\n if (this.config.debug) log('tf engine state:', this.tf.engine().state.numBytes, 'bytes', this.tf.engine().state.numTensors, 'tensors');\n this.#firstRun = false;\n }\n\n const current = Math.trunc(now() - timeStamp);\n if (current > (this.perf.load || 0)) this.perf.load = current;\n }\n\n // check if backend needs initialization if it changed\n /** @hidden */\n #checkBackend = async (force = false) => {\n if (this.config.backend && (this.config.backend !== '') && force || (this.tf.getBackend() !== this.config.backend)) {\n const timeStamp = now();\n this.state = 'backend';\n /* force backend reload\n if (this.config.backend in tf.engine().registry) {\n const backendFactory = tf.findBackendFactory(this.config.backend);\n tf.removeBackend(this.config.backend);\n tf.registerBackend(this.config.backend, backendFactory);\n } else {\n log('Backend not registred:', this.config.backend);\n }\n */\n\n if (this.config.backend && this.config.backend !== '') {\n if (this.tf.ENV.flags.IS_BROWSER && this.config.backend === 'tensorflow') this.config.backend = 'webgl';\n if (this.tf.ENV.flags.IS_NODE && (this.config.backend === 'webgl' || this.config.backend === 'wasm')) this.config.backend = 'tensorflow';\n if (this.config.debug) log('setting backend:', this.config.backend);\n\n if (this.config.backend === 'wasm') {\n if (this.config.debug) log('wasm path:', this.config.wasmPath);\n this.tf.setWasmPaths(this.config.wasmPath);\n const simd = await this.tf.env().getAsync('WASM_HAS_SIMD_SUPPORT');\n const mt = await this.tf.env().getAsync('WASM_HAS_MULTITHREAD_SUPPORT');\n if (this.config.debug) log(`wasm execution: ${simd ? 'SIMD' : 'no SIMD'} ${mt ? 'multithreaded' : 'singlethreaded'}`);\n if (!simd) log('warning: wasm simd support is not enabled');\n }\n\n if (this.config.backend === 'humangl') backend.register();\n try {\n await this.tf.setBackend(this.config.backend);\n } catch (err) {\n log('error: cannot set backend:', this.config.backend, err);\n }\n }\n this.tf.enableProdMode();\n /* debug mode is really too mcuh\n tf.enableDebugMode();\n */\n if (this.tf.getBackend() === 'webgl') {\n if (this.config.deallocate) {\n log('changing webgl: WEBGL_DELETE_TEXTURE_THRESHOLD:', this.config.deallocate);\n this.tf.ENV.set('WEBGL_DELETE_TEXTURE_THRESHOLD', this.config.deallocate ? 0 : -1);\n }\n // this.tf.ENV.set('WEBGL_FORCE_F16_TEXTURES', true);\n // this.tf.ENV.set('WEBGL_PACK_DEPTHWISECONV', true);\n const gl = await this.tf.backend().getGPGPUContext().gl;\n if (this.config.debug) log(`gl version:${gl.getParameter(gl.VERSION)} renderer:${gl.getParameter(gl.RENDERER)}`);\n }\n await this.tf.ready();\n this.perf.backend = Math.trunc(now() - timeStamp);\n }\n }\n\n // main detect function\n async detect(input: Input, userConfig: Config | Object = {}): Promise {\n // detection happens inside a promise\n return new Promise(async (resolve) => {\n this.state = 'config';\n let timeStamp;\n\n // update configuration\n this.config = mergeDeep(this.config, userConfig);\n\n // sanity checks\n this.state = 'check';\n const error = this.#sanity(input);\n if (error) {\n log(error, input);\n resolve({ error });\n }\n\n const timeStart = now();\n\n // configure backend\n await this.#checkBackend();\n\n // load models if enabled\n await this.load();\n\n if (this.config.scoped) this.tf.engine().startScope();\n this.analyze('Start Scope:');\n\n timeStamp = now();\n const process = image.process(input, this.config);\n if (!process || !process.tensor) {\n log('could not convert input to tensor');\n resolve({ error: 'could not convert input to tensor' });\n return;\n }\n this.perf.image = Math.trunc(now() - timeStamp);\n this.analyze('Get Image:');\n\n // prepare where to store model results\n let bodyRes;\n let handRes;\n let faceRes;\n let objectRes;\n let current;\n\n // run face detection followed by all models that rely on face bounding box: face mesh, age, gender, emotion\n if (this.config.async) {\n faceRes = this.config.face.enabled ? faceall.detectFace(this, process.tensor) : [];\n if (this.perf.face) delete this.perf.face;\n } else {\n this.state = 'run:face';\n timeStamp = now();\n faceRes = this.config.face.enabled ? await faceall.detectFace(this, process.tensor) : [];\n current = Math.trunc(now() - timeStamp);\n if (current > 0) this.perf.face = current;\n }\n\n // run body: can be posenet or blazepose\n this.analyze('Start Body:');\n if (this.config.async) {\n if (this.config.body.modelPath.includes('posenet')) bodyRes = this.config.body.enabled ? this.models.posenet?.estimatePoses(process.tensor, this.config) : [];\n else bodyRes = this.config.body.enabled ? blazepose.predict(process.tensor, this.config) : [];\n if (this.perf.body) delete this.perf.body;\n } else {\n this.state = 'run:body';\n timeStamp = now();\n if (this.config.body.modelPath.includes('posenet')) bodyRes = this.config.body.enabled ? await this.models.posenet?.estimatePoses(process.tensor, this.config) : [];\n else bodyRes = this.config.body.enabled ? await blazepose.predict(process.tensor, this.config) : [];\n current = Math.trunc(now() - timeStamp);\n if (current > 0) this.perf.body = current;\n }\n this.analyze('End Body:');\n\n // run handpose\n this.analyze('Start Hand:');\n if (this.config.async) {\n handRes = this.config.hand.enabled ? this.models.handpose?.estimateHands(process.tensor, this.config) : [];\n if (this.perf.hand) delete this.perf.hand;\n } else {\n this.state = 'run:hand';\n timeStamp = now();\n handRes = this.config.hand.enabled ? await this.models.handpose?.estimateHands(process.tensor, this.config) : [];\n current = Math.trunc(now() - timeStamp);\n if (current > 0) this.perf.hand = current;\n }\n this.analyze('End Hand:');\n\n // run nanodet\n this.analyze('Start Object:');\n if (this.config.async) {\n objectRes = this.config.object.enabled ? nanodet.predict(process.tensor, this.config) : [];\n if (this.perf.object) delete this.perf.object;\n } else {\n this.state = 'run:object';\n timeStamp = now();\n objectRes = this.config.object.enabled ? await nanodet.predict(process.tensor, this.config) : [];\n current = Math.trunc(now() - timeStamp);\n if (current > 0) this.perf.object = current;\n }\n this.analyze('End Object:');\n\n // if async wait for results\n if (this.config.async) {\n [faceRes, bodyRes, handRes, objectRes] = await Promise.all([faceRes, bodyRes, handRes, objectRes]);\n }\n process.tensor.dispose();\n\n if (this.config.scoped) this.tf.engine().endScope();\n this.analyze('End Scope:');\n\n let gestureRes = [];\n if (this.config.gesture.enabled) {\n timeStamp = now();\n // @ts-ignore\n gestureRes = [...gesture.face(faceRes), ...gesture.body(bodyRes), ...gesture.hand(handRes), ...gesture.iris(faceRes)];\n if (!this.config.async) this.perf.gesture = Math.trunc(now() - timeStamp);\n else if (this.perf.gesture) delete this.perf.gesture;\n }\n\n this.perf.total = Math.trunc(now() - timeStart);\n this.state = 'idle';\n const result = {\n face: faceRes,\n body: bodyRes,\n hand: handRes,\n gesture: gestureRes,\n object: objectRes,\n performance: this.perf,\n canvas: process.canvas,\n };\n // log('Result:', result);\n resolve(result);\n });\n }\n\n /** @hidden */\n #warmupBitmap = async () => {\n const b64toBlob = (base64, type = 'application/octet-stream') => fetch(`data:${type};base64,${base64}`).then((res) => res.blob());\n let blob;\n let res;\n switch (this.config.warmup) {\n case 'face': blob = await b64toBlob(sample.face); break;\n case 'full': blob = await b64toBlob(sample.body); break;\n default: blob = null;\n }\n if (blob) {\n const bitmap = await createImageBitmap(blob);\n res = await this.detect(bitmap, this.config);\n bitmap.close();\n }\n return res;\n }\n\n /** @hidden */\n #warmupCanvas = async () => new Promise((resolve) => {\n let src;\n let size = 0;\n switch (this.config.warmup) {\n case 'face':\n size = 256;\n src = 'data:image/jpeg;base64,' + sample.face;\n break;\n case 'full':\n case 'body':\n size = 1200;\n src = 'data:image/jpeg;base64,' + sample.body;\n break;\n default:\n src = null;\n }\n // src = encodeURI('../assets/human-sample-upper.jpg');\n const img = new Image();\n img.onload = async () => {\n const canvas = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(size, size) : document.createElement('canvas');\n canvas.width = img.naturalWidth;\n canvas.height = img.naturalHeight;\n const ctx = canvas.getContext('2d');\n ctx?.drawImage(img, 0, 0);\n // const data = ctx?.getImageData(0, 0, canvas.height, canvas.width);\n const res = await this.detect(canvas, this.config);\n resolve(res);\n };\n if (src) img.src = src;\n else resolve(null);\n });\n\n /** @hidden */\n #warmupNode = async () => {\n const atob = (str) => Buffer.from(str, 'base64');\n const img = this.config.warmup === 'face' ? atob(sample.face) : atob(sample.body);\n // @ts-ignore\n const data = tf.node.decodeJpeg(img); // tf.node is only defined when compiling for nodejs\n const expanded = data.expandDims(0);\n this.tf.dispose(data);\n // log('Input:', expanded);\n const res = await this.detect(expanded, this.config);\n this.tf.dispose(expanded);\n return res;\n }\n\n async warmup(userConfig: Config | Object = {}): Promise {\n const t0 = now();\n if (userConfig) this.config = mergeDeep(this.config, userConfig);\n const save = this.config.videoOptimized;\n this.config.videoOptimized = false;\n let res;\n if (typeof createImageBitmap === 'function') res = await this.#warmupBitmap();\n else if (typeof Image !== 'undefined') res = await this.#warmupCanvas();\n else res = await this.#warmupNode();\n this.config.videoOptimized = save;\n const t1 = now();\n if (this.config.debug) log('Warmup', this.config.warmup, Math.round(t1 - t0), 'ms', res);\n return res;\n }\n}\n\n/**\n * Class Human is also available as default export\n */\nexport { Human as default };\n", "import { log } from '../helpers';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as modelBase from './modelBase';\nimport * as decodeMultiple from './decodeMultiple';\nimport * as decodePose from './decodePose';\nimport * as util from './util';\n\nasync function estimateMultiple(input, res, config, inputSize) {\n return new Promise(async (resolve) => {\n const allTensorBuffers = await util.toTensorBuffers3D([res.heatmapScores, res.offsets, res.displacementFwd, res.displacementBwd]);\n const scoresBuffer = allTensorBuffers[0];\n const offsetsBuffer = allTensorBuffers[1];\n const displacementsFwdBuffer = allTensorBuffers[2];\n const displacementsBwdBuffer = allTensorBuffers[3];\n const poses = await decodeMultiple.decodeMultiplePoses(scoresBuffer, offsetsBuffer, displacementsFwdBuffer, displacementsBwdBuffer, config.body.nmsRadius, config.body.maxDetections, config.body.scoreThreshold);\n const scaled = util.scaleAndFlipPoses(poses, [input.shape[1], input.shape[2]], [inputSize, inputSize]);\n resolve(scaled);\n });\n}\n\nasync function estimateSingle(input, res, config, inputSize) {\n return new Promise(async (resolve) => {\n const pose = await decodePose.decodeSinglePose(res.heatmapScores, res.offsets, config.body.scoreThreshold);\n const scaled = util.scaleAndFlipPoses([pose], [input.shape[1], input.shape[2]], [inputSize, inputSize]);\n resolve(scaled);\n });\n}\n\nexport class PoseNet {\n baseModel: any;\n inputSize: number\n constructor(model) {\n this.baseModel = model;\n this.inputSize = model.model.inputs[0].shape[1];\n if (this.inputSize < 128) this.inputSize = 257;\n }\n\n async estimatePoses(input, config) {\n const resized = util.resizeTo(input, [this.inputSize, this.inputSize]);\n const res = this.baseModel.predict(resized, config);\n\n const poses = (config.body.maxDetections < 2)\n ? await estimateSingle(input, res, config, this.inputSize)\n : await estimateMultiple(input, res, config, this.inputSize);\n\n res.heatmapScores.dispose();\n res.offsets.dispose();\n res.displacementFwd.dispose();\n res.displacementBwd.dispose();\n resized.dispose();\n\n return poses;\n }\n\n dispose() {\n this.baseModel.dispose();\n }\n}\n\nexport async function load(config) {\n const model = await tf.loadGraphModel(config.body.modelPath);\n const mobilenet = new modelBase.BaseModel(model);\n if (config.debug) log(`load model: ${config.body.modelPath.match(/\\/(.*)\\./)[1]}`);\n return new PoseNet(mobilenet);\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nfunction nameOutputResultsMobileNet(results) {\n const [offsets, heatmap, displacementFwd, displacementBwd] = results;\n return { offsets, heatmap, displacementFwd, displacementBwd };\n}\n\nexport class BaseModel {\n model: any;\n constructor(model) {\n this.model = model;\n }\n\n predict(input) {\n return tf.tidy(() => {\n const asFloat = input.toFloat().div(127.5).sub(1.0);\n const asBatch = asFloat.expandDims(0);\n const results = this.model.predict(asBatch);\n const results3d = results.map((y) => y.squeeze([0]));\n const namedResults = nameOutputResultsMobileNet(results3d);\n return {\n heatmapScores: namedResults.heatmap.sigmoid(),\n offsets: namedResults.offsets,\n displacementFwd: namedResults.displacementFwd,\n displacementBwd: namedResults.displacementBwd,\n };\n });\n }\n\n dispose() {\n this.model.dispose();\n }\n}\n", "// algorithm based on Coursera Lecture from Algorithms, Part 1: https://www.coursera.org/learn/algorithms-part1/lecture/ZjoSM/heapsort\nfunction half(k) {\n return Math.floor(k / 2);\n}\nexport class MaxHeap {\n priorityQueue: any;\n numberOfElements: number;\n getElementValue: any;\n\n constructor(maxSize, getElementValue) {\n this.priorityQueue = new Array(maxSize);\n this.numberOfElements = -1;\n this.getElementValue = getElementValue;\n }\n\n enqueue(x) {\n this.priorityQueue[++this.numberOfElements] = x;\n this.swim(this.numberOfElements);\n }\n\n dequeue() {\n const max = this.priorityQueue[0];\n this.exchange(0, this.numberOfElements--);\n this.sink(0);\n this.priorityQueue[this.numberOfElements + 1] = null;\n return max;\n }\n\n empty() {\n return this.numberOfElements === -1;\n }\n\n size() {\n return this.numberOfElements + 1;\n }\n\n all() {\n return this.priorityQueue.slice(0, this.numberOfElements + 1);\n }\n\n max() {\n return this.priorityQueue[0];\n }\n\n swim(k) {\n while (k > 0 && this.less(half(k), k)) {\n this.exchange(k, half(k));\n k = half(k);\n }\n }\n\n sink(k) {\n while (2 * k <= this.numberOfElements) {\n let j = 2 * k;\n if (j < this.numberOfElements && this.less(j, j + 1)) j++;\n if (!this.less(k, j)) break;\n this.exchange(k, j);\n k = j;\n }\n }\n\n getValueAt(i) {\n return this.getElementValue(this.priorityQueue[i]);\n }\n\n less(i, j) {\n return this.getValueAt(i) < this.getValueAt(j);\n }\n\n exchange(i, j) {\n const t = this.priorityQueue[i];\n this.priorityQueue[i] = this.priorityQueue[j];\n this.priorityQueue[j] = t;\n }\n}\n", "import * as heapSort from './heapSort';\n\nfunction scoreIsMaximumInLocalWindow(keypointId, score, heatmapY, heatmapX, localMaximumRadius, scores) {\n const [height, width] = scores.shape;\n let localMaximum = true;\n const yStart = Math.max(heatmapY - localMaximumRadius, 0);\n const yEnd = Math.min(heatmapY + localMaximumRadius + 1, height);\n for (let yCurrent = yStart; yCurrent < yEnd; ++yCurrent) {\n const xStart = Math.max(heatmapX - localMaximumRadius, 0);\n const xEnd = Math.min(heatmapX + localMaximumRadius + 1, width);\n for (let xCurrent = xStart; xCurrent < xEnd; ++xCurrent) {\n if (scores.get(yCurrent, xCurrent, keypointId) > score) {\n localMaximum = false;\n break;\n }\n }\n if (!localMaximum) break;\n }\n return localMaximum;\n}\n\nexport function buildPartWithScoreQueue(scoreThreshold, localMaximumRadius, scores) {\n const [height, width, numKeypoints] = scores.shape;\n const queue = new heapSort.MaxHeap(height * width * numKeypoints, ({ score }) => score);\n for (let heatmapY = 0; heatmapY < height; ++heatmapY) {\n for (let heatmapX = 0; heatmapX < width; ++heatmapX) {\n for (let keypointId = 0; keypointId < numKeypoints; ++keypointId) {\n const score = scores.get(heatmapY, heatmapX, keypointId);\n // Only consider parts with score greater or equal to threshold as root candidates.\n if (score < scoreThreshold) continue;\n // Only consider keypoints whose score is maximum in a local window.\n if (scoreIsMaximumInLocalWindow(keypointId, score, heatmapY, heatmapX, localMaximumRadius, scores)) {\n queue.enqueue({ score, part: { heatmapY, heatmapX, id: keypointId } });\n }\n }\n }\n }\n return queue;\n}\n", "import * as keypoints from './keypoints';\nimport * as vectors from './vectors';\nimport * as decoders from './decoders';\n\nconst parentChildrenTuples = keypoints.poseChain.map(([parentJoinName, childJoinName]) => ([keypoints.partIds[parentJoinName], keypoints.partIds[childJoinName]]));\nconst parentToChildEdges = parentChildrenTuples.map(([, childJointId]) => childJointId);\nconst childToParentEdges = parentChildrenTuples.map(([parentJointId]) => parentJointId);\n\nconst defaultOutputStride = 16;\n\nfunction getDisplacement(edgeId, point, displacements) {\n const numEdges = displacements.shape[2] / 2;\n return {\n y: displacements.get(point.y, point.x, edgeId),\n x: displacements.get(point.y, point.x, numEdges + edgeId),\n };\n}\n\nfunction getStridedIndexNearPoint(point, outputStride, height, width) {\n return {\n y: vectors.clamp(Math.round(point.y / outputStride), 0, height - 1),\n x: vectors.clamp(Math.round(point.x / outputStride), 0, width - 1),\n };\n}\n\nfunction traverseToTargetKeypoint(edgeId, sourceKeypoint, targetKeypointId, scoresBuffer, offsets, outputStride, displacements, offsetRefineStep = 2) {\n const [height, width] = scoresBuffer.shape;\n // Nearest neighbor interpolation for the source->target displacements.\n const sourceKeypointIndices = getStridedIndexNearPoint(sourceKeypoint.position, outputStride, height, width);\n const displacement = getDisplacement(edgeId, sourceKeypointIndices, displacements);\n const displacedPoint = vectors.addVectors(sourceKeypoint.position, displacement);\n let targetKeypoint = displacedPoint;\n for (let i = 0; i < offsetRefineStep; i++) {\n const targetKeypointIndices = getStridedIndexNearPoint(targetKeypoint, outputStride, height, width);\n const offsetPoint = vectors.getOffsetPoint(targetKeypointIndices.y, targetKeypointIndices.x, targetKeypointId, offsets);\n targetKeypoint = vectors.addVectors({\n x: targetKeypointIndices.x * outputStride,\n y: targetKeypointIndices.y * outputStride,\n }, { x: offsetPoint.x, y: offsetPoint.y });\n }\n const targetKeyPointIndices = getStridedIndexNearPoint(targetKeypoint, outputStride, height, width);\n const score = scoresBuffer.get(targetKeyPointIndices.y, targetKeyPointIndices.x, targetKeypointId);\n return { position: targetKeypoint, part: keypoints.partNames[targetKeypointId], score };\n}\n\nexport function decodePose(root, scores, offsets, outputStride, displacementsFwd, displacementsBwd) {\n const numParts = scores.shape[2];\n const numEdges = parentToChildEdges.length;\n const instanceKeypoints = new Array(numParts);\n // Start a new detection instance at the position of the root.\n const { part: rootPart, score: rootScore } = root;\n const rootPoint = vectors.getImageCoords(rootPart, outputStride, offsets);\n instanceKeypoints[rootPart.id] = {\n score: rootScore,\n part: keypoints.partNames[rootPart.id],\n position: rootPoint,\n };\n // Decode the part positions upwards in the tree, following the backward displacements.\n for (let edge = numEdges - 1; edge >= 0; --edge) {\n const sourceKeypointId = parentToChildEdges[edge];\n const targetKeypointId = childToParentEdges[edge];\n if (instanceKeypoints[sourceKeypointId] && !instanceKeypoints[targetKeypointId]) {\n instanceKeypoints[targetKeypointId] = traverseToTargetKeypoint(edge, instanceKeypoints[sourceKeypointId], targetKeypointId, scores, offsets, outputStride, displacementsBwd);\n }\n }\n // Decode the part positions downwards in the tree, following the forward displacements.\n for (let edge = 0; edge < numEdges; ++edge) {\n const sourceKeypointId = childToParentEdges[edge];\n const targetKeypointId = parentToChildEdges[edge];\n if (instanceKeypoints[sourceKeypointId] && !instanceKeypoints[targetKeypointId]) {\n instanceKeypoints[targetKeypointId] = traverseToTargetKeypoint(edge, instanceKeypoints[sourceKeypointId], targetKeypointId, scores, offsets, outputStride, displacementsFwd);\n }\n }\n return instanceKeypoints;\n}\n\nexport async function decodeSinglePose(heatmapScores, offsets, minScore) {\n let totalScore = 0.0;\n const heatmapValues = decoders.argmax2d(heatmapScores);\n const allTensorBuffers = await Promise.all([heatmapScores.buffer(), offsets.buffer(), heatmapValues.buffer()]);\n const scoresBuffer = allTensorBuffers[0];\n const offsetsBuffer = allTensorBuffers[1];\n const heatmapValuesBuffer = allTensorBuffers[2];\n const offsetPoints = decoders.getOffsetPoints(heatmapValuesBuffer, defaultOutputStride, offsetsBuffer);\n const offsetPointsBuffer = await offsetPoints.buffer();\n const keypointConfidence = Array.from(decoders.getPointsConfidence(scoresBuffer, heatmapValuesBuffer));\n const instanceKeypoints = keypointConfidence.map((score, i) => {\n totalScore += score;\n return {\n position: {\n y: offsetPointsBuffer.get(i, 0),\n x: offsetPointsBuffer.get(i, 1),\n },\n part: keypoints.partNames[i],\n score,\n };\n });\n const filteredKeypoints = instanceKeypoints.filter((kpt) => kpt.score > minScore);\n heatmapValues.dispose();\n offsetPoints.dispose();\n return { keypoints: filteredKeypoints, score: totalScore / instanceKeypoints.length };\n}\n", "import * as kpt from './keypoints';\n\nexport function getOffsetPoint(y, x, keypoint, offsets) {\n return {\n y: offsets.get(y, x, keypoint),\n x: offsets.get(y, x, keypoint + kpt.NUM_KEYPOINTS),\n };\n}\n\nexport function getImageCoords(part, outputStride, offsets) {\n const { heatmapY, heatmapX, id: keypoint } = part;\n const { y, x } = getOffsetPoint(heatmapY, heatmapX, keypoint, offsets);\n return {\n x: part.heatmapX * outputStride + x,\n y: part.heatmapY * outputStride + y,\n };\n}\n\nexport function fillArray(element, size) {\n const result = new Array(size);\n for (let i = 0; i < size; i++) {\n result[i] = element;\n }\n return result;\n}\n\nexport function clamp(a, min, max) {\n if (a < min) return min;\n if (a > max) return max;\n return a;\n}\n\nexport function squaredDistance(y1, x1, y2, x2) {\n const dy = y2 - y1;\n const dx = x2 - x1;\n return dy * dy + dx * dx;\n}\n\nexport function addVectors(a, b) {\n return { x: a.x + b.x, y: a.y + b.y };\n}\n\nexport function clampVector(a, min, max) {\n return { y: clamp(a.y, min, max), x: clamp(a.x, min, max) };\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\nimport * as kpt from './keypoints';\n\nexport function getPointsConfidence(heatmapScores, heatMapCoords) {\n const numKeypoints = heatMapCoords.shape[0];\n const result = new Float32Array(numKeypoints);\n for (let keypoint = 0; keypoint < numKeypoints; keypoint++) {\n const y = heatMapCoords.get(keypoint, 0);\n const x = heatMapCoords.get(keypoint, 1);\n result[keypoint] = heatmapScores.get(y, x, keypoint);\n }\n return result;\n}\n\nfunction getOffsetPoint(y, x, keypoint, offsetsBuffer) {\n return {\n y: offsetsBuffer.get(y, x, keypoint),\n x: offsetsBuffer.get(y, x, keypoint + kpt.NUM_KEYPOINTS),\n };\n}\n\nexport function getOffsetVectors(heatMapCoordsBuffer, offsetsBuffer) {\n const result: Array = [];\n for (let keypoint = 0; keypoint < kpt.NUM_KEYPOINTS; keypoint++) {\n const heatmapY = heatMapCoordsBuffer.get(keypoint, 0).valueOf();\n const heatmapX = heatMapCoordsBuffer.get(keypoint, 1).valueOf();\n const { x, y } = getOffsetPoint(heatmapY, heatmapX, keypoint, offsetsBuffer);\n result.push(y);\n result.push(x);\n }\n return tf.tensor2d(result, [kpt.NUM_KEYPOINTS, 2]);\n}\n\nexport function getOffsetPoints(heatMapCoordsBuffer, outputStride, offsetsBuffer) {\n return tf.tidy(() => heatMapCoordsBuffer.toTensor().mul(tf.scalar(outputStride, 'int32')).toFloat().add(getOffsetVectors(heatMapCoordsBuffer, offsetsBuffer)));\n}\n\nfunction mod(a, b) {\n return tf.tidy(() => {\n const floored = a.div(tf.scalar(b, 'int32'));\n return a.sub(floored.mul(tf.scalar(b, 'int32')));\n });\n}\n\nexport function argmax2d(inputs) {\n const [height, width, depth] = inputs.shape;\n return tf.tidy(() => {\n const reshaped = inputs.reshape([height * width, depth]);\n const coords = reshaped.argMax(0);\n const yCoords = coords.div(tf.scalar(width, 'int32')).expandDims(1);\n const xCoords = mod(coords, width).expandDims(1);\n return tf.concat([yCoords, xCoords], 1);\n });\n}\n", "import * as buildParts from './buildParts';\nimport * as decodePose from './decodePose';\nimport * as vectors from './vectors';\n\nconst kLocalMaximumRadius = 1;\nconst defaultOutputStride = 16;\n\nfunction withinNmsRadiusOfCorrespondingPoint(poses, squaredNmsRadius, { x, y }, keypointId) {\n return poses.some(({ keypoints }) => {\n const correspondingKeypoint = keypoints[keypointId].position;\n return vectors.squaredDistance(y, x, correspondingKeypoint.y, correspondingKeypoint.x) <= squaredNmsRadius;\n });\n}\n\nfunction getInstanceScore(existingPoses, squaredNmsRadius, instanceKeypoints) {\n const notOverlappedKeypointScores = instanceKeypoints.reduce((result, { position, score }, keypointId) => {\n if (!withinNmsRadiusOfCorrespondingPoint(existingPoses, squaredNmsRadius, position, keypointId)) result += score;\n return result;\n }, 0.0);\n return notOverlappedKeypointScores / instanceKeypoints.length;\n}\n\nexport function decodeMultiplePoses(scoresBuffer, offsetsBuffer, displacementsFwdBuffer, displacementsBwdBuffer, nmsRadius, maxDetections, scoreThreshold) {\n const poses: Array<{ keypoints: any, score: number }> = [];\n const queue = buildParts.buildPartWithScoreQueue(scoreThreshold, kLocalMaximumRadius, scoresBuffer);\n const squaredNmsRadius = nmsRadius ^ 2;\n // Generate at most maxDetections object instances per image in decreasing root part score order.\n while (poses.length < maxDetections && !queue.empty()) {\n // The top element in the queue is the next root candidate.\n const root = queue.dequeue();\n // Part-based non-maximum suppression: We reject a root candidate if it is within a disk of `nmsRadius` pixels from the corresponding part of a previously detected instance.\n const rootImageCoords = vectors.getImageCoords(root.part, defaultOutputStride, offsetsBuffer);\n if (withinNmsRadiusOfCorrespondingPoint(poses, squaredNmsRadius, rootImageCoords, root.part.id)) continue;\n // Else start a new detection instance at the position of the root.\n const keypoints = decodePose.decodePose(root, scoresBuffer, offsetsBuffer, defaultOutputStride, displacementsFwdBuffer, displacementsBwdBuffer);\n const score = getInstanceScore(poses, squaredNmsRadius, keypoints);\n if (score > scoreThreshold) poses.push({ keypoints, score });\n }\n return poses;\n}\n", "import * as kpt from './keypoints';\n\nexport function eitherPointDoesntMeetConfidence(a, b, minConfidence) {\n return (a < minConfidence || b < minConfidence);\n}\n\nexport function getAdjacentKeyPoints(keypoints, minConfidence) {\n return kpt.connectedPartIndices.reduce((result, [leftJoint, rightJoint]) => {\n if (eitherPointDoesntMeetConfidence(keypoints[leftJoint].score, keypoints[rightJoint].score, minConfidence)) {\n return result;\n }\n result.push([keypoints[leftJoint], keypoints[rightJoint]]);\n return result;\n }, []);\n}\n\nconst { NEGATIVE_INFINITY, POSITIVE_INFINITY } = Number;\nexport function getBoundingBox(keypoints) {\n return keypoints.reduce(({ maxX, maxY, minX, minY }, { position: { x, y } }) => ({\n maxX: Math.max(maxX, x),\n maxY: Math.max(maxY, y),\n minX: Math.min(minX, x),\n minY: Math.min(minY, y),\n }), {\n maxX: NEGATIVE_INFINITY,\n maxY: NEGATIVE_INFINITY,\n minX: POSITIVE_INFINITY,\n minY: POSITIVE_INFINITY,\n });\n}\n\nexport function getBoundingBoxPoints(keypoints) {\n const { minX, minY, maxX, maxY } = getBoundingBox(keypoints);\n return [{ x: minX, y: minY }, { x: maxX, y: minY }, { x: maxX, y: maxY }, { x: minX, y: maxY }];\n}\n\nexport async function toTensorBuffers3D(tensors) {\n return Promise.all(tensors.map((tensor) => tensor.buffer()));\n}\n\nexport function scalePose(pose, scaleY, scaleX) {\n return {\n score: pose.score,\n keypoints: pose.keypoints.map(({ score, part, position }) => ({\n score,\n part,\n position: { x: Math.trunc(position.x * scaleX), y: Math.trunc(position.y * scaleY) },\n })),\n };\n}\n\nexport function resizeTo(image, [targetH, targetW]) {\n const input = image.squeeze(0);\n const resized = input.resizeBilinear([targetH, targetW]);\n input.dispose();\n return resized;\n}\n\nexport function scaleAndFlipPoses(poses, [height, width], [inputResolutionHeight, inputResolutionWidth]) {\n const scaledPoses = poses.map((pose) => scalePose(pose, height / inputResolutionHeight, width / inputResolutionWidth));\n return scaledPoses;\n}\n", "// https://storage.googleapis.com/tfjs-models/demos/handpose/index.html\n\nimport { log } from '../helpers';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as handdetector from './handdetector';\nimport * as handpipeline from './handpipeline';\nimport * as anchors from './anchors';\n\nconst MESH_ANNOTATIONS = {\n thumb: [1, 2, 3, 4],\n indexFinger: [5, 6, 7, 8],\n middleFinger: [9, 10, 11, 12],\n ringFinger: [13, 14, 15, 16],\n pinky: [17, 18, 19, 20],\n palmBase: [0],\n};\n\nexport class HandPose {\n handPipeline: any;\n\n constructor(handPipeline) {\n this.handPipeline = handPipeline;\n }\n\n static getAnnotations() {\n return MESH_ANNOTATIONS;\n }\n\n async estimateHands(input, config) {\n const predictions = await this.handPipeline.estimateHands(input, config);\n if (!predictions) return [];\n const hands: Array<{ confidence: number, box: any, boxRaw: any, landmarks: any, annotations: any }> = [];\n for (const prediction of predictions) {\n const annotations = {};\n if (prediction.landmarks) {\n for (const key of Object.keys(MESH_ANNOTATIONS)) {\n annotations[key] = MESH_ANNOTATIONS[key].map((index) => prediction.landmarks[index]);\n }\n }\n const box = prediction.box ? [\n Math.max(0, prediction.box.topLeft[0]),\n Math.max(0, prediction.box.topLeft[1]),\n Math.min(input.shape[2], prediction.box.bottomRight[0]) - Math.max(0, prediction.box.topLeft[0]),\n Math.min(input.shape[1], prediction.box.bottomRight[1]) - Math.max(0, prediction.box.topLeft[1]),\n ] : [];\n const boxRaw = [\n (prediction.box.topLeft[0]) / input.shape[2],\n (prediction.box.topLeft[1]) / input.shape[1],\n (prediction.box.bottomRight[0] - prediction.box.topLeft[0]) / input.shape[2],\n (prediction.box.bottomRight[1] - prediction.box.topLeft[1]) / input.shape[1],\n ];\n hands.push({ confidence: prediction.confidence, box, boxRaw, landmarks: prediction.landmarks, annotations });\n }\n return hands;\n }\n}\n\nexport async function load(config) {\n const [handDetectorModel, handPoseModel] = await Promise.all([\n config.hand.enabled ? tf.loadGraphModel(config.hand.detector.modelPath, { fromTFHub: config.hand.detector.modelPath.includes('tfhub.dev') }) : null,\n config.hand.landmarks ? tf.loadGraphModel(config.hand.skeleton.modelPath, { fromTFHub: config.hand.skeleton.modelPath.includes('tfhub.dev') }) : null,\n ]);\n const handDetector = new handdetector.HandDetector(handDetectorModel, handDetectorModel?.inputs[0].shape[2], anchors.anchors);\n const handPipeline = new handpipeline.HandPipeline(handDetector, handPoseModel, handPoseModel?.inputs[0].shape[2]);\n const handPose = new HandPose(handPipeline);\n if (config.hand.enabled && config.debug) log(`load model: ${config.hand.detector.modelPath.match(/\\/(.*)\\./)[1]}`);\n if (config.hand.landmarks && config.debug) log(`load model: ${config.hand.skeleton.modelPath.match(/\\/(.*)\\./)[1]}`);\n return handPose;\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nexport function getBoxSize(box) {\n return [\n Math.abs(box.endPoint[0] - box.startPoint[0]),\n Math.abs(box.endPoint[1] - box.startPoint[1]),\n ];\n}\n\nexport function getBoxCenter(box) {\n return [\n box.startPoint[0] + (box.endPoint[0] - box.startPoint[0]) / 2,\n box.startPoint[1] + (box.endPoint[1] - box.startPoint[1]) / 2,\n ];\n}\n\nexport function cutBoxFromImageAndResize(box, image, cropSize) {\n const h = image.shape[1];\n const w = image.shape[2];\n const boxes = [[\n box.startPoint[1] / h,\n box.startPoint[0] / w,\n box.endPoint[1] / h,\n box.endPoint[0] / w,\n ]];\n return tf.image.cropAndResize(image, boxes, [0], cropSize);\n}\n\nexport function scaleBoxCoordinates(box, factor) {\n const startPoint = [box.startPoint[0] * factor[0], box.startPoint[1] * factor[1]];\n const endPoint = [box.endPoint[0] * factor[0], box.endPoint[1] * factor[1]];\n const palmLandmarks = box.palmLandmarks.map((coord) => {\n const scaledCoord = [coord[0] * factor[0], coord[1] * factor[1]];\n return scaledCoord;\n });\n return { startPoint, endPoint, palmLandmarks, confidence: box.confidence };\n}\n\nexport function enlargeBox(box, factor = 1.5) {\n const center = getBoxCenter(box);\n const size = getBoxSize(box);\n const newHalfSize = [factor * size[0] / 2, factor * size[1] / 2];\n const startPoint = [center[0] - newHalfSize[0], center[1] - newHalfSize[1]];\n const endPoint = [center[0] + newHalfSize[0], center[1] + newHalfSize[1]];\n return { startPoint, endPoint, palmLandmarks: box.palmLandmarks };\n}\n\nexport function squarifyBox(box) {\n const centers = getBoxCenter(box);\n const size = getBoxSize(box);\n const maxEdge = Math.max(...size);\n const halfSize = maxEdge / 2;\n const startPoint = [centers[0] - halfSize, centers[1] - halfSize];\n const endPoint = [centers[0] + halfSize, centers[1] + halfSize];\n return { startPoint, endPoint, palmLandmarks: box.palmLandmarks };\n}\n\nexport function shiftBox(box, shiftFactor) {\n const boxSize = [\n box.endPoint[0] - box.startPoint[0],\n box.endPoint[1] - box.startPoint[1],\n ];\n const shiftVector = [boxSize[0] * shiftFactor[0], boxSize[1] * shiftFactor[1]];\n const startPoint = [box.startPoint[0] + shiftVector[0], box.startPoint[1] + shiftVector[1]];\n const endPoint = [box.endPoint[0] + shiftVector[0], box.endPoint[1] + shiftVector[1]];\n return { startPoint, endPoint, palmLandmarks: box.palmLandmarks };\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\nimport * as box from './box';\n\nexport class HandDetector {\n model: any;\n anchors: any;\n anchorsTensor: any;\n inputSize: number;\n inputSizeTensor: any;\n doubleInputSizeTensor: any;\n\n constructor(model, inputSize, anchorsAnnotated) {\n this.model = model;\n this.anchors = anchorsAnnotated.map((anchor) => [anchor.x_center, anchor.y_center]);\n this.anchorsTensor = tf.tensor2d(this.anchors);\n this.inputSize = inputSize;\n this.inputSizeTensor = tf.tensor1d([inputSize, inputSize]);\n this.doubleInputSizeTensor = tf.tensor1d([inputSize * 2, inputSize * 2]);\n }\n\n normalizeBoxes(boxes) {\n return tf.tidy(() => {\n const boxOffsets = tf.slice(boxes, [0, 0], [-1, 2]);\n const boxSizes = tf.slice(boxes, [0, 2], [-1, 2]);\n const boxCenterPoints = tf.add(tf.div(boxOffsets, this.inputSizeTensor), this.anchorsTensor);\n const halfBoxSizes = tf.div(boxSizes, this.doubleInputSizeTensor);\n const startPoints = tf.mul(tf.sub(boxCenterPoints, halfBoxSizes), this.inputSizeTensor);\n const endPoints = tf.mul(tf.add(boxCenterPoints, halfBoxSizes), this.inputSizeTensor);\n return tf.concat2d([startPoints, endPoints], 1);\n });\n }\n\n normalizeLandmarks(rawPalmLandmarks, index) {\n return tf.tidy(() => {\n const landmarks = tf.add(tf.div(rawPalmLandmarks.reshape([-1, 7, 2]), this.inputSizeTensor), this.anchors[index]);\n return tf.mul(landmarks, this.inputSizeTensor);\n });\n }\n\n async getBoxes(input, config) {\n const batched = this.model.predict(input);\n const predictions = batched.squeeze();\n batched.dispose();\n const scoresT = tf.tidy(() => tf.sigmoid(tf.slice(predictions, [0, 0], [-1, 1])).squeeze());\n const scores = scoresT.dataSync();\n const rawBoxes = tf.slice(predictions, [0, 1], [-1, 4]);\n const boxes = this.normalizeBoxes(rawBoxes);\n rawBoxes.dispose();\n const filteredT = await tf.image.nonMaxSuppressionAsync(boxes, scores, config.hand.maxHands, config.hand.iouThreshold, config.hand.scoreThreshold);\n const filtered = filteredT.arraySync();\n\n scoresT.dispose();\n filteredT.dispose();\n const hands: Array<{ box: any, palmLandmarks: any, confidence: number }> = [];\n for (const index of filtered) {\n if (scores[index] >= config.hand.minConfidence) {\n const matchingBox = tf.slice(boxes, [index, 0], [1, -1]);\n const rawPalmLandmarks = tf.slice(predictions, [index, 5], [1, 14]);\n const palmLandmarks = tf.tidy(() => this.normalizeLandmarks(rawPalmLandmarks, index).reshape([-1, 2]));\n rawPalmLandmarks.dispose();\n hands.push({ box: matchingBox, palmLandmarks, confidence: scores[index] });\n }\n }\n predictions.dispose();\n boxes.dispose();\n return hands;\n }\n\n async estimateHandBounds(input, config) {\n const inputHeight = input.shape[1];\n const inputWidth = input.shape[2];\n const image = tf.tidy(() => input.resizeBilinear([this.inputSize, this.inputSize]).div(127.5).sub(1));\n const predictions = await this.getBoxes(image, config);\n image.dispose();\n const hands: Array<{}> = [];\n if (!predictions || predictions.length === 0) return hands;\n for (const prediction of predictions) {\n const boxes = prediction.box.dataSync();\n const startPoint = boxes.slice(0, 2);\n const endPoint = boxes.slice(2, 4);\n const palmLandmarks = prediction.palmLandmarks.arraySync();\n prediction.box.dispose();\n prediction.palmLandmarks.dispose();\n hands.push(box.scaleBoxCoordinates({ startPoint, endPoint, palmLandmarks, confidence: prediction.confidence }, [inputWidth / this.inputSize, inputHeight / this.inputSize]));\n }\n return hands;\n }\n}\n", "export function normalizeRadians(angle) {\n return angle - 2 * Math.PI * Math.floor((angle + Math.PI) / (2 * Math.PI));\n}\n\nexport function computeRotation(point1, point2) {\n const radians = Math.PI / 2 - Math.atan2(-(point2[1] - point1[1]), point2[0] - point1[0]);\n return normalizeRadians(radians);\n}\n\nexport const buildTranslationMatrix = (x, y) => [[1, 0, x], [0, 1, y], [0, 0, 1]];\n\nexport function dot(v1, v2) {\n let product = 0;\n for (let i = 0; i < v1.length; i++) {\n product += v1[i] * v2[i];\n }\n return product;\n}\n\nexport function getColumnFrom2DArr(arr, columnIndex) {\n const column: Array = [];\n for (let i = 0; i < arr.length; i++) {\n column.push(arr[i][columnIndex]);\n }\n return column;\n}\n\nexport function multiplyTransformMatrices(mat1, mat2) {\n const product: Array = [];\n const size = mat1.length;\n for (let row = 0; row < size; row++) {\n product.push([]);\n for (let col = 0; col < size; col++) {\n product[row].push(dot(mat1[row], getColumnFrom2DArr(mat2, col)));\n }\n }\n return product;\n}\n\nexport function buildRotationMatrix(rotation, center) {\n const cosA = Math.cos(rotation);\n const sinA = Math.sin(rotation);\n const rotationMatrix = [[cosA, -sinA, 0], [sinA, cosA, 0], [0, 0, 1]];\n const translationMatrix = buildTranslationMatrix(center[0], center[1]);\n const translationTimesRotation = multiplyTransformMatrices(translationMatrix, rotationMatrix);\n const negativeTranslationMatrix = buildTranslationMatrix(-center[0], -center[1]);\n return multiplyTransformMatrices(translationTimesRotation, negativeTranslationMatrix);\n}\n\nexport function invertTransformMatrix(matrix) {\n const rotationComponent = [[matrix[0][0], matrix[1][0]], [matrix[0][1], matrix[1][1]]];\n const translationComponent = [matrix[0][2], matrix[1][2]];\n const invertedTranslation = [\n -dot(rotationComponent[0], translationComponent),\n -dot(rotationComponent[1], translationComponent),\n ];\n return [\n rotationComponent[0].concat(invertedTranslation[0]),\n rotationComponent[1].concat(invertedTranslation[1]),\n [0, 0, 1],\n ];\n}\n\nexport function rotatePoint(homogeneousCoordinate, rotationMatrix) {\n return [\n dot(homogeneousCoordinate, rotationMatrix[0]),\n dot(homogeneousCoordinate, rotationMatrix[1]),\n ];\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\nimport * as box from './box';\nimport * as util from './util';\n\n// const PALM_BOX_SHIFT_VECTOR = [0, -0.4];\nconst PALM_BOX_ENLARGE_FACTOR = 5; // default 3\n// const HAND_BOX_SHIFT_VECTOR = [0, -0.1]; // move detected hand box by x,y to ease landmark detection\nconst HAND_BOX_ENLARGE_FACTOR = 1.65; // default 1.65\nconst PALM_LANDMARK_IDS = [0, 5, 9, 13, 17, 1, 2];\nconst PALM_LANDMARKS_INDEX_OF_PALM_BASE = 0;\nconst PALM_LANDMARKS_INDEX_OF_MIDDLE_FINGER_BASE = 2;\n\nexport class HandPipeline {\n handDetector: any;\n landmarkDetector: any;\n inputSize: number;\n storedBoxes: any;\n skipped: number;\n detectedHands: number;\n\n constructor(handDetector, landmarkDetector, inputSize) {\n this.handDetector = handDetector;\n this.landmarkDetector = landmarkDetector;\n this.inputSize = inputSize;\n this.storedBoxes = [];\n this.skipped = 0;\n this.detectedHands = 0;\n }\n\n getBoxForPalmLandmarks(palmLandmarks, rotationMatrix) {\n const rotatedPalmLandmarks = palmLandmarks.map((coord) => util.rotatePoint([...coord, 1], rotationMatrix));\n const boxAroundPalm = this.calculateLandmarksBoundingBox(rotatedPalmLandmarks);\n // return box.enlargeBox(box.squarifyBox(box.shiftBox(boxAroundPalm, PALM_BOX_SHIFT_VECTOR)), PALM_BOX_ENLARGE_FACTOR);\n return box.enlargeBox(box.squarifyBox(boxAroundPalm), PALM_BOX_ENLARGE_FACTOR);\n }\n\n getBoxForHandLandmarks(landmarks) {\n const boundingBox = this.calculateLandmarksBoundingBox(landmarks);\n // const boxAroundHand = box.enlargeBox(box.squarifyBox(box.shiftBox(boundingBox, HAND_BOX_SHIFT_VECTOR)), HAND_BOX_ENLARGE_FACTOR);\n const boxAroundHand = box.enlargeBox(box.squarifyBox(boundingBox), HAND_BOX_ENLARGE_FACTOR);\n boxAroundHand.palmLandmarks = [];\n for (let i = 0; i < PALM_LANDMARK_IDS.length; i++) {\n boxAroundHand.palmLandmarks.push(landmarks[PALM_LANDMARK_IDS[i]].slice(0, 2));\n }\n return boxAroundHand;\n }\n\n transformRawCoords(rawCoords, box2, angle, rotationMatrix) {\n const boxSize = box.getBoxSize(box2);\n const scaleFactor = [boxSize[0] / this.inputSize, boxSize[1] / this.inputSize, (boxSize[0] + boxSize[1]) / this.inputSize / 2];\n const coordsScaled = rawCoords.map((coord) => [\n scaleFactor[0] * (coord[0] - this.inputSize / 2),\n scaleFactor[1] * (coord[1] - this.inputSize / 2),\n scaleFactor[2] * coord[2],\n ]);\n const coordsRotationMatrix = util.buildRotationMatrix(angle, [0, 0]);\n const coordsRotated = coordsScaled.map((coord) => {\n const rotated = util.rotatePoint(coord, coordsRotationMatrix);\n return [...rotated, coord[2]];\n });\n const inverseRotationMatrix = util.invertTransformMatrix(rotationMatrix);\n const boxCenter = [...box.getBoxCenter(box2), 1];\n const originalBoxCenter = [\n util.dot(boxCenter, inverseRotationMatrix[0]),\n util.dot(boxCenter, inverseRotationMatrix[1]),\n ];\n return coordsRotated.map((coord) => [\n coord[0] + originalBoxCenter[0],\n coord[1] + originalBoxCenter[1],\n coord[2],\n ]);\n }\n\n async estimateHands(image, config) {\n let useFreshBox = false;\n\n // run new detector every skipFrames unless we only want box to start with\n let boxes;\n if ((this.skipped === 0) || (this.skipped > config.hand.skipFrames) || !config.hand.landmarks || !config.videoOptimized) {\n boxes = await this.handDetector.estimateHandBounds(image, config);\n this.skipped = 0;\n }\n if (config.videoOptimized) this.skipped++;\n\n // if detector result count doesn't match current working set, use it to reset current working set\n if (boxes && (boxes.length > 0) && ((boxes.length !== this.detectedHands) && (this.detectedHands !== config.hand.maxHands) || !config.hand.landmarks)) {\n this.detectedHands = 0;\n this.storedBoxes = [...boxes];\n // for (const possible of boxes) this.storedBoxes.push(possible);\n if (this.storedBoxes.length > 0) useFreshBox = true;\n }\n const hands: Array<{}> = [];\n\n if (config.hand.skipInitial && this.detectedHands === 0) this.skipped = 0;\n\n // go through working set of boxes\n for (let i = 0; i < this.storedBoxes.length; i++) {\n const currentBox = this.storedBoxes[i];\n if (!currentBox) continue;\n if (config.hand.landmarks) {\n const angle = config.hand.rotation ? util.computeRotation(currentBox.palmLandmarks[PALM_LANDMARKS_INDEX_OF_PALM_BASE], currentBox.palmLandmarks[PALM_LANDMARKS_INDEX_OF_MIDDLE_FINGER_BASE]) : 0;\n const palmCenter = box.getBoxCenter(currentBox);\n const palmCenterNormalized = [palmCenter[0] / image.shape[2], palmCenter[1] / image.shape[1]];\n const rotatedImage = config.hand.rotation ? tf.image.rotateWithOffset(image, angle, 0, palmCenterNormalized) : image.clone();\n const rotationMatrix = util.buildRotationMatrix(-angle, palmCenter);\n const newBox = useFreshBox ? this.getBoxForPalmLandmarks(currentBox.palmLandmarks, rotationMatrix) : currentBox;\n const croppedInput = box.cutBoxFromImageAndResize(newBox, rotatedImage, [this.inputSize, this.inputSize]);\n const handImage = croppedInput.div(255);\n croppedInput.dispose();\n rotatedImage.dispose();\n const [confidenceT, keypoints] = await this.landmarkDetector.predict(handImage);\n handImage.dispose();\n const confidence = confidenceT.dataSync()[0];\n confidenceT.dispose();\n if (confidence >= config.hand.minConfidence) {\n const keypointsReshaped = tf.reshape(keypoints, [-1, 3]);\n const rawCoords = keypointsReshaped.arraySync();\n keypoints.dispose();\n keypointsReshaped.dispose();\n const coords = this.transformRawCoords(rawCoords, newBox, angle, rotationMatrix);\n const nextBoundingBox = this.getBoxForHandLandmarks(coords);\n this.storedBoxes[i] = nextBoundingBox;\n const result = {\n landmarks: coords,\n confidence,\n box: { topLeft: nextBoundingBox.startPoint, bottomRight: nextBoundingBox.endPoint },\n };\n hands.push(result);\n } else {\n this.storedBoxes[i] = null;\n }\n keypoints.dispose();\n } else {\n // const enlarged = box.enlargeBox(box.squarifyBox(box.shiftBox(currentBox, HAND_BOX_SHIFT_VECTOR)), HAND_BOX_ENLARGE_FACTOR);\n const enlarged = box.enlargeBox(box.squarifyBox(currentBox), HAND_BOX_ENLARGE_FACTOR);\n const result = {\n confidence: currentBox.confidence,\n box: { topLeft: enlarged.startPoint, bottomRight: enlarged.endPoint },\n };\n hands.push(result);\n }\n }\n this.storedBoxes = this.storedBoxes.filter((a) => a !== null);\n this.detectedHands = hands.length;\n return hands;\n }\n\n // eslint-disable-next-line class-methods-use-this\n calculateLandmarksBoundingBox(landmarks) {\n const xs = landmarks.map((d) => d[0]);\n const ys = landmarks.map((d) => d[1]);\n const startPoint = [Math.min(...xs), Math.min(...ys)];\n const endPoint = [Math.max(...xs), Math.max(...ys)];\n return { startPoint, endPoint };\n }\n}\n", "export const anchors = [\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n];\n", "import { log } from '../helpers';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile';\nimport * as annotations from './annotations';\n\nlet model;\n\nexport async function load(config) {\n if (!model) {\n model = await tf.loadGraphModel(config.body.modelPath);\n model.width = parseInt(model.signature.inputs['input_1:0'].tensorShape.dim[2].size);\n model.height = parseInt(model.signature.inputs['input_1:0'].tensorShape.dim[1].size);\n if (config.debug) log(`load model: ${config.body.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return model;\n}\n\nexport async function predict(image, config) {\n if (!model) return null;\n if (!config.body.enabled) return null;\n const imgSize = { width: image.shape[2], height: image.shape[1] };\n const resize = tf.image.resizeBilinear(image, [model.width, model.height], false);\n const normalize = tf.div(resize, [255.0]);\n resize.dispose();\n let points;\n if (!config.profile) { // run through profiler or just execute\n const resT = await model.predict(normalize);\n // const segmentationT = resT.find((t) => (t.size === 16384))?.squeeze();\n // const segmentation = segmentationT.arraySync(); // array 128 x 128\n // segmentationT.dispose();\n points = resT.find((t) => (t.size === 195 || t.size === 155)).dataSync(); // order of output tensors may change between models, full has 195 and upper has 155 items\n resT.forEach((t) => t.dispose());\n } else {\n const profileData = await tf.profile(() => model.predict(normalize));\n points = profileData.result.find((t) => (t.size === 195 || t.size === 155)).dataSync();\n profileData.result.forEach((t) => t.dispose());\n profile.run('blazepose', profileData);\n }\n normalize.dispose();\n const keypoints: Array<{ id, part, position: { x, y, z }, score, presence }> = [];\n const labels = points.length === 195 ? annotations.full : annotations.upper; // full model has 39 keypoints, upper has 31 keypoints\n const depth = 5; // each points has x,y,z,visibility,presence\n for (let i = 0; i < points.length / depth; i++) {\n keypoints.push({\n id: i,\n part: labels[i],\n position: {\n x: Math.trunc(imgSize.width * points[depth * i + 0] / 255), // return normalized x value istead of 0..255\n y: Math.trunc(imgSize.height * points[depth * i + 1] / 255), // return normalized y value istead of 0..255\n z: Math.trunc(points[depth * i + 2]) + 0, // fix negative zero\n },\n score: (100 - Math.trunc(100 / (1 + Math.exp(points[depth * i + 3])))) / 100, // reverse sigmoid value\n presence: (100 - Math.trunc(100 / (1 + Math.exp(points[depth * i + 4])))) / 100, // reverse sigmoid value\n });\n }\n return [{ keypoints }];\n}\n", "export const full = [\n 'nose',\n 'leftEyeInside',\n 'leftEye',\n 'leftEyeOutside',\n 'rightEyeInside',\n 'rightEye',\n 'rightEyeOutside',\n 'leftEar',\n 'rightEar',\n 'leftMouth',\n 'rightMouth',\n 'leftShoulder',\n 'rightShoulder',\n 'leftElbow',\n 'rightElbow',\n 'leftWrist',\n 'rightWrist',\n 'leftPalm',\n 'rightPalm',\n 'leftIndex',\n 'rightIndex',\n 'leftPinky',\n 'rightPinky',\n 'leftHip',\n 'rightHip',\n 'leftKnee',\n 'rightKnee',\n 'leftAnkle',\n 'rightAnkle',\n 'leftHeel',\n 'rightHeel',\n 'leftFoot',\n 'rightFoot',\n 'midHip',\n 'forehead',\n 'leftThumb',\n 'leftHand',\n 'rightThumb',\n 'rightHand',\n];\n\nexport const upper = [\n 'nose',\n 'leftEyeInside',\n 'leftEye',\n 'leftEyeOutside',\n 'rightEyeInside',\n 'rightEye',\n 'rightEyeOutside',\n 'leftEar',\n 'rightEar',\n 'leftMouth',\n 'rightMouth',\n 'leftShoulder',\n 'rightShoulder',\n 'leftElbow',\n 'rightElbow',\n 'left:15',\n 'right:16',\n 'left:17',\n 'right:18',\n 'left:19',\n 'right:20',\n 'left:21',\n 'right:22',\n 'leftChest',\n 'rightChest',\n 'neck',\n 'forehead',\n 'left:27',\n 'right:28',\n 'left:29',\n 'right:30',\n];\n", "import { log } from '../helpers';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile';\nimport { labels } from './labels';\n\nlet model;\nlet last: Array<{}> = [];\nlet skipped = Number.MAX_SAFE_INTEGER;\n\nconst scaleBox = 2.5; // increase box size\nconst activateScore = false;\n\nexport async function load(config) {\n if (!model) {\n model = await tf.loadGraphModel(config.object.modelPath);\n // @ts-ignore\n model.inputSize = parseInt(Object.values(model.modelSignature['inputs'])[0].tensorShape.dim[2].size);\n if (config.debug) log(`load model: ${config.object.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return model;\n}\n\nasync function process(res, inputSize, outputShape, config) {\n let id = 0;\n let results: Array<{ score: number, strideSize: number, class: number, label: string, center: number[], centerRaw: number[], box: number[], boxRaw: number[] }> = [];\n for (const strideSize of [1, 2, 4]) { // try each stride size as it detects large/medium/small objects\n // find scores, boxes, classes\n tf.tidy(() => { // wrap in tidy to automatically deallocate temp tensors\n const baseSize = strideSize * 13; // 13x13=169, 26x26=676, 52x52=2704\n // find boxes and scores output depending on stride\n const scoresT = res.find((a) => (a.shape[1] === (baseSize ** 2) && a.shape[2] === 80))?.squeeze();\n const featuresT = res.find((a) => (a.shape[1] === (baseSize ** 2) && a.shape[2] < 80))?.squeeze();\n const boxesMax = featuresT.reshape([-1, 4, featuresT.shape[1] / 4]); // reshape [output] to [4, output / 4] where number is number of different features inside each stride\n const boxIdx = boxesMax.argMax(2).arraySync(); // what we need is indexes of features with highest scores, not values itself\n const scores = activateScore ? scoresT.exp(1).arraySync() : scoresT.arraySync(); // optionally use exponential scores or just as-is\n for (let i = 0; i < scoresT.shape[0]; i++) { // total strides (x * y matrix)\n for (let j = 0; j < scoresT.shape[1]; j++) { // one score for each class\n const score = scores[i][j] - (activateScore ? 1 : 0); // get score for current position\n if (score > config.object.minConfidence) {\n const cx = (0.5 + Math.trunc(i % baseSize)) / baseSize; // center.x normalized to range 0..1\n const cy = (0.5 + Math.trunc(i / baseSize)) / baseSize; // center.y normalized to range 0..1\n const boxOffset = boxIdx[i].map((a) => a * (baseSize / strideSize / inputSize)); // just grab indexes of features with highest scores\n let boxRaw = [ // results normalized to range 0..1\n cx - (scaleBox / strideSize * boxOffset[0]),\n cy - (scaleBox / strideSize * boxOffset[1]),\n cx + (scaleBox / strideSize * boxOffset[2]),\n cy + (scaleBox / strideSize * boxOffset[3]),\n ];\n boxRaw = boxRaw.map((a) => Math.max(0, Math.min(a, 1))); // fix out-of-bounds coords\n const box = [ // results normalized to input image pixels\n boxRaw[0] * outputShape[0],\n boxRaw[1] * outputShape[1],\n boxRaw[2] * outputShape[0],\n boxRaw[3] * outputShape[1],\n ];\n const result = {\n id: id++,\n strideSize,\n score,\n class: j + 1,\n label: labels[j].label,\n center: [Math.trunc(outputShape[0] * cx), Math.trunc(outputShape[1] * cy)],\n centerRaw: [cx, cy],\n box: box.map((a) => Math.trunc(a)),\n boxRaw,\n };\n results.push(result);\n }\n }\n }\n });\n }\n // deallocate tensors\n res.forEach((t) => tf.dispose(t));\n\n // normally nms is run on raw results, but since boxes need to be calculated this way we skip calulcation of\n // unnecessary boxes and run nms only on good candidates (basically it just does IOU analysis as scores are already filtered)\n const nmsBoxes = results.map((a) => a.boxRaw);\n const nmsScores = results.map((a) => a.score);\n const nms = await tf.image.nonMaxSuppressionAsync(nmsBoxes, nmsScores, config.object.maxResults, config.object.iouThreshold, config.object.minConfidence);\n const nmsIdx = nms.dataSync();\n tf.dispose(nms);\n\n // filter & sort results\n results = results\n .filter((a, idx) => nmsIdx.includes(idx))\n // @ts-ignore\n .sort((a, b) => (b.score - a.score));\n\n return results;\n}\n\nexport async function predict(image, config) {\n if (!model) return null;\n // console.log(skipped, config.object.skipFrames, config.videoOptimized, ((skipped < config.object.skipFrames) && config.videoOptimized && (last.length > 0)));\n if ((skipped < config.object.skipFrames) && config.videoOptimized && (last.length > 0)) {\n skipped++;\n return last;\n }\n if (config.videoOptimized) skipped = 0;\n else skipped = Number.MAX_SAFE_INTEGER;\n return new Promise(async (resolve) => {\n const outputSize = [image.shape[2], image.shape[1]];\n const resize = tf.image.resizeBilinear(image, [model.inputSize, model.inputSize], false);\n const norm = resize.div(255);\n resize.dispose();\n const transpose = norm.transpose([0, 3, 1, 2]);\n norm.dispose();\n\n let objectT;\n if (!config.profile) {\n if (config.object.enabled) objectT = await model.predict(transpose);\n } else {\n const profileObject = config.object.enabled ? await tf.profile(() => model.predict(transpose)) : {};\n objectT = profileObject.result.clone();\n profileObject.result.dispose();\n profile.run('object', profileObject);\n }\n transpose.dispose();\n\n const obj = await process(objectT, model.inputSize, outputSize, config);\n last = obj;\n resolve(obj);\n });\n}\n", "export const labels = [\n { class: 1, label: 'person' },\n { class: 2, label: 'bicycle' },\n { class: 3, label: 'car' },\n { class: 4, label: 'motorcycle' },\n { class: 5, label: 'airplane' },\n { class: 6, label: 'bus' },\n { class: 7, label: 'train' },\n { class: 8, label: 'truck' },\n { class: 9, label: 'boat' },\n { class: 10, label: 'traffic light' },\n { class: 11, label: 'fire hydrant' },\n { class: 12, label: 'stop sign' },\n { class: 13, label: 'parking meter' },\n { class: 14, label: 'bench' },\n { class: 15, label: 'bird' },\n { class: 16, label: 'cat' },\n { class: 17, label: 'dog' },\n { class: 18, label: 'horse' },\n { class: 19, label: 'sheep' },\n { class: 20, label: 'cow' },\n { class: 21, label: 'elephant' },\n { class: 22, label: 'bear' },\n { class: 23, label: 'zebra' },\n { class: 24, label: 'giraffe' },\n { class: 25, label: 'backpack' },\n { class: 26, label: 'umbrella' },\n { class: 27, label: 'handbag' },\n { class: 28, label: 'tie' },\n { class: 29, label: 'suitcase' },\n { class: 30, label: 'frisbee' },\n { class: 31, label: 'skis' },\n { class: 32, label: 'snowboard' },\n { class: 33, label: 'sports ball' },\n { class: 34, label: 'kite' },\n { class: 35, label: 'baseball bat' },\n { class: 36, label: 'baseball glove' },\n { class: 37, label: 'skateboard' },\n { class: 38, label: 'surfboard' },\n { class: 39, label: 'tennis racket' },\n { class: 40, label: 'bottle' },\n { class: 41, label: 'wine glass' },\n { class: 42, label: 'cup' },\n { class: 43, label: 'fork' },\n { class: 44, label: 'knife' },\n { class: 45, label: 'spoon' },\n { class: 46, label: 'bowl' },\n { class: 47, label: 'banana' },\n { class: 48, label: 'apple' },\n { class: 49, label: 'sandwich' },\n { class: 50, label: 'orange' },\n { class: 51, label: 'broccoli' },\n { class: 52, label: 'carrot' },\n { class: 53, label: 'hot dog' },\n { class: 54, label: 'pizza' },\n { class: 55, label: 'donut' },\n { class: 56, label: 'cake' },\n { class: 57, label: 'chair' },\n { class: 58, label: 'couch' },\n { class: 59, label: 'potted plant' },\n { class: 60, label: 'bed' },\n { class: 61, label: 'dining table' },\n { class: 62, label: 'toilet' },\n { class: 63, label: 'tv' },\n { class: 64, label: 'laptop' },\n { class: 65, label: 'mouse' },\n { class: 66, label: 'remote' },\n { class: 67, label: 'keyboard' },\n { class: 68, label: 'cell phone' },\n { class: 69, label: 'microwave' },\n { class: 70, label: 'oven' },\n { class: 71, label: 'toaster' },\n { class: 72, label: 'sink' },\n { class: 73, label: 'refrigerator' },\n { class: 74, label: 'book' },\n { class: 75, label: 'clock' },\n { class: 76, label: 'vase' },\n { class: 77, label: 'scissors' },\n { class: 78, label: 'teddy bear' },\n { class: 79, label: 'hair drier' },\n { class: 80, label: 'toothbrush' },\n];\n", "export const body = (res) => {\n if (!res) return [];\n const gestures: Array<{ body: number, gesture: string }> = [];\n for (let i = 0; i < res.length; i++) {\n // raising hands\n const leftWrist = res[i].keypoints.find((a) => (a.part === 'leftWrist'));\n const rightWrist = res[i].keypoints.find((a) => (a.part === 'rightWrist'));\n const nose = res[i].keypoints.find((a) => (a.part === 'nose'));\n if (nose && leftWrist && rightWrist && (leftWrist.position.y < nose.position.y) && (rightWrist.position.y < nose.position.y)) gestures.push({ body: i, gesture: 'i give up' });\n else if (nose && leftWrist && (leftWrist.position.y < nose.position.y)) gestures.push({ body: i, gesture: 'raise left hand' });\n else if (nose && rightWrist && (rightWrist.position.y < nose.position.y)) gestures.push({ body: i, gesture: 'raise right hand' });\n\n // leaning\n const leftShoulder = res[i].keypoints.find((a) => (a.part === 'leftShoulder'));\n const rightShoulder = res[i].keypoints.find((a) => (a.part === 'rightShoulder'));\n if (leftShoulder && rightShoulder) gestures.push({ body: i, gesture: `leaning ${(leftShoulder.position.y > rightShoulder.position.y) ? 'left' : 'right'}` });\n }\n return gestures;\n};\n\nexport const face = (res) => {\n if (!res) return [];\n const gestures: Array<{ face: number, gesture: string }> = [];\n for (let i = 0; i < res.length; i++) {\n if (res[i].mesh && res[i].mesh.length > 0) {\n const eyeFacing = res[i].mesh[33][2] - res[i].mesh[263][2];\n if (Math.abs(eyeFacing) < 10) gestures.push({ face: i, gesture: 'facing camera' });\n else gestures.push({ face: i, gesture: `facing ${eyeFacing < 0 ? 'right' : 'left'}` });\n const openLeft = Math.abs(res[i].mesh[374][1] - res[i].mesh[386][1]) / Math.abs(res[i].mesh[443][1] - res[i].mesh[450][1]); // center of eye inner lid y coord div center of wider eye border y coord\n if (openLeft < 0.2) gestures.push({ face: i, gesture: 'blink left eye' });\n const openRight = Math.abs(res[i].mesh[145][1] - res[i].mesh[159][1]) / Math.abs(res[i].mesh[223][1] - res[i].mesh[230][1]); // center of eye inner lid y coord div center of wider eye border y coord\n if (openRight < 0.2) gestures.push({ face: i, gesture: 'blink right eye' });\n const mouthOpen = Math.min(100, 500 * Math.abs(res[i].mesh[13][1] - res[i].mesh[14][1]) / Math.abs(res[i].mesh[10][1] - res[i].mesh[152][1]));\n if (mouthOpen > 10) gestures.push({ face: i, gesture: `mouth ${Math.trunc(mouthOpen)}% open` });\n const chinDepth = res[i].mesh[152][2];\n if (Math.abs(chinDepth) > 10) gestures.push({ face: i, gesture: `head ${chinDepth < 0 ? 'up' : 'down'}` });\n }\n }\n return gestures;\n};\n\nexport const iris = (res) => {\n if (!res) return [];\n const gestures: Array<{ iris: number, gesture: string }> = [];\n for (let i = 0; i < res.length; i++) {\n if (!res[i].annotations || !res[i].annotations.leftEyeIris || !res[i].annotations.rightEyeIris) continue;\n const sizeXLeft = res[i].annotations.leftEyeIris[3][0] - res[i].annotations.leftEyeIris[1][0];\n const sizeYLeft = res[i].annotations.leftEyeIris[4][1] - res[i].annotations.leftEyeIris[2][1];\n const areaLeft = Math.abs(sizeXLeft * sizeYLeft);\n\n const sizeXRight = res[i].annotations.rightEyeIris[3][0] - res[i].annotations.rightEyeIris[1][0];\n const sizeYRight = res[i].annotations.rightEyeIris[4][1] - res[i].annotations.rightEyeIris[2][1];\n const areaRight = Math.abs(sizeXRight * sizeYRight);\n\n const difference = Math.abs(areaLeft - areaRight) / Math.max(areaLeft, areaRight);\n if (difference < 0.25) gestures.push({ iris: i, gesture: 'looking at camera' });\n }\n return gestures;\n};\n\nexport const hand = (res) => {\n if (!res) return [];\n const gestures: Array<{ hand: number, gesture: string }> = [];\n for (let i = 0; i < res.length; i++) {\n const fingers: Array<{ name: string, position: number }> = [];\n for (const [finger, pos] of Object.entries(res[i]['annotations'])) {\n // @ts-ignore\n if (finger !== 'palmBase') fingers.push({ name: finger.toLowerCase(), position: pos[0] }); // get tip of each finger\n }\n if (fingers && fingers.length > 0) {\n const closest = fingers.reduce((best, a) => (best.position[2] < a.position[2] ? best : a));\n const highest = fingers.reduce((best, a) => (best.position[1] < a.position[1] ? best : a));\n gestures.push({ hand: i, gesture: `${closest.name} forward ${highest.name} up` });\n }\n }\n return gestures;\n};\n", "/*\nWebGLImageFilter - MIT Licensed\n2013, Dominic Szablewski - phoboslab.org\n\n*/\n\nfunction GLProgram(gl, vertexSource, fragmentSource) {\n const _collect = function (source, prefix, collection) {\n const r = new RegExp('\\\\b' + prefix + ' \\\\w+ (\\\\w+)', 'ig');\n source.replace(r, (match, name) => {\n collection[name] = 0;\n return match;\n });\n };\n\n const _compile = function (source, type) {\n const shader = gl.createShader(type);\n gl.shaderSource(shader, source);\n gl.compileShader(shader);\n if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {\n // @ts-ignore\n throw new Error('Filter: GL compile failed', gl.getShaderInfoLog(shader));\n }\n return shader;\n };\n\n this.uniform = {};\n this.attribute = {};\n const _vsh = _compile(vertexSource, gl.VERTEX_SHADER);\n const _fsh = _compile(fragmentSource, gl.FRAGMENT_SHADER);\n this.id = gl.createProgram();\n gl.attachShader(this.id, _vsh);\n gl.attachShader(this.id, _fsh);\n gl.linkProgram(this.id);\n\n if (!gl.getProgramParameter(this.id, gl.LINK_STATUS)) {\n // @ts-ignore\n throw new Error('Filter: GL link failed', gl.getProgramInfoLog(this.id));\n }\n\n gl.useProgram(this.id);\n // Collect attributes\n _collect(vertexSource, 'attribute', this.attribute);\n for (const a in this.attribute) this.attribute[a] = gl.getAttribLocation(this.id, a);\n // Collect uniforms\n _collect(vertexSource, 'uniform', this.uniform);\n _collect(fragmentSource, 'uniform', this.uniform);\n for (const u in this.uniform) this.uniform[u] = gl.getUniformLocation(this.id, u);\n}\n\n// export const GLImageFilter = function (params) {\nexport function GLImageFilter(params) {\n if (!params) params = { };\n let _drawCount = 0;\n let _sourceTexture = null;\n let _lastInChain = false;\n let _currentFramebufferIndex = -1;\n let _tempFramebuffers = [null, null];\n let _filterChain = [];\n let _width = -1;\n let _height = -1;\n let _vertexBuffer = null;\n let _currentProgram = null;\n const _filter = {};\n const _canvas = params.canvas || document.createElement('canvas');\n // key is the shader program source, value is the compiled program\n const _shaderProgramCache = { };\n const DRAW = { INTERMEDIATE: 1 };\n const gl = _canvas.getContext('webgl');\n if (!gl) throw new Error('Filter: getContext() failed');\n\n this.addFilter = function (name) {\n // eslint-disable-next-line prefer-rest-params\n const args = Array.prototype.slice.call(arguments, 1);\n const filter = _filter[name];\n _filterChain.push({ func: filter, args });\n };\n\n this.reset = function () {\n _filterChain = [];\n };\n\n const _resize = function (width, height) {\n // Same width/height? Nothing to do here\n if (width === _width && height === _height) { return; }\n _canvas.width = width;\n _width = width;\n _canvas.height = height;\n _height = height;\n // Create the context if we don't have it yet\n if (!_vertexBuffer) {\n // Create the vertex buffer for the two triangles [x, y, u, v] * 6\n const vertices = new Float32Array([\n -1, -1, 0, 1, 1, -1, 1, 1, -1, 1, 0, 0,\n -1, 1, 0, 0, 1, -1, 1, 1, 1, 1, 1, 0,\n ]);\n // eslint-disable-next-line no-unused-expressions\n (_vertexBuffer = gl.createBuffer(), gl.bindBuffer(gl.ARRAY_BUFFER, _vertexBuffer));\n gl.bufferData(gl.ARRAY_BUFFER, vertices, gl.STATIC_DRAW);\n gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, true);\n }\n gl.viewport(0, 0, _width, _height);\n // Delete old temp framebuffers\n _tempFramebuffers = [null, null];\n };\n\n const _createFramebufferTexture = function (width, height) {\n const fbo = gl.createFramebuffer();\n gl.bindFramebuffer(gl.FRAMEBUFFER, fbo);\n const renderbuffer = gl.createRenderbuffer();\n gl.bindRenderbuffer(gl.RENDERBUFFER, renderbuffer);\n const texture = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, texture);\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, width, height, 0, gl.RGBA, gl.UNSIGNED_BYTE, null);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, texture, 0);\n gl.bindTexture(gl.TEXTURE_2D, null);\n gl.bindFramebuffer(gl.FRAMEBUFFER, null);\n return { fbo, texture };\n };\n\n const _getTempFramebuffer = function (index) {\n // @ts-ignore\n _tempFramebuffers[index] = _tempFramebuffers[index] || _createFramebufferTexture(_width, _height);\n return _tempFramebuffers[index];\n };\n\n const _draw = function (flags = null) {\n let source = null;\n let target = null;\n let flipY = false;\n // Set up the source\n if (_drawCount === 0) {\n // First draw call - use the source texture\n source = _sourceTexture;\n } else {\n // All following draw calls use the temp buffer last drawn to\n // @ts-ignore\n source = _getTempFramebuffer(_currentFramebufferIndex)?.texture;\n }\n _drawCount++;\n // Set up the target\n if (_lastInChain && !(flags & DRAW.INTERMEDIATE)) {\n // Last filter in our chain - draw directly to the WebGL Canvas. We may\n // also have to flip the image vertically now\n target = null;\n flipY = _drawCount % 2 === 0;\n } else {\n // Intermediate draw call - get a temp buffer to draw to\n _currentFramebufferIndex = (_currentFramebufferIndex + 1) % 2;\n // @ts-ignore\n target = _getTempFramebuffer(_currentFramebufferIndex)?.fbo;\n }\n // Bind the source and target and draw the two triangles\n gl.bindTexture(gl.TEXTURE_2D, source);\n gl.bindFramebuffer(gl.FRAMEBUFFER, target);\n gl.uniform1f(_currentProgram.uniform.flipY, (flipY ? -1 : 1));\n gl.drawArrays(gl.TRIANGLES, 0, 6);\n };\n\n this.apply = function (image) {\n _resize(image.width, image.height);\n _drawCount = 0;\n // Create the texture for the input image if we haven't yet\n if (!_sourceTexture) _sourceTexture = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, _sourceTexture);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, image);\n // No filters? Just draw\n if (_filterChain.length === 0) {\n // const program = _compileShader(SHADER.FRAGMENT_IDENTITY);\n _draw();\n return _canvas;\n }\n for (let i = 0; i < _filterChain.length; i++) {\n _lastInChain = (i === _filterChain.length - 1);\n const f = _filterChain[i];\n f.func.apply(this, f.args || []);\n }\n return _canvas;\n };\n\n const _compileShader = function (fragmentSource) {\n if (_shaderProgramCache[fragmentSource]) {\n _currentProgram = _shaderProgramCache[fragmentSource];\n gl.useProgram(_currentProgram.id);\n return _currentProgram;\n }\n // Compile shaders\n const SHADER = {};\n SHADER.VERTEX_IDENTITY = [\n 'precision highp float;',\n 'attribute vec2 pos;',\n 'attribute vec2 uv;',\n 'varying vec2 vUv;',\n 'uniform float flipY;',\n 'void main(void) {',\n 'vUv = uv;',\n 'gl_Position = vec4(pos.x, pos.y*flipY, 0.0, 1.);',\n '}',\n ].join('\\n');\n SHADER.FRAGMENT_IDENTITY = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n 'void main(void) {',\n 'gl_FragColor = texture2D(texture, vUv);',\n '}',\n ].join('\\n');\n _currentProgram = new GLProgram(gl, SHADER.VERTEX_IDENTITY, fragmentSource);\n const floatSize = Float32Array.BYTES_PER_ELEMENT;\n const vertSize = 4 * floatSize;\n gl.enableVertexAttribArray(_currentProgram.attribute.pos);\n gl.vertexAttribPointer(_currentProgram.attribute.pos, 2, gl.FLOAT, false, vertSize, 0 * floatSize);\n gl.enableVertexAttribArray(_currentProgram.attribute.uv);\n gl.vertexAttribPointer(_currentProgram.attribute.uv, 2, gl.FLOAT, false, vertSize, 2 * floatSize);\n _shaderProgramCache[fragmentSource] = _currentProgram;\n return _currentProgram;\n };\n\n // -------------------------------------------------------------------------\n // Color Matrix Filter\n _filter.colorMatrix = function (matrix) {\n // Create a Float32 Array and normalize the offset component to 0-1\n const m = new Float32Array(matrix);\n m[4] /= 255;\n m[9] /= 255;\n m[14] /= 255;\n m[19] /= 255;\n // Can we ignore the alpha value? Makes things a bit faster.\n const shader = (m[18] === 1 && m[3] === 0 && m[8] === 0 && m[13] === 0 && m[15] === 0 && m[16] === 0 && m[17] === 0 && m[19] === 0)\n ? _filter.colorMatrix.SHADER.WITHOUT_ALPHA\n : _filter.colorMatrix.SHADER.WITH_ALPHA;\n const program = _compileShader(shader);\n gl.uniform1fv(program.uniform.m, m);\n _draw();\n };\n _filter.colorMatrix.SHADER = {};\n _filter.colorMatrix.SHADER.WITH_ALPHA = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n 'uniform float m[20];',\n 'void main(void) {',\n 'vec4 c = texture2D(texture, vUv);',\n 'gl_FragColor.r = m[0] * c.r + m[1] * c.g + m[2] * c.b + m[3] * c.a + m[4];',\n 'gl_FragColor.g = m[5] * c.r + m[6] * c.g + m[7] * c.b + m[8] * c.a + m[9];',\n 'gl_FragColor.b = m[10] * c.r + m[11] * c.g + m[12] * c.b + m[13] * c.a + m[14];',\n 'gl_FragColor.a = m[15] * c.r + m[16] * c.g + m[17] * c.b + m[18] * c.a + m[19];',\n '}',\n ].join('\\n');\n _filter.colorMatrix.SHADER.WITHOUT_ALPHA = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n 'uniform float m[20];',\n 'void main(void) {',\n 'vec4 c = texture2D(texture, vUv);',\n 'gl_FragColor.r = m[0] * c.r + m[1] * c.g + m[2] * c.b + m[4];',\n 'gl_FragColor.g = m[5] * c.r + m[6] * c.g + m[7] * c.b + m[9];',\n 'gl_FragColor.b = m[10] * c.r + m[11] * c.g + m[12] * c.b + m[14];',\n 'gl_FragColor.a = c.a;',\n '}',\n ].join('\\n');\n\n _filter.brightness = function (brightness) {\n const b = (brightness || 0) + 1;\n _filter.colorMatrix([\n b, 0, 0, 0, 0,\n 0, b, 0, 0, 0,\n 0, 0, b, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.saturation = function (amount) {\n const x = (amount || 0) * 2 / 3 + 1;\n const y = ((x - 1) * -0.5);\n _filter.colorMatrix([\n x, y, y, 0, 0,\n y, x, y, 0, 0,\n y, y, x, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.desaturate = function () {\n _filter.saturation(-1);\n };\n\n _filter.contrast = function (amount) {\n const v = (amount || 0) + 1;\n const o = -128 * (v - 1);\n\n _filter.colorMatrix([\n v, 0, 0, 0, o,\n 0, v, 0, 0, o,\n 0, 0, v, 0, o,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.negative = function () {\n _filter.contrast(-2);\n };\n\n _filter.hue = function (rotation) {\n rotation = (rotation || 0) / 180 * Math.PI;\n const cos = Math.cos(rotation);\n const sin = Math.sin(rotation);\n const lumR = 0.213;\n const lumG = 0.715;\n const lumB = 0.072;\n\n _filter.colorMatrix([\n lumR + cos * (1 - lumR) + sin * (-lumR), lumG + cos * (-lumG) + sin * (-lumG), lumB + cos * (-lumB) + sin * (1 - lumB), 0, 0,\n lumR + cos * (-lumR) + sin * (0.143), lumG + cos * (1 - lumG) + sin * (0.140), lumB + cos * (-lumB) + sin * (-0.283), 0, 0,\n lumR + cos * (-lumR) + sin * (-(1 - lumR)), lumG + cos * (-lumG) + sin * (lumG), lumB + cos * (1 - lumB) + sin * (lumB), 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.desaturateLuminance = function () {\n _filter.colorMatrix([\n 0.2764723, 0.9297080, 0.0938197, 0, -37.1,\n 0.2764723, 0.9297080, 0.0938197, 0, -37.1,\n 0.2764723, 0.9297080, 0.0938197, 0, -37.1,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.sepia = function () {\n _filter.colorMatrix([\n 0.393, 0.7689999, 0.18899999, 0, 0,\n 0.349, 0.6859999, 0.16799999, 0, 0,\n 0.272, 0.5339999, 0.13099999, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.brownie = function () {\n _filter.colorMatrix([\n 0.5997023498159715, 0.34553243048391263, -0.2708298674538042, 0, 47.43192855600873,\n -0.037703249837783157, 0.8609577587992641, 0.15059552388459913, 0, -36.96841498319127,\n 0.24113635128153335, -0.07441037908422492, 0.44972182064877153, 0, -7.562075277591283,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.vintagePinhole = function () {\n _filter.colorMatrix([\n 0.6279345635605994, 0.3202183420819367, -0.03965408211312453, 0, 9.651285835294123,\n 0.02578397704808868, 0.6441188644374771, 0.03259127616149294, 0, 7.462829176470591,\n 0.0466055556782719, -0.0851232987247891, 0.5241648018700465, 0, 5.159190588235296,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.kodachrome = function () {\n _filter.colorMatrix([\n 1.1285582396593525, -0.3967382283601348, -0.03992559172921793, 0, 63.72958762196502,\n -0.16404339962244616, 1.0835251566291304, -0.05498805115633132, 0, 24.732407896706203,\n -0.16786010706155763, -0.5603416277695248, 1.6014850761964943, 0, 35.62982807460946,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.technicolor = function () {\n _filter.colorMatrix([\n 1.9125277891456083, -0.8545344976951645, -0.09155508482755585, 0, 11.793603434377337,\n -0.3087833385928097, 1.7658908555458428, -0.10601743074722245, 0, -70.35205161461398,\n -0.231103377548616, -0.7501899197440212, 1.847597816108189, 0, 30.950940869491138,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.polaroid = function () {\n _filter.colorMatrix([\n 1.438, -0.062, -0.062, 0, 0,\n -0.122, 1.378, -0.122, 0, 0,\n -0.016, -0.016, 1.483, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.shiftToBGR = function () {\n _filter.colorMatrix([\n 0, 0, 1, 0, 0,\n 0, 1, 0, 0, 0,\n 1, 0, 0, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n // -------------------------------------------------------------------------\n // Convolution Filter\n _filter.convolution = function (matrix) {\n const m = new Float32Array(matrix);\n const pixelSizeX = 1 / _width;\n const pixelSizeY = 1 / _height;\n const program = _compileShader(_filter.convolution.SHADER);\n gl.uniform1fv(program.uniform.m, m);\n gl.uniform2f(program.uniform.px, pixelSizeX, pixelSizeY);\n _draw();\n };\n\n _filter.convolution.SHADER = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n 'uniform vec2 px;',\n 'uniform float m[9];',\n 'void main(void) {',\n 'vec4 c11 = texture2D(texture, vUv - px);', // top left\n 'vec4 c12 = texture2D(texture, vec2(vUv.x, vUv.y - px.y));', // top center\n 'vec4 c13 = texture2D(texture, vec2(vUv.x + px.x, vUv.y - px.y));', // top right\n 'vec4 c21 = texture2D(texture, vec2(vUv.x - px.x, vUv.y) );', // mid left\n 'vec4 c22 = texture2D(texture, vUv);', // mid center\n 'vec4 c23 = texture2D(texture, vec2(vUv.x + px.x, vUv.y) );', // mid right\n 'vec4 c31 = texture2D(texture, vec2(vUv.x - px.x, vUv.y + px.y) );', // bottom left\n 'vec4 c32 = texture2D(texture, vec2(vUv.x, vUv.y + px.y) );', // bottom center\n 'vec4 c33 = texture2D(texture, vUv + px );', // bottom right\n 'gl_FragColor = ',\n 'c11 * m[0] + c12 * m[1] + c22 * m[2] +',\n 'c21 * m[3] + c22 * m[4] + c23 * m[5] +',\n 'c31 * m[6] + c32 * m[7] + c33 * m[8];',\n 'gl_FragColor.a = c22.a;',\n '}',\n ].join('\\n');\n\n _filter.detectEdges = function () {\n _filter.convolution.call(this, [\n 0, 1, 0,\n 1, -4, 1,\n 0, 1, 0,\n ]);\n };\n\n _filter.sobelX = function () {\n _filter.convolution.call(this, [\n -1, 0, 1,\n -2, 0, 2,\n -1, 0, 1,\n ]);\n };\n\n _filter.sobelY = function () {\n _filter.convolution.call(this, [\n -1, -2, -1,\n 0, 0, 0,\n 1, 2, 1,\n ]);\n };\n\n _filter.sharpen = function (amount) {\n const a = amount || 1;\n _filter.convolution.call(this, [\n 0, -1 * a, 0,\n -1 * a, 1 + 4 * a, -1 * a,\n 0, -1 * a, 0,\n ]);\n };\n\n _filter.emboss = function (size) {\n const s = size || 1;\n _filter.convolution.call(this, [\n -2 * s, -1 * s, 0,\n -1 * s, 1, 1 * s,\n 0, 1 * s, 2 * s,\n ]);\n };\n\n // -------------------------------------------------------------------------\n // Blur Filter\n _filter.blur = function (size) {\n const blurSizeX = (size / 7) / _width;\n const blurSizeY = (size / 7) / _height;\n const program = _compileShader(_filter.blur.SHADER);\n // Vertical\n gl.uniform2f(program.uniform.px, 0, blurSizeY);\n _draw(DRAW.INTERMEDIATE);\n // Horizontal\n gl.uniform2f(program.uniform.px, blurSizeX, 0);\n _draw();\n };\n\n _filter.blur.SHADER = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n 'uniform vec2 px;',\n 'void main(void) {',\n 'gl_FragColor = vec4(0.0);',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-7.0*px.x, -7.0*px.y))*0.0044299121055113265;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-6.0*px.x, -6.0*px.y))*0.00895781211794;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-5.0*px.x, -5.0*px.y))*0.0215963866053;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-4.0*px.x, -4.0*px.y))*0.0443683338718;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-3.0*px.x, -3.0*px.y))*0.0776744219933;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-2.0*px.x, -2.0*px.y))*0.115876621105;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-1.0*px.x, -1.0*px.y))*0.147308056121;',\n 'gl_FragColor += texture2D(texture, vUv )*0.159576912161;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 1.0*px.x, 1.0*px.y))*0.147308056121;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 2.0*px.x, 2.0*px.y))*0.115876621105;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 3.0*px.x, 3.0*px.y))*0.0776744219933;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 4.0*px.x, 4.0*px.y))*0.0443683338718;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 5.0*px.x, 5.0*px.y))*0.0215963866053;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 6.0*px.x, 6.0*px.y))*0.00895781211794;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 7.0*px.x, 7.0*px.y))*0.0044299121055113265;',\n '}',\n ].join('\\n');\n\n // -------------------------------------------------------------------------\n // Pixelate Filter\n _filter.pixelate = function (size) {\n const blurSizeX = (size) / _width;\n const blurSizeY = (size) / _height;\n const program = _compileShader(_filter.pixelate.SHADER);\n // Horizontal\n gl.uniform2f(program.uniform.size, blurSizeX, blurSizeY);\n _draw();\n };\n\n _filter.pixelate.SHADER = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform vec2 size;',\n 'uniform sampler2D texture;',\n 'vec2 pixelate(vec2 coord, vec2 size) {',\n 'return floor( coord / size ) * size;',\n '}',\n 'void main(void) {',\n 'gl_FragColor = vec4(0.0);',\n 'vec2 coord = pixelate(vUv, size);',\n 'gl_FragColor += texture2D(texture, coord);',\n '}',\n ].join('\\n');\n}\n", "// @ts-nocheck\n\nimport { log } from '../helpers';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as fxImage from './imagefx';\n\nconst maxSize = 2048;\n// internal temp canvases\nlet inCanvas = null;\nlet outCanvas = null;\n// instance of fximage\nlet fx = null;\n\n// process input image and return tensor\n// input can be tensor, imagedata, htmlimageelement, htmlvideoelement\n// input is resized and run through imagefx filter\nexport function process(input, config): { tensor: tf.Tensor, canvas: OffscreenCanvas | HTMLCanvasElement } {\n let tensor;\n if (input instanceof tf.Tensor) {\n tensor = tf.clone(input);\n } else {\n const originalWidth = input.naturalWidth || input.videoWidth || input.width || (input.shape && (input.shape[1] > 0));\n const originalHeight = input.naturalHeight || input.videoHeight || input.height || (input.shape && (input.shape[2] > 0));\n let targetWidth = originalWidth;\n let targetHeight = originalHeight;\n if (targetWidth > maxSize) {\n targetWidth = maxSize;\n targetHeight = targetWidth * originalHeight / originalWidth;\n }\n if (targetHeight > maxSize) {\n targetHeight = maxSize;\n targetWidth = targetHeight * originalWidth / originalHeight;\n }\n if (config.filter.width > 0) targetWidth = config.filter.width;\n else if (config.filter.height > 0) targetWidth = originalWidth * (config.filter.height / originalHeight);\n if (config.filter.height > 0) targetHeight = config.filter.height;\n else if (config.filter.width > 0) targetHeight = originalHeight * (config.filter.width / originalWidth);\n if (!targetWidth || !targetHeight) {\n log('Human: invalid input', input);\n return { tensor: null, canvas: null };\n }\n if (!inCanvas || (inCanvas.width !== targetWidth) || (inCanvas.height !== targetHeight)) {\n inCanvas = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(targetWidth, targetHeight) : document.createElement('canvas');\n if (inCanvas.width !== targetWidth) inCanvas.width = targetWidth;\n if (inCanvas.height !== targetHeight) inCanvas.height = targetHeight;\n }\n const ctx = inCanvas.getContext('2d');\n if (input instanceof ImageData) ctx.putImageData(input, 0, 0);\n else ctx.drawImage(input, 0, 0, originalWidth, originalHeight, 0, 0, inCanvas.width, inCanvas.height);\n if (config.filter.enabled) {\n if (!fx || !outCanvas || (inCanvas.width !== outCanvas.width) || (inCanvas.height !== outCanvas.height)) {\n outCanvas = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(inCanvas.width, inCanvas.height) : document.createElement('canvas');\n if (outCanvas.width !== inCanvas.width) outCanvas.width = inCanvas.width;\n if (outCanvas.height !== inCanvas.height) outCanvas.height = inCanvas.height;\n // log('created FX filter');\n fx = tf.ENV.flags.IS_BROWSER ? new fxImage.GLImageFilter({ canvas: outCanvas }) : null; // && (typeof document !== 'undefined')\n }\n if (!fx) return { tensor: null, canvas: inCanvas };\n fx.reset();\n fx.addFilter('brightness', config.filter.brightness); // must have at least one filter enabled\n if (config.filter.contrast !== 0) fx.addFilter('contrast', config.filter.contrast);\n if (config.filter.sharpness !== 0) fx.addFilter('sharpen', config.filter.sharpness);\n if (config.filter.blur !== 0) fx.addFilter('blur', config.filter.blur);\n if (config.filter.saturation !== 0) fx.addFilter('saturation', config.filter.saturation);\n if (config.filter.hue !== 0) fx.addFilter('hue', config.filter.hue);\n if (config.filter.negative) fx.addFilter('negative');\n if (config.filter.sepia) fx.addFilter('sepia');\n if (config.filter.vintage) fx.addFilter('brownie');\n if (config.filter.sepia) fx.addFilter('sepia');\n if (config.filter.kodachrome) fx.addFilter('kodachrome');\n if (config.filter.technicolor) fx.addFilter('technicolor');\n if (config.filter.polaroid) fx.addFilter('polaroid');\n if (config.filter.pixelate !== 0) fx.addFilter('pixelate', config.filter.pixelate);\n fx.apply(inCanvas);\n // read pixel data\n /*\n const gl = outCanvas.getContext('webgl');\n if (gl) {\n const glBuffer = new Uint8Array(outCanvas.width * outCanvas.height * 4);\n const pixBuffer = new Uint8Array(outCanvas.width * outCanvas.height * 3);\n gl.readPixels(0, 0, outCanvas.width, outCanvas.height, gl.RGBA, gl.UNSIGNED_BYTE, glBuffer);\n // gl returns rbga while we only need rgb, so discarding alpha channel\n // gl returns starting point as lower left, so need to invert vertical\n let i = 0;\n for (let y = outCanvas.height - 1; y >= 0; y--) {\n for (let x = 0; x < outCanvas.width; x++) {\n const index = (x + y * outCanvas.width) * 4;\n pixBuffer[i++] = glBuffer[index + 0];\n pixBuffer[i++] = glBuffer[index + 1];\n pixBuffer[i++] = glBuffer[index + 2];\n }\n }\n outCanvas.data = pixBuffer;\n }\n */\n } else {\n outCanvas = inCanvas;\n if (fx) fx = null;\n }\n let pixels;\n if (outCanvas.data) {\n const shape = [outCanvas.height, outCanvas.width, 3];\n pixels = tf.tensor3d(outCanvas.data, shape, 'int32');\n } else if ((config.backend === 'webgl') || (outCanvas instanceof ImageData)) {\n // tf kernel-optimized method to get imagedata, also if input is imagedata, just use it\n pixels = tf.browser.fromPixels(outCanvas);\n } else {\n // cpu and wasm kernel does not implement efficient fromPixels method nor we can use canvas as-is, so we do a silly one more canvas\n const tempCanvas = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(targetWidth, targetHeight) : document.createElement('canvas');\n tempCanvas.width = targetWidth;\n tempCanvas.height = targetHeight;\n const tempCtx = tempCanvas.getContext('2d');\n tempCtx?.drawImage(outCanvas, 0, 0);\n const data = tempCtx?.getImageData(0, 0, targetWidth, targetHeight);\n pixels = tf.browser.fromPixels(data);\n }\n const casted = pixels.toFloat();\n tensor = casted.expandDims(0);\n pixels.dispose();\n casted.dispose();\n }\n const canvas = config.filter.return ? outCanvas : null;\n return { tensor, canvas };\n}\n", "import { defaults } from '../config';\nimport { TRI468 as triangulation } from '../blazeface/coords';\n\nexport const drawOptions = {\n color: 'rgba(173, 216, 230, 0.3)', // 'lightblue' with light alpha channel\n labelColor: 'rgba(173, 216, 230, 1)', // 'lightblue' with dark alpha channel\n shadowColor: 'black',\n font: 'small-caps 16px \"Segoe UI\"',\n lineHeight: 20,\n lineWidth: 6,\n pointSize: 2,\n roundRect: 28,\n drawPoints: false,\n drawLabels: true,\n drawBoxes: true,\n drawPolygons: true,\n fillPolygons: false,\n useDepth: true,\n useCurves: false,\n bufferedOutput: false,\n useRawBoxes: false,\n};\n\nfunction point(ctx, x, y, z = null) {\n ctx.fillStyle = drawOptions.useDepth && z ? `rgba(${127.5 + (2 * (z || 0))}, ${127.5 - (2 * (z || 0))}, 255, 0.3)` : drawOptions.color;\n ctx.beginPath();\n ctx.arc(x, y, drawOptions.pointSize, 0, 2 * Math.PI);\n ctx.fill();\n}\n\nfunction rect(ctx, x, y, width, height) {\n ctx.beginPath();\n if (drawOptions.useCurves) {\n const cx = (x + x + width) / 2;\n const cy = (y + y + height) / 2;\n ctx.ellipse(cx, cy, width / 2, height / 2, 0, 0, 2 * Math.PI);\n } else {\n ctx.lineWidth = drawOptions.lineWidth;\n ctx.moveTo(x + drawOptions.roundRect, y);\n ctx.lineTo(x + width - drawOptions.roundRect, y);\n ctx.quadraticCurveTo(x + width, y, x + width, y + drawOptions.roundRect);\n ctx.lineTo(x + width, y + height - drawOptions.roundRect);\n ctx.quadraticCurveTo(x + width, y + height, x + width - drawOptions.roundRect, y + height);\n ctx.lineTo(x + drawOptions.roundRect, y + height);\n ctx.quadraticCurveTo(x, y + height, x, y + height - drawOptions.roundRect);\n ctx.lineTo(x, y + drawOptions.roundRect);\n ctx.quadraticCurveTo(x, y, x + drawOptions.roundRect, y);\n ctx.closePath();\n }\n ctx.stroke();\n}\n\nfunction lines(ctx, points: number[] = []) {\n if (points === undefined || points.length === 0) return;\n ctx.beginPath();\n ctx.moveTo(points[0][0], points[0][1]);\n for (const pt of points) {\n ctx.strokeStyle = drawOptions.useDepth && pt[2] ? `rgba(${127.5 + (2 * pt[2])}, ${127.5 - (2 * pt[2])}, 255, 0.3)` : drawOptions.color;\n ctx.fillStyle = drawOptions.useDepth && pt[2] ? `rgba(${127.5 + (2 * pt[2])}, ${127.5 - (2 * pt[2])}, 255, 0.3)` : drawOptions.color;\n ctx.lineTo(pt[0], parseInt(pt[1]));\n }\n ctx.stroke();\n if (drawOptions.fillPolygons) {\n ctx.closePath();\n ctx.fill();\n }\n}\n\nfunction curves(ctx, points: number[] = []) {\n if (points === undefined || points.length === 0) return;\n if (!drawOptions.useCurves || points.length <= 2) {\n lines(ctx, points);\n return;\n }\n ctx.moveTo(points[0][0], points[0][1]);\n for (let i = 0; i < points.length - 2; i++) {\n const xc = (points[i][0] + points[i + 1][0]) / 2;\n const yc = (points[i][1] + points[i + 1][1]) / 2;\n ctx.quadraticCurveTo(points[i][0], points[i][1], xc, yc);\n }\n ctx.quadraticCurveTo(points[points.length - 2][0], points[points.length - 2][1], points[points.length - 1][0], points[points.length - 1][1]);\n ctx.stroke();\n if (drawOptions.fillPolygons) {\n ctx.closePath();\n ctx.fill();\n }\n}\n\nexport async function gesture(inCanvas: HTMLCanvasElement, result: Array) {\n if (!result || !inCanvas) return;\n if (!(inCanvas instanceof HTMLCanvasElement)) return;\n const ctx = inCanvas.getContext('2d');\n if (!ctx) return;\n ctx.font = drawOptions.font;\n ctx.fillStyle = drawOptions.color;\n let i = 1;\n for (let j = 0; j < result.length; j++) {\n let where:any[] = [];\n let what:any[] = [];\n [where, what] = Object.entries(result[j]);\n if ((what.length > 1) && (what[1].length > 0)) {\n const person = where[1] > 0 ? `#${where[1]}` : '';\n const label = `${where[0]} ${person}: ${what[1]}`;\n if (drawOptions.shadowColor && drawOptions.shadowColor !== '') {\n ctx.fillStyle = drawOptions.shadowColor;\n ctx.fillText(label, 8, 2 + (i * drawOptions.lineHeight));\n }\n ctx.fillStyle = drawOptions.labelColor;\n ctx.fillText(label, 6, 0 + (i * drawOptions.lineHeight));\n i += 1;\n }\n }\n}\n\nexport async function face(inCanvas: HTMLCanvasElement, result: Array) {\n if (!result || !inCanvas) return;\n if (!(inCanvas instanceof HTMLCanvasElement)) return;\n const ctx = inCanvas.getContext('2d');\n if (!ctx) return;\n for (const f of result) {\n ctx.font = drawOptions.font;\n ctx.strokeStyle = drawOptions.color;\n ctx.fillStyle = drawOptions.color;\n if (drawOptions.drawBoxes) {\n if (drawOptions.useRawBoxes) rect(ctx, inCanvas.width * f.boxRaw[0], inCanvas.height * f.boxRaw[1], inCanvas.width * f.boxRaw[2], inCanvas.height * f.boxRaw[3]);\n else rect(ctx, f.box[0], f.box[1], f.box[2], f.box[3]);\n }\n // silly hack since fillText does not suport new line\n const labels:string[] = [];\n labels.push(`face confidence: ${Math.trunc(100 * f.confidence)}%`);\n if (f.genderConfidence) labels.push(`${f.gender || ''} ${Math.trunc(100 * f.genderConfidence)}% confident`);\n // if (f.genderConfidence) labels.push(f.gender);\n if (f.age) labels.push(`age: ${f.age || ''}`);\n if (f.iris) labels.push(`iris distance: ${f.iris}`);\n if (f.emotion && f.emotion.length > 0) {\n const emotion = f.emotion.map((a) => `${Math.trunc(100 * a.score)}% ${a.emotion}`);\n labels.push(emotion.join(' '));\n }\n if (f.angle && f.angle.roll) labels.push(`roll: ${Math.trunc(100 * f.angle.roll) / 100} yaw:${Math.trunc(100 * f.angle.yaw) / 100} pitch:${Math.trunc(100 * f.angle.pitch) / 100}`);\n if (labels.length === 0) labels.push('face');\n ctx.fillStyle = drawOptions.color;\n for (let i = labels.length - 1; i >= 0; i--) {\n const x = Math.max(f.box[0], 0);\n const y = i * drawOptions.lineHeight + f.box[1];\n if (drawOptions.shadowColor && drawOptions.shadowColor !== '') {\n ctx.fillStyle = drawOptions.shadowColor;\n ctx.fillText(labels[i], x + 5, y + 16);\n }\n ctx.fillStyle = drawOptions.labelColor;\n ctx.fillText(labels[i], x + 4, y + 15);\n }\n ctx.lineWidth = 1;\n if (f.mesh && f.mesh.length > 0) {\n if (drawOptions.drawPoints) {\n for (const pt of f.mesh) point(ctx, pt[0], pt[1], pt[2]);\n // for (const pt of f.meshRaw) point(ctx, pt[0] * inCanvas.offsetWidth, pt[1] * inCanvas.offsetHeight, pt[2]);\n }\n if (drawOptions.drawPolygons) {\n ctx.lineWidth = 1;\n for (let i = 0; i < triangulation.length / 3; i++) {\n const points = [\n triangulation[i * 3 + 0],\n triangulation[i * 3 + 1],\n triangulation[i * 3 + 2],\n ].map((index) => f.mesh[index]);\n lines(ctx, points);\n }\n // iris: array[center, left, top, right, bottom]\n if (f.annotations && f.annotations.leftEyeIris) {\n ctx.strokeStyle = drawOptions.useDepth ? 'rgba(255, 200, 255, 0.3)' : drawOptions.color;\n ctx.beginPath();\n const sizeX = Math.abs(f.annotations.leftEyeIris[3][0] - f.annotations.leftEyeIris[1][0]) / 2;\n const sizeY = Math.abs(f.annotations.leftEyeIris[4][1] - f.annotations.leftEyeIris[2][1]) / 2;\n ctx.ellipse(f.annotations.leftEyeIris[0][0], f.annotations.leftEyeIris[0][1], sizeX, sizeY, 0, 0, 2 * Math.PI);\n ctx.stroke();\n if (drawOptions.fillPolygons) {\n ctx.fillStyle = drawOptions.useDepth ? 'rgba(255, 255, 200, 0.3)' : drawOptions.color;\n ctx.fill();\n }\n }\n if (f.annotations && f.annotations.rightEyeIris) {\n ctx.strokeStyle = drawOptions.useDepth ? 'rgba(255, 200, 255, 0.3)' : drawOptions.color;\n ctx.beginPath();\n const sizeX = Math.abs(f.annotations.rightEyeIris[3][0] - f.annotations.rightEyeIris[1][0]) / 2;\n const sizeY = Math.abs(f.annotations.rightEyeIris[4][1] - f.annotations.rightEyeIris[2][1]) / 2;\n ctx.ellipse(f.annotations.rightEyeIris[0][0], f.annotations.rightEyeIris[0][1], sizeX, sizeY, 0, 0, 2 * Math.PI);\n ctx.stroke();\n if (drawOptions.fillPolygons) {\n ctx.fillStyle = drawOptions.useDepth ? 'rgba(255, 255, 200, 0.3)' : drawOptions.color;\n ctx.fill();\n }\n }\n }\n }\n }\n}\n\nconst lastDrawnPose:any[] = [];\nexport async function body(inCanvas: HTMLCanvasElement, result: Array) {\n if (!result || !inCanvas) return;\n if (!(inCanvas instanceof HTMLCanvasElement)) return;\n const ctx = inCanvas.getContext('2d');\n if (!ctx) return;\n ctx.lineJoin = 'round';\n for (let i = 0; i < result.length; i++) {\n // result[i].keypoints = result[i].keypoints.filter((a) => a.score > 0.5);\n if (!lastDrawnPose[i] && drawOptions.bufferedOutput) lastDrawnPose[i] = { ...result[i] };\n ctx.strokeStyle = drawOptions.color;\n ctx.lineWidth = drawOptions.lineWidth;\n if (drawOptions.drawPoints) {\n for (let pt = 0; pt < result[i].keypoints.length; pt++) {\n ctx.fillStyle = drawOptions.useDepth && result[i].keypoints[pt].position.z ? `rgba(${127.5 + (2 * result[i].keypoints[pt].position.z)}, ${127.5 - (2 * result[i].keypoints[pt].position.z)}, 255, 0.5)` : drawOptions.color;\n if (drawOptions.bufferedOutput) {\n lastDrawnPose[i].keypoints[pt][0] = (lastDrawnPose[i].keypoints[pt][0] + result[i].keypoints[pt].position.x) / 2;\n lastDrawnPose[i].keypoints[pt][1] = (lastDrawnPose[i].keypoints[pt][1] + result[i].keypoints[pt].position.y) / 2;\n point(ctx, lastDrawnPose[i].keypoints[pt][0], lastDrawnPose[i].keypoints[pt][1]);\n } else {\n point(ctx, result[i].keypoints[pt].position.x, result[i].keypoints[pt].position.y);\n }\n }\n }\n if (drawOptions.drawLabels) {\n ctx.font = drawOptions.font;\n for (const pt of result[i].keypoints) {\n ctx.fillStyle = drawOptions.useDepth && pt.position.z ? `rgba(${127.5 + (2 * pt.position.z)}, ${127.5 - (2 * pt.position.z)}, 255, 0.5)` : drawOptions.color;\n ctx.fillText(`${pt.part}`, pt.position.x + 4, pt.position.y + 4);\n }\n }\n if (drawOptions.drawPolygons) {\n let part;\n const points: any[] = [];\n // torso\n points.length = 0;\n part = result[i].keypoints.find((a) => a.part === 'leftShoulder');\n if (part && part.score > defaults.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightShoulder');\n if (part && part.score > defaults.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightHip');\n if (part && part.score > defaults.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftHip');\n if (part && part.score > defaults.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftShoulder');\n if (part && part.score > defaults.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n if (points.length === 5) lines(ctx, points); // only draw if we have complete torso\n // leg left\n points.length = 0;\n part = result[i].keypoints.find((a) => a.part === 'leftHip');\n if (part && part.score > defaults.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftKnee');\n if (part && part.score > defaults.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftAnkle');\n if (part && part.score > defaults.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftHeel');\n if (part && part.score > defaults.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftFoot');\n if (part && part.score > defaults.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n curves(ctx, points);\n // leg right\n points.length = 0;\n part = result[i].keypoints.find((a) => a.part === 'rightHip');\n if (part && part.score > defaults.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightKnee');\n if (part && part.score > defaults.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightAnkle');\n if (part && part.score > defaults.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightHeel');\n if (part && part.score > defaults.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightFoot');\n if (part && part.score > defaults.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n curves(ctx, points);\n // arm left\n points.length = 0;\n part = result[i].keypoints.find((a) => a.part === 'leftShoulder');\n if (part && part.score > defaults.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftElbow');\n if (part && part.score > defaults.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftWrist');\n if (part && part.score > defaults.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftPalm');\n if (part && part.score > defaults.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n curves(ctx, points);\n // arm right\n points.length = 0;\n part = result[i].keypoints.find((a) => a.part === 'rightShoulder');\n if (part && part.score > defaults.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightElbow');\n if (part && part.score > defaults.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightWrist');\n if (part && part.score > defaults.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightPalm');\n if (part && part.score > defaults.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n curves(ctx, points);\n // draw all\n }\n }\n}\n\nexport async function hand(inCanvas: HTMLCanvasElement, result: Array) {\n if (!result || !inCanvas) return;\n if (!(inCanvas instanceof HTMLCanvasElement)) return;\n const ctx = inCanvas.getContext('2d');\n if (!ctx) return;\n ctx.lineJoin = 'round';\n ctx.font = drawOptions.font;\n for (const h of result) {\n if (drawOptions.drawBoxes) {\n ctx.strokeStyle = drawOptions.color;\n ctx.fillStyle = drawOptions.color;\n if (drawOptions.useRawBoxes) rect(ctx, inCanvas.width * h.boxRaw[0], inCanvas.height * h.boxRaw[1], inCanvas.width * h.boxRaw[2], inCanvas.height * h.boxRaw[3]);\n else rect(ctx, h.box[0], h.box[1], h.box[2], h.box[3]);\n if (drawOptions.drawLabels) {\n if (drawOptions.shadowColor && drawOptions.shadowColor !== '') {\n ctx.fillStyle = drawOptions.shadowColor;\n ctx.fillText('hand', h.box[0] + 3, 1 + h.box[1] + drawOptions.lineHeight, h.box[2]);\n }\n ctx.fillStyle = drawOptions.labelColor;\n ctx.fillText('hand', h.box[0] + 2, 0 + h.box[1] + drawOptions.lineHeight, h.box[2]);\n }\n ctx.stroke();\n }\n if (drawOptions.drawPoints) {\n if (h.landmarks && h.landmarks.length > 0) {\n for (const pt of h.landmarks) {\n ctx.fillStyle = drawOptions.useDepth ? `rgba(${127.5 + (2 * pt[2])}, ${127.5 - (2 * pt[2])}, 255, 0.5)` : drawOptions.color;\n point(ctx, pt[0], pt[1]);\n }\n }\n }\n if (drawOptions.drawPolygons) {\n const addPart = (part) => {\n if (!part) return;\n for (let i = 0; i < part.length; i++) {\n ctx.lineWidth = drawOptions.lineWidth;\n ctx.beginPath();\n ctx.strokeStyle = drawOptions.useDepth ? `rgba(${127.5 + (2 * part[i][2])}, ${127.5 - (2 * part[i][2])}, 255, 0.5)` : drawOptions.color;\n ctx.moveTo(part[i > 0 ? i - 1 : 0][0], part[i > 0 ? i - 1 : 0][1]);\n ctx.lineTo(part[i][0], part[i][1]);\n ctx.stroke();\n }\n };\n addPart(h.annotations.indexFinger);\n addPart(h.annotations.middleFinger);\n addPart(h.annotations.ringFinger);\n addPart(h.annotations.pinky);\n addPart(h.annotations.thumb);\n // addPart(hand.annotations.palmBase);\n }\n }\n}\n\nexport async function object(inCanvas: HTMLCanvasElement, result: Array) {\n if (!result || !inCanvas) return;\n if (!(inCanvas instanceof HTMLCanvasElement)) return;\n const ctx = inCanvas.getContext('2d');\n if (!ctx) return;\n ctx.lineJoin = 'round';\n ctx.font = drawOptions.font;\n for (const h of result) {\n if (drawOptions.drawBoxes) {\n ctx.strokeStyle = drawOptions.color;\n ctx.fillStyle = drawOptions.color;\n if (drawOptions.useRawBoxes) rect(ctx, inCanvas.width * h.boxRaw[0], inCanvas.height * h.boxRaw[1], inCanvas.width * h.boxRaw[2], inCanvas.height * h.boxRaw[3]);\n else rect(ctx, h.box[0], h.box[1], h.box[2], h.box[3]);\n if (drawOptions.drawLabels) {\n const label = `${Math.round(100 * h.score)}% ${h.label}`;\n if (drawOptions.shadowColor && drawOptions.shadowColor !== '') {\n ctx.fillStyle = drawOptions.shadowColor;\n ctx.fillText(label, h.box[0] + 3, 1 + h.box[1] + drawOptions.lineHeight, h.box[2]);\n }\n ctx.fillStyle = drawOptions.labelColor;\n ctx.fillText(label, h.box[0] + 2, 0 + h.box[1] + drawOptions.lineHeight, h.box[2]);\n }\n ctx.stroke();\n }\n }\n}\n\nexport async function canvas(inCanvas: HTMLCanvasElement, outCanvas: HTMLCanvasElement) {\n if (!inCanvas || !outCanvas) return;\n if (!(inCanvas instanceof HTMLCanvasElement) || !(outCanvas instanceof HTMLCanvasElement)) return;\n const outCtx = inCanvas.getContext('2d');\n outCtx?.drawImage(inCanvas, 0, 0);\n}\n\nexport async function all(inCanvas: HTMLCanvasElement, result:any) {\n if (!result || !inCanvas) return;\n if (!(inCanvas instanceof HTMLCanvasElement)) return;\n face(inCanvas, result.face);\n body(inCanvas, result.body);\n hand(inCanvas, result.hand);\n gesture(inCanvas, result.gesture);\n object(inCanvas, result.object);\n}\n", "/* eslint-disable indent */\n/* eslint-disable no-multi-spaces */\n\n/**\n * Configuration interface definition for **Human** library\n *\n * Contains all configurable parameters\n */\nexport interface Config {\n backend: string,\n wasmPath: string,\n debug: boolean,\n async: boolean,\n profile: boolean,\n deallocate: boolean,\n scoped: boolean,\n videoOptimized: boolean,\n warmup: string,\n filter: {\n enabled: boolean,\n width: number,\n height: number,\n return: boolean,\n brightness: number,\n contrast: number,\n sharpness: number,\n blur: number\n saturation: number,\n hue: number,\n negative: boolean,\n sepia: boolean,\n vintage: boolean,\n kodachrome: boolean,\n technicolor: boolean,\n polaroid: boolean,\n pixelate: number,\n },\n gesture: {\n enabled: boolean,\n },\n face: {\n enabled: boolean,\n detector: {\n modelPath: string,\n rotation: boolean,\n maxFaces: number,\n skipFrames: number,\n skipInitial: boolean,\n minConfidence: number,\n iouThreshold: number,\n scoreThreshold: number,\n return: boolean,\n },\n mesh: {\n enabled: boolean,\n modelPath: string,\n },\n iris: {\n enabled: boolean,\n modelPath: string,\n },\n description: {\n enabled: boolean,\n modelPath: string,\n skipFrames: number,\n },\n age: {\n enabled: boolean,\n modelPath: string,\n skipFrames: number,\n },\n gender: {\n enabled: boolean,\n minConfidence: number,\n modelPath: string,\n skipFrames: number,\n },\n emotion: {\n enabled: boolean,\n minConfidence: number,\n skipFrames: number,\n modelPath: string,\n },\n embedding: {\n enabled: boolean,\n modelPath: string,\n },\n },\n body: {\n enabled: boolean,\n modelPath: string,\n maxDetections: number,\n scoreThreshold: number,\n nmsRadius: number,\n },\n hand: {\n enabled: boolean,\n rotation: boolean,\n skipFrames: number,\n skipInitial: boolean,\n minConfidence: number,\n iouThreshold: number,\n scoreThreshold: number,\n maxHands: number,\n landmarks: boolean,\n detector: {\n modelPath: string,\n },\n skeleton: {\n modelPath: string,\n },\n },\n object: {\n enabled: boolean,\n modelPath: string,\n minConfidence: number,\n iouThreshold: number,\n maxResults: number,\n skipFrames: number,\n },\n}\n\nconst config: Config = {\n backend: 'webgl', // select tfjs backend to use\n // can be 'webgl', 'wasm', 'cpu', or 'humangl' which is a custom version of webgl\n // leave as empty string to continue using default backend\n // when backend is set outside of Human library\n wasmPath: '../assets/', // path for wasm binaries\n // only used for backend: wasm\n debug: true, // print additional status messages to console\n async: true, // execute enabled models in parallel\n // this disables per-model performance data but\n // slightly increases performance\n // cannot be used if profiling is enabled\n profile: false, // enable tfjs profiling\n // this has significant performance impact\n // only enable for debugging purposes\n // currently only implemented for age,gender,emotion models\n deallocate: false, // aggresively deallocate gpu memory after each usage\n // only valid for webgl backend and only during first call\n // cannot be changed unless library is reloaded\n // this has significant performance impact\n // only enable on low-memory devices\n scoped: false, // enable scoped runs\n // some models *may* have memory leaks,\n // this wrapps everything in a local scope at a cost of performance\n // typically not needed\n videoOptimized: true, // perform additional optimizations when input is video,\n // must be disabled for images\n // basically this skips object box boundary detection for every n frames\n // while maintaining in-box detection since objects cannot move that fast\n warmup: 'face', // what to use for human.warmup(), can be 'none', 'face', 'full'\n // warmup pre-initializes all models for faster inference but can take\n // significant time on startup\n filter: {\n enabled: true, // enable image pre-processing filters\n width: 0, // resize input width\n height: 0, // resize input height\n // if both width and height are set to 0, there is no resizing\n // if just one is set, second one is scaled automatically\n // if both are set, values are used as-is\n return: true, // return processed canvas imagedata in result\n brightness: 0, // range: -1 (darken) to 1 (lighten)\n contrast: 0, // range: -1 (reduce contrast) to 1 (increase contrast)\n sharpness: 0, // range: 0 (no sharpening) to 1 (maximum sharpening)\n blur: 0, // range: 0 (no blur) to N (blur radius in pixels)\n saturation: 0, // range: -1 (reduce saturation) to 1 (increase saturation)\n hue: 0, // range: 0 (no change) to 360 (hue rotation in degrees)\n negative: false, // image negative\n sepia: false, // image sepia colors\n vintage: false, // image vintage colors\n kodachrome: false, // image kodachrome colors\n technicolor: false, // image technicolor colors\n polaroid: false, // image polaroid camera effect\n pixelate: 0, // range: 0 (no pixelate) to N (number of pixels to pixelate)\n },\n\n gesture: {\n enabled: true, // enable simple gesture recognition\n },\n\n face: {\n enabled: true, // controls if specified modul is enabled\n // face.enabled is required for all face models:\n // detector, mesh, iris, age, gender, emotion\n // (note: module is not loaded until it is required)\n detector: {\n modelPath: '../models/blazeface-back.json',\n rotation: false, // use best-guess rotated face image or just box with rotation as-is\n // false means higher performance, but incorrect mesh mapping if face angle is above 20 degrees\n // this parameter is not valid in nodejs\n maxFaces: 10, // maximum number of faces detected in the input\n // should be set to the minimum number for performance\n skipFrames: 21, // how many frames to go without re-running the face bounding box detector\n // only used for video inputs\n // e.g., if model is running st 25 FPS, we can re-use existing bounding\n // box for updated face analysis as the head probably hasn't moved much\n // in short time (10 * 1/25 = 0.25 sec)\n skipInitial: false, // if previous detection resulted in no faces detected,\n // should skipFrames be reset immediately\n minConfidence: 0.2, // threshold for discarding a prediction\n iouThreshold: 0.1, // threshold for deciding whether boxes overlap too much in\n // non-maximum suppression (0.1 means drop if overlap 10%)\n scoreThreshold: 0.2, // threshold for deciding when to remove boxes based on score\n // in non-maximum suppression,\n // this is applied on detection objects only and before minConfidence\n return: false, // return extracted face as tensor\n },\n\n mesh: {\n enabled: true,\n modelPath: '../models/facemesh.json',\n },\n\n iris: {\n enabled: true,\n modelPath: '../models/iris.json',\n },\n\n description: {\n enabled: true, // to improve accuracy of face embedding extraction it is\n // recommended to enable detector.rotation and mesh.enabled\n modelPath: '../models/faceres.json',\n skipFrames: 31, // how many frames to go without re-running the detector\n // only used for video inputs\n },\n\n emotion: {\n enabled: true,\n minConfidence: 0.1, // threshold for discarding a prediction\n skipFrames: 32, // how many frames to go without re-running the detector\n modelPath: '../models/emotion.json',\n },\n\n age: {\n enabled: false, // obsolete, replaced by description module\n modelPath: '../models/age.json',\n skipFrames: 33, // how many frames to go without re-running the detector\n // only used for video inputs\n },\n\n gender: {\n enabled: false, // obsolete, replaced by description module\n minConfidence: 0.1, // threshold for discarding a prediction\n modelPath: '../models/gender.json',\n skipFrames: 34, // how many frames to go without re-running the detector\n // only used for video inputs\n },\n\n embedding: {\n enabled: false, // obsolete, replaced by description module\n modelPath: '../models/mobileface.json',\n },\n },\n\n body: {\n enabled: true,\n modelPath: '../models/posenet.json', // can be 'posenet' or 'blazepose'\n maxDetections: 10, // maximum number of people detected in the input\n // should be set to the minimum number for performance\n // only valid for posenet as blazepose only detects single pose\n scoreThreshold: 0.3, // threshold for deciding when to remove boxes based on score\n // in non-maximum suppression\n // only valid for posenet as blazepose only detects single pose\n nmsRadius: 20, // radius for deciding points are too close in non-maximum suppression\n // only valid for posenet as blazepose only detects single pose\n },\n\n hand: {\n enabled: true,\n rotation: false, // use best-guess rotated hand image or just box with rotation as-is\n // false means higher performance, but incorrect finger mapping if hand is inverted\n skipFrames: 12, // how many frames to go without re-running the hand bounding box detector\n // only used for video inputs\n // e.g., if model is running st 25 FPS, we can re-use existing bounding\n // box for updated hand skeleton analysis as the hand probably\n // hasn't moved much in short time (10 * 1/25 = 0.25 sec)\n skipInitial: false, // if previous detection resulted in no faces detected,\n // should skipFrames be reset immediately\n minConfidence: 0.1, // threshold for discarding a prediction\n iouThreshold: 0.1, // threshold for deciding whether boxes overlap too much\n // in non-maximum suppression\n scoreThreshold: 0.5, // threshold for deciding when to remove boxes based on\n // score in non-maximum suppression\n maxHands: 1, // maximum number of hands detected in the input\n // should be set to the minimum number for performance\n landmarks: true, // detect hand landmarks or just hand boundary box\n detector: {\n modelPath: '../models/handdetect.json',\n },\n skeleton: {\n modelPath: '../models/handskeleton.json',\n },\n },\n\n object: {\n enabled: false,\n modelPath: '../models/nanodet.json',\n minConfidence: 0.20, // threshold for discarding a prediction\n iouThreshold: 0.40, // threshold for deciding whether boxes overlap too much\n // in non-maximum suppression\n maxResults: 10, // maximum number of objects detected in the input\n skipFrames: 41, // how many frames to go without re-running the detector\n },\n};\nexport { config as defaults };\n", "// data:image/jpeg;base64,\nexport const face = `\n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`;\n\n// data:image/jpeg;base64,\nexport const body = `\n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\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAa2p1UYo5adbz+xbxMlvqJ1OqjDHLXree0ejmzNrWm953tPmTPWbWneZ7yoy5YhjrXXTjH8s75N\nmtkyxt0VZM2/m175N1V03yTKubMLXVXybeYLLX2VXy7eam+b0bOg4VquJW+rry4/O9uyZOq3UjVm\n9r25axMzPaIdvhns1kzbZddM0p5Y47z8/R2+HcF03Doi1a8+Xzvbv+TotJnjDXkt+K8ODHp8cY8N\nIpSO0RCwF2YAAAAAAAAACvUZYw6fJkntWN3k8dfHz2vLucdz8mkjFE9bz1+UOZosX1UzPm0nqI/W\nMYo9FlcPNklfFGeH/NshLGun+Cz6PtHZtVZWlRLS+jxPkRpIn7rdoupHTdA5s6SI+7H6Mfo+32Y2\n+To3neSIiZ7A0IjPXpXLePlMotGW3272t85datKzHZjbTVnsDj+FG/2Y/RlGP4R+jo20u7H6N1Ql\no+H8I/REY957R+jpfReiK6eOYHLtj2tttH6KrY/6Y/R2c+kjeJiFVtLG24hxpw7/AHY/RRkw9O37\nO99Hrt1YX0tfOBLjcGp4XF8c+u8fs9c4dcVcGemSI61nd3IneN1orQAAAAAAAAAAAAABFqxes1tE\nTE9JiUgPKcX4RbRXnNgiZwWnrH4XPi28PdXpW9JraImsxtMS8pxXhF9DecuGJtgmf+1TWW2N/la1\nL7N7T5e3Vy6W3hsYcvLbqzbO9jvvCzvDR0+XeO7crO6FmGSvRThy/RtVXJ92elvk2rRvDUzU7pl4\nizsd2J3jeBpcNz+Lg5LT7+Pp+Xk3W7js5eAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADs0NTrN96Yp6edkW8Wzm6+LNTq4pvTHO9vOfRoWtt\n1mes95YWvs1s2fZldddOczLPLn2ju0MmebT3YZc2/mpm3qqllN1drsbZIhr3yzvtHf4AsvlYYseb\nV5Yx4KTe0+UQ6nDvZ3UazbJqd8OKeu33peq0eh0+hxcmnxxWPOfOfm0mP+steT/ji8N9mKY9suum\nL37+HHaPm9DSlaVitKxWsdohI0Y22gAgAAAAAAAAAABXnyRhw3yT92Nwef4xm8bVzET0rPJH5d12\nCvLhho3rN9RWs9Z23n5y6O21YhrVYbdGOCfrrLPJRpv863zVS6FS09SvZj3lVZZRdPSqmnSWdrIE\nebOkK4ldTsgW1WKqd1oMZhEVZyRAImOjGI6rJ7IiATNd46qL02bHkiaxaoNGY2n4ImPgtyV2n0Vo\nGvlx7x2beiyTk08RPevSVUxux00+Fn2n7N+n5rRFb4AAAAAAAAAAAAAAACLVres1tETWekxKQHlu\nL8InR2nPp43wz3j8P/s5dLveWrFqzW0bxPeJeV4xwmdFec+CJnDM9Y/CrY1xv8qvTZ+WYdbDk5oh\n5zHk283U0eo3jaZZ2N5XYjrCnLSJhOK+8d1kxvCqzSwZvousrb7k9LfJ3nB1OLeJdLhufx9LEWn3\n6e7LXN9Ofy5/W4AuxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAETaKxMzO0Qi9646Ta07RDmZ9VbPbaOlI7Qi3i+c3TPUaqcu9adKfy0722ZXvFa9\nXO1OrjrESxt66ZJmcjPUanlidmhkzTZVfLN5VWvsC2b7R3U3yqrZZtO1esz2h2+F+zWTUcuXXTNM\nfeKR3n5+iZLVbqRzNJo9TxHLyaekz62ntD1fDOA6fQbZL7Zc/wCKY6R8odLBgxabFGPDSKUjyiFj\nSZkYa3aALKAAAAAAAAAAAAAADQ4pl2pTFH3p3n5Q33E12Tn1eSfKscsLZ+orS00eJqbW+Lfnu1tF\nXaJnZsz3WpCfsyp00fWSvmPdVYOmSUDd8kR3InoQosy7JmUX7MdwZ17ro7KKT1XRPRAsrO0rYndr\n79V1ZBaQiJ6JgCSIJASwrO07MpV2nqBlrv1a1o2bf2qtfLXaQUTO0sb05o3jv3ZXhjS20xEphW5h\nyeJjjf7UdJWNKLziyRePsz0lux1SgAQAAAAAAAAAAAAAADG9K5KTS8Rato2mJZAPIcU4ZbQZuekT\nOC3afT4NXFkmlntc2GmoxWx5K71tG0vHa/RX0GpmlutJ61t6wrY2xr8dXS5uesN+tt4ef0eaa223\n2dnHk3juyreM81OaFGiy/RtZET9jJ7s/2bdutd2jqKeic3iNTsd8a2h1H0jTVtP2o6W+bZbOO+gA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABje9cdJt\nadohGTLXFTmvO0fy52bJfU23t0pHaqLeL5xdK9Rnvqb+cUjtCi94xxvK3JetKuHrdZvaa1ljb10y\ncnIs1Wt3naJc++TmVWvMz1YWybfMGdsm3eWek0mo4jm8PT0mfW3lDf4V7P5tdMZdRviwfvZ6/TaX\nDpMMYsFIpWPTzXmf+steT8jn8L4Dp+HxF77Zc/4pjpHydYGjC3oAAAAAAAAAAAAAAAAADG9opS1p\n7RG7zszN6WtPe0zLua+3Joss/wBOzhzG2OsL5+IrY09dsSyYRijbHEMvOChb7KjF0yS2LQ169Mso\nS24noyrPVXWejNVKbTuw3T3REdQWU6LYlVvsyiUDPfqupPRr79VuOQX1lZEqoZxIMksd0gT2VT0l\nbPZVbuCaW8i8bwr32WxbcGnkjaZa9p2ndv5qbw5+aNugLItF6TEtvTX5sMb969HMpfazc0d9stqe\nvVZDdAQAAAAAAAAAAAAAAAADV1+iprtPOO/2u9bektoB4TJTJpNRbHkja1Z6uto8viVht+0HDvpG\nH6Tjj6zHHvbecONw7Ltfkmeqmo6Ma69DXbbZTkr1mGWO3RneOaGbZRoM30fVzSelMnT83aef1FZ7\nx3h1tBqfpGnjmn369LNc3sc3kzy9bQCzIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAa+q1dNNXr7157VhGp1Xh70x+9f9ocy283m1p5rz3mVbrjXHjt91lz\n5c9+fJ1nyjyhdM8lZlOOIiqrUXikd+kMreunnI5XEdX4dZiZcG+XmtNl/F83PeeWWHDOGanieSKY\nq+5H2rz2hMzWd1Iqx1yajJXHhrNrW6REeb1nCPZumn2z62Ivl7xTyr/6uhwzhGn4Zj2xxzZJ+1kn\nvLoNJnjHW7TbbsAszAAAAAAAAAAAAAAAAAAAAaPFrbaSK/itEOXt0rDf4xb/ACa/GZacRvaF58Q2\nIjasQnzPIhCU92tMbZGzHmotG10C6nZkwpPRmipIllEbMIZIE7solgmJBnCyk9VMM6z1BtVllEqK\nz0WRILYlluriWcSDJVbusV27gwInaSWM9ECyZ3hqamnSWxFmOSOaqRx725bNnSZNs9J+OynVY+WZ\nYYr7TE+nVaIr0Ais81Yn1hKAAAAAAAAAAAAAAAAAABExvG09peU4nov9n66L0j6q/WPg9Y1OJaON\nZpL0+9HWs/EWzeVz9PbmrEtnyc3h9reHy26TWdnSr2YX6657ijLXpLX0+onSamL/AHJ6W+Tbv2aW\nekTv16JzeI1Ox6KJiYiY7Slz+E6jxdN4dp3vj6fl5Og2clnKACAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACZ2jeQRMxEbzO0Q08uqtkma4ulfO3r8lefUePMxWf\ncjy9WvlzVxV6T1Z61/x0Y8f7Wc7Ur1lqVy+LqOWJ2hp6rXddon5rOF1tfmz5OkT0qzb8dWbxjp1c\nbiuuilJ5Z6r+IcQrixzEy8zl1E6rNt1tMztFY81sztU1eRucN4ffi2p5esRM72n0h7rS6XFo8FcO\nCkVpX082nwXh3+z9FWLxHi36328vg6TZyW9ABAAAAAAAAAAAAAAAAAAAAAADj8Unm1tK/hqppHvw\ny1k8/EMk+m0GOPeafiFpCZYwolnXspvHvLa9mF46gmnZmwozRUiUCBKYYsoBLOFbKAX0llEqqyzi\nQXRLOJVRLOOwLIljZMEgrlhKyYYTAK5nZPN0RZjugUanHzVlz6xtLq361c+9eXItPpXX0dubTU+E\nbL2lw2++O1fSW6m/VYAISAAAAAAAAAAAAAAAAAp1GbwcfTreelYEydcuMcRrM/L9nnlsV6wqpi2r\ntv133mfWVkRyRtEdGFva7MzkYZNoamWN4bV4mYa9qztKIujhVppxGI8r1mJegeZpknBqKZY+7L0t\nLRekWrO8TG8Ns/HJ5ZypAWZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAADS12fp4VJ6z9qVuq1HgUiI+3bpDl589cOKZmevqprXPTbx477rDJlrhr1nq4+s182tMRP\nRqaziXiZJrWekNG17ZbxWJ336M5LXRbI3dLTJrs07RMY6fan1dHLrowY+X7MVjt6N3R6Kul0EbWm\ns7bz8Z+LnabQX43r7Y53php/mXj+Dnv0f1JO1x/8ZxbUzj02O15mfLtD13AvZqnDds+pmMmo26el\nXX0Wh0/D8EYtNjilY7+s/NstpOOTW7QBKgAAAAAAAAAAAAAAAAAAAAAADG88tLW9I3BwJtz6nNf1\nvK/DHVqYJ3pzT5y3MPZeojOWMQylEKpTVjZnDCwkqzYQyRRICATCITAJZQxhMAshnEq4ZQC2srKq\nqrIBZCWNZZgwswmFloVyCu0dFcx1WyrtCBhv5NTPHXds2U5o3hIz4ffbPt+KHUcTSW5c9Jme0u2v\nVYAKpAAAAAAAAAAAAAAAAYZctcVOa35R6tLrltN795/YvknNqrfhpPLH92V5isd9mWq6fHjk6rn0\nZxG8KK5Jm/wbVZiYZtqrmkqL023bkxvCiY3lJHNyRG81mHS4Rn5sNsNp64+3yaWaNrzOzHBl+i6q\nmT7s9J+S+ay8mex6EIneN47SNXKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAImYiJme0JafEs3h6fkidrZOn5eaLeJk7eOdm1Hi2vmtPTry/CHmOJcUvmvOPF1n09Pm\n6HF9ZGm01qxO3R5vSY7XwzmzTy47zzTEd7en5Mfvt2/PURWdo3tvPrPlKymbktFqTtMTvHzbOLDG\nf63JXbFX7FdnoODcDprZpq9TjiMMTvSn4vj8l5fxnrk91saPSa7i2hpOfbTVt5x1m0fLydzR6PDo\ndPGHBXasd585n1lsRERG0dIF5OOe6tAEqgAAAAAAAAAAAAAAAAAAAAAAADX11+TRZrf0y2Gjxe22\ngtH4piP3TPpXKwxtjhuYo9xq442iIblI2pC1RET2ILd9kxCqRjZmwlCSEohIJAQAAJZISDKGUd2M\nMoBnVbVVCyAWVWeSuqyOwIlXZZKue4MJV2WWYT2QKbKL9YlfdRdIo35b7/Hd3KTzUrPrDh27uxpb\nc2mpPwX/ABX9XAKpAAAAAAAAAAAAAACekTIp1eTwtJmv+GkyJn1oafeazbfpMzLR4jq/o8b823zX\n6XNF8ERCvTcNpxLV5LauvPhx9Irv3lhztdtv8TtaWLicXrt03jzjzb2k1nid56ty3s/w+a7Uwzjn\n1raejlarhmbhl/FpbxMO/fzj5p/ixSeXOvTtRfeI280ZI26tfDm3pWe63LaZx7qtGvniJ6tPLvOK\nfOa9WzbJvTbza02jl3n5SSljscK1MajSxWZ96nSW88xw/VfQ9XMT9nfa3yemid43jtLeXsce88qQ\nEqAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADia3UTm1l4j7OP3Y/u\n7Vp2rM+kPJW1PhYcmS0+9MzKm/jbwz31weMzbV8UppazPL9q0/BF4rk1GLDSNqxPWPhCnHmnNrtT\nqPKteWPm6U6OdHaZvO+SaRNvhv12Ub/q3FhtrNVj0uKOt56z6R5y9zix1w4qY6RtWsREOJ7L6OKa\nS2rvX6zNM7T6Vh3mmZyOfya7eACzIAAAAAAAAAAAAAAAAAAAAAAAAAAczjVvqMVfW/8AZ03I41bf\nLp6/OVs/UVrY47NyOzUxd4bUJpEbb3Z7IiOrKIVSjZhMLJYyhKIgmGUQSDESIEbJEgQmCITEAmGU\nIiGUAyhZVhDOoM4Wx2VQtqBKuyyWEgqlhKyyuyBVaGtkbNmvk7A15l1eH2300R6TMORPSXT4ZO+O\n8fFefEX63gEAAAAAAAAAAAAAAAq1WPxdLlp+Kkx+y1Fvsz8gjhaDauGK8sx07y3OE3m1tT6RaP4c\nvU6yMNKUx73zT0ilY3l2eF6a+m0kRl/zbzz3+Ez5M8z26fJruW6wzYq5sV8d43raNpZjRzPPaTmx\n5b6bJ9rHO3zb2WJ8GWPEscY9bgzxH2t62n19GWW0eHOzHU5XbjXZ1x8WTnz2iZ7S2M1IjH2+LX0V\nKTqs8zO9ot0j8nUthi1J3UaOFMTfLFo6xMbS9BwHWTqdHOO8+/hnln5eTjYMFo1WTH5VnePzXcIm\n2k4zlpPSmXy/hfF5eMfJns69OA2cgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAADG/2LfJ874rW845mubliY7bPoto5qzHrDz0+yePNF41OotaJ7RWNtpV1OtfHqZ715fhu\nj8adNpcVfeyzE2/vLuanhOu1nEctIxTTFa/+ZPbZ3eHcF0vDbTfFE2yzG03t32+DokynXl9+leDB\nTTYKYccbUpWIhYCzEAAAAAAAAAAAAAAAAAAAAAAAAAAAAcXjE/4zDH9M/wAu04XF5/3jj/0f3Wz9\nRUYmzDWxS2I7FSyjuzY1ZKpRKEygEwiWUIkGIk2QJNhKQhMIhkCYZQxhlAMoZwwZwgWQshVCyATL\nCWc9ldpBhZXLOVdpQK7NfJPRdaWvknoDVvPvOnwuel4+TlXn3nS4VPvXj4QtEV0wAAAAAAAAAAAA\nAAAAAVV02CmTxK4qRf8AFFeq0AAAanEsfPpZmO9Ji0NDLfkwdOsulrumiyzHlVzJrz4Ovoy26vB8\ncTBa9NffLtMY77Rv8Yegx5ImkKdJoY1HC81Y+3OSbVn0mGGkmbY45u6tnrrTOu2xGO0RxCd+nNVj\nqKxTV1vH2pjaGtnyzXXYdo96ZmGXEMk15b7/AGZiVerWPTYckZcNbx5wzc7hGbnxXxzPWk7x8pdF\n0S9jh1OXgAlUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAcPjEf4/FP9H93ccXjMf4vDP9Mx+62fqKrx+S+GvibEFSsqyYwlVK\nZYsmIMoRKYJQIPIEiQ2ATCUQygCGUIhMAyhnDCGUIFkLIV1ZxIMpVWWSrsCuyqyyyq09ECq8tfJK\n66jJ2Bp5J6upwn7dv9Lk5J951uE/av8AJaIrqAAAAAAAAAAAAAAAAAAAAAAq1Mc2myxPnWf4cmtu\nXT9fR0tffk0WSe28bfq5Wbamm3326MtunwfK6PCv/AxPraZ/dz9PO97/AOqf5dHhdZrw7Dv3mOb9\nXOxRFM+avpe38mvkPHf/AFWlrKba7Tzt99ZxKkfR7euyNXMTrtPHfa0z+zPiM/UR8Zj+Wbdu8HpN\nM2bfzrV13M4dO2pyR61dNvj44/J/oAWZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADj8bj63BPzdhyeNx0wz8ZWz9RWri7Nmv\nVrYu0NmqaRZHZlDGGSiwxZSgCEkCBCQSCQBMJRCYgEsoYx3Z17AlMIhlCBnDOGEM4AlhZZKq4KrK\n7LLKrIFN2vdfZReAaObu6/CO9vk5OePR1uEd7fJeIrqAIAAAAAAAAAAAAAAAAAAAAGtxCk5NFliI\n3mI32+XVyNTyZOHTee946PQKPoeDffw4777eW/yVs60xv+ZxOnr4Okx1t05KRv8Ao41Z5q3yed5m\nXY1szXRZ5jvFJ/hxItP0aOSN9q7yrtr4f2tHFM5+KT16Yq/vK/iGSbXw4vO14UcPx5MGfNbPG18m\n1oj4THRsTw7VanPXVYpi3gzMcnrvCnG11JOupwuN8+a3pEQ6jT4divjxWnJExa09pbjbM5HHu90A\nJUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAHM41H1GOf6nTc/jEf4Ws+lls/UX45uGekNujTwdm5RNIthKIZKLDFlsiQIShIC\nEgCUJ7AmGTGO7IDzZQhMSDJMMYZQgZwzhhDOATuqssmVdgVWVWWyqtCBTeVF19lF+wNLNG7q8I+9\n8nLyupwnt+S8RXUAQAAAAAAAAAAAAAAAAAAAAAAItWL1mto3iY2lyrcLyUxzix2ia2nvPeK+jrCL\nOrTVnxpanhuPPemSs8l6RtE7dJj0ldpNP9GwRSZ3neZmV4cR/Vs4AJQAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANHi1d9H\nM+kt5ra+vPoskfDdOfqK4mn7Q3aNHBPZu0W0RdDOGFWcKLCJZeTGQQlCQSgASBsCYZQxhlAJTAmA\nTsmAgGcM4YQyjsgRLC3VnaVcgwsrt3Z2V2QK7tbJ1bN5a9waeWO7p8Knt8nNyebpcK8vkvlFdQBA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK9RXmwZI+ErEWjesx6wQeZwejeo0cccuW8\nelpblJaaRGxVnCuss4ZrMvJEgCAASISCQIBlCYYpieoM0wx8k7gzIRueYM4Z79FcSy3QEsLJmWFp\nBjaVVpZWlXMoGNmvkXXlr3kGtknu6XCf7OXkl1OEdl8orqgIAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAHmskcmtzV/rls0U62OXiWX4zErcc9GmkRfWVkSqqziWayxCPIANwBIhIJSxS\nCRG6dwZwlhEs4BluMdzfqgZxLLdXuy3AmVdpZTKuZBjaVVpWWV2QlhZRdfZRcGpl7urwfrzfJy8r\nrcH61vPyWitdMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHA4nHLxKZ9awnH2ZcY\njbW459aq8fZpfiI2IZwrqzhmsz3Ebm4JN0AMhCQSIASndiAziWUSriWcAyRujc80DM3RCfIETLCW\nUsZEsJYSslXZAwlTddPZTkBp5e7r8Gj6rJPxhx8k9Xa4PG2C8/FaK10QAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAcfjcbZMFvnDWx9m5x2PqcNvS+zSxT7sNPxH62YZQwqzhRZO6UCB\nKUAJTux3SDIRuAncQAmJZRLBMSgZ7iIAZRKd2DICUSlAljLCYWMLIFVukNfI2bNbIDTyT7zu8Ijb\nSz/qcG/2nf4T/wCE/wD2WnxWt4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHL9oL\n+Hw2cm28VvEuPptfgyVj6yIn0no7/FtJfW8NzYMe3PaPd39d3iMug1WktNc2C9dvPbeP1aZ9xF+v\nT471tHu2iflK2HkqWmvaZj5Surqc9Ps5bx+alTHqYHm68S1Vf/NmfnC2vGNTXvyT84Ql6A3cSvHM\nsfaxVn5Ssrxyv3sM/lKB1xza8bwT3pePyWV4tpZ+/MfOEjfGrXiGlt2zV/PotrqcN/s5aT/+wLRj\nFontMSlAlKEgndO6IAZQljDIEgeQljLCzOVdkCu/SGrkbF56NPNeKxMzMRHxENe0+89DwuNtHHzl\n5PJr8NcnLW3Pbf7r1nCZm2gpae8zMrz4i/W6AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAETETG0xukB4HVaeMHEtRi26RedvkyjBSfX9W77QYvC4xz7dMlYlrU7M929dWJLFc6aPK0q\n7YLxPS0S22FlP6q38Zac0yR92s/KVc3tHfFf8tpbcsLRvB/dR/8ALLVnU0r9uL1+dZI1mnmdvGpv\n6TOy6ym+Oto2tWJ+cJ/tW+KLK5KW+zes/KU7tG+h01p64qx8Y6NXNo6Y+uPJlp8rLf0rfG7MXtHa\n0x8pZxqs9e2a8f8A7Oj7HaTHn0+f6RWM23LETfr6vRW4PoL99NT8ui7F4+vEdXXtnt+fVbXjGsr/\nAOZE/OsPS29nuH27YrV+VpeV9pdPXhOtw49NG9Mld55+vXcTPd42I47qo7xSfyWV9oM8d8VJ/VxM\nd8l46xWF9cV7en6o/qLfxp2I9ob+eCv/AHMo9op89P8A/wBORGmyT5R+qfo2X8P7n9Q/jTsx7RR5\n6ef+4/8AuHftg/8A6cWcOSO9J/WEbWr3pY7Efzp2Lcfv5YK/9zWy8d1E/ZpSv5Oba1/+Hb9lc+LP\nbFt87I7E/wAabWbiurvEx4nL/pjZzc2bJkn372t85ZXx55/BX85lucC0vPxnTxlnnjm32mOiZqUu\nLJ2p4TwnVavNWaYbRTfre0bQ99pcH0bT0xb78vmtiIiNojaErMwAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAHnfarF7umzRHaZrLjYrdIen9ocPi8JyTt1xzF4eUw23rCm3R4r6bMy\nwt6kdTaWLdjswmNoZontsCm0K5XWjopnuDC0dGpqG5bs08/daKV672MjbSaif6oh6Z5f2LtvptRX\n0tEvUN3Jfo8f7cYve0eX4zV7B5z20xc/C8eSPuZIRficfXlcPaG7ino08HWIbePpLF2NuiyOyrHK\n3fZFSwuovHVfaVF4QK5YWTM9UT0EKry6Ps1Tn4zjn8NZn9nOtLseydObiWW34cf918fWfk+PYANn\nKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAq1WKM+ly4p+/WYeBxTNd6zG0xO0\nvobw3FcP0bi2em20Tbmj5Srr418V9sa2Z7qKyzi07MXUylhaU7yjqhLCeiq3ddaFNxFYW7NLNG8t\nzya+WO6Va9J7FW66mvwidnrXiPY3Ny8RyUn71Jj9Ht3RPjk19HK9pMHj8D1ER3rHN+jqqtTjjNps\nuOe16zAifXzfTz7kNyndpYazS9qT0mszDdoxrsi6m8LazMq6zDOsq1ZEyrt1WWlXaUCqyq0rbKbi\nFdp6PReyFd8uqv8ACsfy83aXrPZHHto89/xX2/SP/dpj6y8vx6EBq5gAAAAAAAAAAAAAAAAAAAAA\n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\nNO67NbkhzNVnmInqzaOZrL93JyZeV0M1++7S02jvxDWxhxx033tPpC8Z6rrezWjmZyazJG2/u03h\n2vFibTHoqvamiwVwY+nLGzV0+SZ1Mx8G0/45tOhzJ5lXMc3UVXRdlF1HP+iYsDPLPPy49/tz1+Te\npSIr0ho6ak5Ms5J8o2q6NImOrHV7XX488ypzTtHXo0s9t6zG7c1G1qz6ubeZiZ3UatXJG3yauSO7\ncvMTEx5tPLb3prPRMVr0HB8vicNxf0+7+kt+LOJwTJyY/Bnz3tH93X36N58cWvq6LSyiyndMSlC7\nmZcymLJiwLosmJVRLKLAtiU7q4lMSCzc3YxJuDMRuAlKAEgAAAlAkAAAAAABKAEgAAAAAJAAAAAA\nAAAAAAAEgAAAAAAAAAAAAAkAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAhIAAACAAAASgAAAAAAEAAAA\nhGzJAImGMwzQDDZjNVuyNgUTVhNGxysZqDVmiu1G5NN2M4waM0+DCaN2cbGcQNGaMZq3JxMJxA1J\nqx2bU4kU09slorWNwa20z02RXHbJbl26QvtFovbHWkxEdJt5y2MOHlr2U1W3jx+1hiw8vSO63lmI\nXRTaEWmtY6snRHO1VpmJ+DjavpSZl2s8b7y4HFcnh0n0gha5ebJN55KRM2mdoiPN6fh+kpwXh0Wy\nRHj5Otp/s5Ps1p62y31+em9aTMYt/OfVfxTiPjZ52naI7fBrI5t66xz5+a1rW7yx0eSL6iZjtEOX\nqNbSletom3lENjh2fbHzbbWt3iVozruc+5ztWubf4M4ybpQ2Oboyrva0Vjza8WdDR4OkXt3n9ldX\nkaePP9VtYqctYhdvt5oivTeCZ2YOxXk6ubqMfV0b9mrljfqlFcq88k7z2U5axeItDa1OPessuC8P\nya7XRWYnwqdbT/ZMilvIu4dpslNdixXja8Y5tt85djZdbDWnGOesRtXFtuw6T27No5Kx2OrKYQlC\nExKJgBnEpiyvdlEgsizKLKollFgWxLKJVRLKJBbEp3VxLKJBnuMWQJEbpBIAAAJAAAABIAAAAAAA\nlAJAAAAAAAAAAAAAASAAAAAAAAAAAAAJAAAABAJABAlAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAA\nAAABAJQAAAAgAABAAI2EoBGyJhkgGPKxmqxAKpownHC+YRMdN5BrTj67R3bOn01o7p01Iv71u89o\n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\n2Q==`;\n", "let instance = 0;\nlet CSScreated = false;\n\nlet theme = {\n background: 'darkslategray',\n hover: 'lightgray',\n itemBackground: 'black',\n itemColor: 'white',\n buttonBackground: 'lightblue',\n buttonHover: 'lightgreen',\n checkboxOn: 'lightgreen',\n checkboxOff: 'lightcoral',\n rangeBackground: 'lightblue',\n rangeLabel: 'white',\n chartColor: 'lightblue',\n};\n\nfunction createCSS() {\n if (CSScreated) return;\n const css = `\n :root { --rounded: 0.1rem; }\n .menu { position: absolute; top: 0rem; right: 0; width: max-content; padding: 0 0.2rem 0 0.2rem; line-height: 1.8rem; z-index: 10;\n box-shadow: 0 0 8px dimgrey; background: ${theme.background}; border-radius: var(--rounded); border-color: black; border-style: solid; border-width: thin; }\n\n .menu:hover { box-shadow: 0 0 8px ${theme.hover}; }\n .menu-container { display: block; max-height: 100vh; }\n .menu-container-fadeout { max-height: 0; overflow: hidden; transition: max-height, 0.5s ease; }\n .menu-container-fadein { max-height: 100vh; overflow: hidden; transition: max-height, 0.5s ease; }\n .menu-item { display: flex; white-space: nowrap; padding: 0.2rem; cursor: default; width: 100%; }\n .menu-title { cursor: pointer; }\n .menu-hr { margin: 0.2rem; border: 1px solid rgba(0, 0, 0, 0.5) }\n .menu-label { padding: 0; font-weight: 800; }\n\n .menu-list { margin-right: 0.8rem; }\n select:focus { outline: none; }\n .menu-list-item { background: ${theme.itemBackground}; color: ${theme.itemColor}; border: none; padding: 0.2rem; font-family: inherit;\n font-variant: inherit; border-radius: var(--rounded); font-weight: 800; }\n\n .menu-chart-title { padding: 0; font-size: 0.8rem; font-weight: 800; align-items: center}\n .menu-chart-canvas { background: transparent; margin: 0.2rem 0 0.2rem 0.6rem; }\n \n .menu-button { border: 0; background: ${theme.buttonBackground}; width: -webkit-fill-available; padding: 8px; margin: 8px; cursor: pointer; box-shadow: 4px 4px 4px 0 dimgrey;\n border-radius: var(--rounded); justify-content: center; font-family: inherit; font-variant: inherit; font-size: 1rem; font-weight: 800; }\n .menu-button:hover { background: ${theme.buttonHover}; box-shadow: 4px 4px 4px 0 black; }\n .menu-button:focus { outline: none; }\n\n .menu-checkbox { width: 2.8rem; height: 1rem; background: ${theme.itemBackground}; margin: 0.5rem 0.5rem 0 0; position: relative; border-radius: var(--rounded); }\n .menu-checkbox:after { content: 'OFF'; color: ${theme.checkboxOff}; position: absolute; right: 0.2rem; top: -0.4rem; font-weight: 800; font-size: 0.5rem; }\n .menu-checkbox:before { content: 'ON'; color: ${theme.checkboxOn}; position: absolute; left: 0.3rem; top: -0.4rem; font-weight: 800; font-size: 0.5rem; }\n .menu-checkbox-label { width: 1.3rem; height: 0.8rem; cursor: pointer; position: absolute; top: 0.1rem; left: 0.1rem; z-index: 1; background: ${theme.checkboxOff};\n border-radius: var(--rounded); transition: left 0.6s ease; }\n\n input[type=checkbox] { visibility: hidden; }\n input[type=checkbox]:checked + label { left: 1.4rem; background: ${theme.checkboxOn}; }\n\n .menu-range { margin: 0.2rem 0.5rem 0 0; width: 3.5rem; background: transparent; color: ${theme.rangeBackground}; }\n .menu-range:before { color: ${theme.rangeLabel}; margin: 0 0.4rem 0 0; font-weight: 800; font-size: 0.6rem; position: relative; top: 0.3rem; content: attr(value); }\n\n input[type=range] { -webkit-appearance: none; }\n input[type=range]::-webkit-slider-runnable-track { width: 100%; height: 1rem; cursor: pointer; background: ${theme.itemBackground}; border-radius: var(--rounded); border: 1px; }\n input[type=range]::-moz-range-track { width: 100%; height: 1rem; cursor: pointer; background: ${theme.itemBackground}; border-radius: var(--rounded); border: 1px; }\n input[type=range]::-webkit-slider-thumb { border: 1px solid #000000; margin-top: 0.05rem; height: 0.9rem; width: 1rem; border-radius: var(--rounded); background: ${theme.rangeBackground}; cursor: pointer; -webkit-appearance: none; }\n input[type=range]::-moz-range-thumb { border: 1px solid #000000; margin-top: 0.05rem; height: 0.9rem; width: 1rem; border-radius: var(--rounded); background: ${theme.rangeBackground}; cursor: pointer; -webkit-appearance: none; }\n\n .svg-background { fill:darkslategrey; cursor:pointer; opacity: 0.6; }\n .svg-foreground { fill:white; cursor:pointer; opacity: 0.8; }\n `;\n const el = document.createElement('style');\n el.innerHTML = css;\n document.getElementsByTagName('head')[0].appendChild(el);\n CSScreated = true;\n}\n\nclass Menu {\n constructor(parent, title, position, userTheme) {\n if (userTheme) theme = { ...theme, ...userTheme };\n createCSS();\n this.createMenu(parent, title, position);\n this.id = 0;\n this.instance = instance;\n instance++;\n this._maxFPS = 0;\n this.hidden = 0;\n }\n\n createMenu(parent, title = '', position = { top: null, left: null, bottom: null, right: null }) {\n this.menu = document.createElement('div');\n this.menu.id = `menu-${instance}`;\n this.menu.className = 'menu';\n if (position) {\n if (position.top) this.menu.style.top = position.top;\n if (position.bottom) this.menu.style.bottom = position.bottom;\n if (position.left) this.menu.style.left = position.left;\n if (position.right) this.menu.style.right = position.right;\n }\n\n this.container = document.createElement('div');\n this.container.id = `menu-container-${instance}`;\n this.container.className = 'menu-container menu-container-fadein';\n\n // set menu title with pulldown arrow\n const elTitle = document.createElement('div');\n elTitle.className = 'menu-title';\n elTitle.id = `menu-title-${instance}`;\n const svg = `\n \n \n `;\n if (title) elTitle.innerHTML = `${title}${svg}`;\n this.menu.appendChild(elTitle);\n elTitle.addEventListener('click', () => {\n this.container.classList.toggle('menu-container-fadeout');\n this.container.classList.toggle('menu-container-fadein');\n this.menu.style.borderStyle = this.container.classList.contains('menu-container-fadeout') ? 'none' : 'solid';\n });\n\n this.menu.appendChild(this.container);\n if (typeof parent === 'object') parent.appendChild(this.menu);\n else document.getElementById(parent).appendChild(this.menu);\n }\n\n get newID() {\n this.id++;\n return `menu-${this.instance}-${this.id}`;\n }\n\n get ID() {\n return `menu-${this.instance}-${this.id}`;\n }\n\n get width() {\n return this.menu.offsetWidth;\n }\n\n get height() {\n return this.menu.offsetHeight;\n }\n\n hide() {\n if (this.container.classList.contains('menu-container-fadein')) {\n this.container.classList.toggle('menu-container-fadeout');\n this.container.classList.toggle('menu-container-fadein');\n }\n }\n\n visible() {\n return (this.container.classList.contains('menu-container-fadein'));\n }\n\n toggle(evt) {\n this.container.classList.toggle('menu-container-fadeout');\n this.container.classList.toggle('menu-container-fadein');\n if (this.container.classList.contains('menu-container-fadein') && evt) {\n const x = evt.x || (evt.touches && evt.touches[0] ? evt.touches[0].pageX : null);\n // const y = evt.y || (evt.touches && evt.touches[0] ? evt.touches[0].pageY : null);\n if (x) this.menu.style.left = `${x - (this.menu.offsetWidth / 2)}px`;\n // if (y) this.menu.style.top = '5.5rem'; // `${evt.y + 55}px`;\n if (this.menu.offsetLeft < 0) this.menu.style.left = 0;\n if ((this.menu.offsetLeft + this.menu.offsetWidth) > window.innerWidth) {\n this.menu.style.left = null;\n this.menu.style.right = 0;\n }\n this.menu.style.borderStyle = 'solid';\n } else {\n this.menu.style.borderStyle = 'none';\n }\n }\n\n addTitle(title) {\n const el = document.createElement('div');\n el.className = 'menu-title';\n el.id = this.newID;\n el.innerHTML = title;\n this.menu.appendChild(el);\n el.addEventListener('click', () => {\n this.hidden = !this.hidden;\n const all = document.getElementsByClassName('menu');\n for (const item of all) {\n item.style.display = this.hidden ? 'none' : 'block';\n }\n });\n return el;\n }\n\n addLabel(title) {\n const el = document.createElement('div');\n el.className = 'menu-item menu-label';\n el.id = this.newID;\n el.innerHTML = title;\n this.container.appendChild(el);\n return el;\n }\n\n addBool(title, object, variable, callback) {\n const el = document.createElement('div');\n el.className = 'menu-item';\n el.innerHTML = `
${title}`;\n this.container.appendChild(el);\n el.addEventListener('change', (evt) => {\n object[variable] = evt.target.checked;\n if (callback) callback(evt.target.checked);\n });\n return el;\n }\n\n async addList(title, items, selected, callback) {\n const el = document.createElement('div');\n el.className = 'menu-item';\n let options = '';\n for (const item of items) {\n const def = item === selected ? 'selected' : '';\n options += ``;\n }\n el.innerHTML = `
${title}`;\n el.style.fontFamily = document.body.style.fontFamily;\n el.style.fontSize = document.body.style.fontSize;\n el.style.fontVariant = document.body.style.fontVariant;\n this.container.appendChild(el);\n el.addEventListener('change', (evt) => {\n if (callback) callback(items[evt.target.selectedIndex]);\n });\n return el;\n }\n\n addRange(title, object, variable, min, max, step, callback) {\n const el = document.createElement('div');\n el.className = 'menu-item';\n el.innerHTML = `${title}`;\n this.container.appendChild(el);\n el.addEventListener('change', (evt) => {\n object[variable] = parseInt(evt.target.value) === parseFloat(evt.target.value) ? parseInt(evt.target.value) : parseFloat(evt.target.value);\n evt.target.setAttribute('value', evt.target.value);\n if (callback) callback(evt.target.value);\n });\n el.input = el.children[0];\n return el;\n }\n\n addHTML(html) {\n const el = document.createElement('div');\n el.className = 'menu-item';\n el.id = this.newID;\n if (html) el.innerHTML = html;\n this.container.appendChild(el);\n return el;\n }\n\n addButton(titleOn, titleOff, callback) {\n const el = document.createElement('button');\n el.className = 'menu-item menu-button';\n el.style.fontFamily = document.body.style.fontFamily;\n el.style.fontSize = document.body.style.fontSize;\n el.style.fontVariant = document.body.style.fontVariant;\n el.type = 'button';\n el.id = this.newID;\n el.innerText = titleOn;\n this.container.appendChild(el);\n el.addEventListener('click', () => {\n if (el.innerText === titleOn) el.innerText = titleOff;\n else el.innerText = titleOn;\n if (callback) callback(el.innerText !== titleOn);\n });\n return el;\n }\n\n addValue(title, val, suffix = '') {\n const el = document.createElement('div');\n el.className = 'menu-item';\n el.id = `menu-val-${title}`;\n el.innerText = `${title}: ${val}${suffix}`;\n this.container.appendChild(el);\n return el;\n }\n\n // eslint-disable-next-line class-methods-use-this\n updateValue(title, val, suffix = '') {\n const el = document.getElementById(`menu-val-${title}`);\n if (el) el.innerText = `${title}: ${val}${suffix}`;\n else this.addValue(title, val);\n }\n\n addChart(title, id, width = 150, height = 40, color) {\n if (color) theme.chartColor = color;\n const el = document.createElement('div');\n el.className = 'menu-item menu-chart-title';\n el.id = this.newID;\n el.innerHTML = `${title}`;\n this.container.appendChild(el);\n return el;\n }\n\n // eslint-disable-next-line class-methods-use-this\n async updateChart(id, values) {\n if (!values || (values.length === 0)) return;\n const canvas = document.getElementById(`menu-canvas-${id}`);\n if (!canvas) return;\n const ctx = canvas.getContext('2d');\n ctx.fillStyle = theme.background;\n ctx.fillRect(0, 0, canvas.width, canvas.height);\n const width = canvas.width / values.length;\n const max = 1 + Math.max(...values);\n const height = canvas.height / max;\n for (let i = 0; i < values.length; i++) {\n const gradient = ctx.createLinearGradient(0, (max - values[i]) * height, 0, 0);\n gradient.addColorStop(0.1, theme.chartColor);\n gradient.addColorStop(0.4, theme.background);\n ctx.fillStyle = gradient;\n ctx.fillRect(i * width, 0, width - 4, canvas.height);\n ctx.fillStyle = theme.background;\n ctx.font = `${width / 1.5}px \"Segoe UI\"`;\n ctx.fillText(Math.round(values[i]), i * width + 1, canvas.height - 1, width - 1);\n }\n }\n}\n\nexport default Menu;\n", "/* eslint-disable max-len */\n\n// based on: https://github.com/munrocket/gl-bench\n\nconst UICSS = `\n #gl-bench { position: absolute; right: 1rem; bottom: 1rem; z-index:1000; -webkit-user-select: none; -moz-user-select: none; user-select: none; }\n #gl-bench div { position: relative; display: block; margin: 4px; padding: 0 2px 0 2px; background: darkslategray; border-radius: 0.1rem; cursor: pointer; opacity: 0.9; }\n #gl-bench svg { height: 60px; margin: 0 0px 0px 4px; }\n #gl-bench text { font-size: 16px; font-family: 'Lato', 'Segoe UI'; dominant-baseline: middle; text-anchor: middle; }\n #gl-bench .gl-mem { font-size: 12px; fill: white; }\n #gl-bench .gl-fps { font-size: 13px; fill: white; }\n #gl-bench line { stroke-width: 5; stroke: white; stroke-linecap: round; }\n #gl-bench polyline { fill: none; stroke: white; stroke-linecap: round; stroke-linejoin: round; stroke-width: 3.5; }\n #gl-bench rect { fill: black; }\n #gl-bench .opacity { stroke: black; }\n `;\n\nconst UISVG = `\n
\n \n 00 FPS\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n `;\n\nclass GLBench {\n /** GLBench constructor\n * @param { WebGLRenderingContext | WebGL2RenderingContext } gl context\n * @param { Object | undefined } settings additional settings\n */\n constructor(gl, settings = {}) {\n this.css = UICSS;\n this.svg = UISVG;\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n this.paramLogger = () => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n this.chartLogger = () => {};\n this.chartLen = 20;\n this.chartHz = 20;\n\n this.names = [];\n this.cpuAccums = [];\n this.gpuAccums = [];\n this.activeAccums = [];\n this.chart = new Array(this.chartLen);\n this.now = () => ((performance && performance.now) ? performance.now() : Date.now());\n this.updateUI = () => {\n [].forEach.call(this.nodes['gl-gpu-svg'], (node) => node.style.display = this.trackGPU ? 'inline' : 'none');\n };\n\n Object.assign(this, settings);\n this.detected = 0;\n this.finished = [];\n this.isFramebuffer = 0;\n this.frameId = 0;\n\n // 120hz device detection\n let rafId; let n = 0; let\n t0;\n const loop = (t) => {\n if (++n < 20) {\n rafId = requestAnimationFrame(loop);\n } else {\n this.detected = Math.ceil(1e3 * n / (t - t0) / 70);\n cancelAnimationFrame(rafId);\n }\n if (!t0) t0 = t;\n };\n requestAnimationFrame(loop);\n\n // attach gpu profilers\n if (gl) {\n const glFinish = async (t, activeAccums) => Promise.resolve(setTimeout(() => {\n gl.getError();\n const dt = this.now() - t;\n activeAccums.forEach((active, i) => {\n if (active) this.gpuAccums[i] += dt;\n });\n }, 0));\n\n const addProfiler = (fn, self, target) => {\n const t = self.now();\n // eslint-disable-next-line prefer-rest-params\n fn.apply(target, arguments);\n if (self.trackGPU) self.finished.push(glFinish(t, self.activeAccums.slice(0)));\n };\n\n /* ['drawArrays', 'drawElements', 'drawArraysInstanced', 'drawBuffers', 'drawElementsInstanced', 'drawRangeElements'].forEach((fn) => {\n if (gl[fn]) {\n gl[fn] = addProfiler(gl[fn], this, gl);\n }\n });\n */\n const fn = 'drawElements';\n if (gl[fn]) {\n gl[fn] = addProfiler(gl[fn], this, gl);\n } else {\n // eslint-disable-next-line no-console\n console.log('bench: cannot attach to webgl function');\n }\n\n /*\n gl.getExtension = ((fn, self) => {\n // eslint-disable-next-line prefer-rest-params\n const ext = fn.apply(gl, arguments);\n if (ext) {\n ['drawElementsInstancedANGLE', 'drawBuffersWEBGL'].forEach((fn2) => {\n if (ext[fn2]) {\n ext[fn2] = addProfiler(ext[fn2], self, ext);\n }\n });\n }\n return ext;\n })(gl.getExtension, this);\n */\n }\n\n // init ui and ui loggers\n if (!this.withoutUI) {\n if (!this.dom) this.dom = document.body;\n const elm = document.createElement('div');\n elm.id = 'gl-bench';\n this.dom.appendChild(elm);\n this.dom.insertAdjacentHTML('afterbegin', '');\n this.dom = elm;\n this.dom.addEventListener('click', () => {\n this.trackGPU = !this.trackGPU;\n this.updateUI();\n });\n\n this.paramLogger = ((logger, dom, names) => {\n const classes = ['gl-cpu', 'gl-gpu', 'gl-mem', 'gl-fps', 'gl-gpu-svg', 'gl-chart'];\n const nodes = { ...classes };\n classes.forEach((c) => nodes[c] = dom.getElementsByClassName(c));\n this.nodes = nodes;\n return (i, cpu, gpu, mem, fps, totalTime, frameId) => {\n nodes['gl-cpu'][i].style.strokeDasharray = (cpu * 0.27).toFixed(0) + ' 100';\n nodes['gl-gpu'][i].style.strokeDasharray = (gpu * 0.27).toFixed(0) + ' 100';\n // eslint-disable-next-line no-nested-ternary\n nodes['gl-mem'][i].innerHTML = names[i] ? names[i] : (mem ? 'mem: ' + mem.toFixed(0) + 'mb' : '');\n nodes['gl-fps'][i].innerHTML = 'FPS: ' + fps.toFixed(1);\n logger(names[i], cpu, gpu, mem, fps, totalTime, frameId);\n };\n })(this.paramLogger, this.dom, this.names);\n\n this.chartLogger = ((logger, dom) => {\n const nodes = { 'gl-chart': dom.getElementsByClassName('gl-chart') };\n return (i, chart, circularId) => {\n let points = '';\n const len = chart.length;\n for (let j = 0; j < len; j++) {\n const id = (circularId + j + 1) % len;\n if (chart[id] !== undefined) points = points + ' ' + (60 * j / (len - 1)).toFixed(1) + ',' + (45 - chart[id] * 0.5 / this.detected).toFixed(1);\n }\n nodes['gl-chart'][i].setAttribute('points', points);\n logger(this.names[i], chart, circularId);\n };\n })(this.chartLogger, this.dom);\n }\n }\n\n /**\n * Explicit UI add\n * @param { string | undefined } name\n */\n addUI(name) {\n if (this.names.indexOf(name) === -1) {\n this.names.push(name);\n if (this.dom) {\n this.dom.insertAdjacentHTML('beforeend', this.svg);\n this.updateUI();\n }\n this.cpuAccums.push(0);\n this.gpuAccums.push(0);\n this.activeAccums.push(false);\n }\n }\n\n /**\n * Increase frameID\n * @param { number | undefined } now\n */\n nextFrame(now) {\n this.frameId++;\n const t = now || this.now();\n\n // params\n if (this.frameId <= 1) {\n this.paramFrame = this.frameId;\n this.paramTime = t;\n } else {\n const duration = t - this.paramTime;\n if (duration >= 1e3) {\n const frameCount = this.frameId - this.paramFrame;\n const fps = frameCount / duration * 1e3;\n for (let i = 0; i < this.names.length; i++) {\n const cpu = this.cpuAccums[i] / duration * 100;\n const gpu = this.gpuAccums[i] / duration * 100;\n const mem = (performance && performance.memory) ? performance.memory.usedJSHeapSize / (1 << 20) : 0;\n this.paramLogger(i, cpu, gpu, mem, fps, duration, frameCount);\n this.cpuAccums[i] = 0;\n Promise.all(this.finished).then(() => {\n this.gpuAccums[i] = 0;\n this.finished = [];\n });\n }\n this.paramFrame = this.frameId;\n this.paramTime = t;\n }\n }\n\n // chart\n if (!this.detected || !this.chartFrame) {\n this.chartFrame = this.frameId;\n this.chartTime = t;\n this.circularId = 0;\n } else {\n const timespan = t - this.chartTime;\n let hz = this.chartHz * timespan / 1e3;\n while (--hz > 0 && this.detected) {\n const frameCount = this.frameId - this.chartFrame;\n const fps = frameCount / timespan * 1e3;\n this.chart[this.circularId % this.chartLen] = fps;\n for (let i = 0; i < this.names.length; i++) this.chartLogger(i, this.chart, this.circularId);\n this.circularId++;\n this.chartFrame = this.frameId;\n this.chartTime = t;\n }\n }\n }\n\n /**\n * Begin named measurement\n * @param { string | undefined } name\n */\n begin(name) {\n this.updateAccums(name);\n }\n\n /**\n * End named measure\n * @param { string | undefined } name\n */\n end(name) {\n this.updateAccums(name);\n }\n\n updateAccums(name) {\n let nameId = this.names.indexOf(name);\n if (nameId === -1) {\n nameId = this.names.length;\n this.addUI(name);\n }\n\n const t = this.now();\n const dt = t - this.t0;\n for (let i = 0; i < nameId + 1; i++) {\n if (this.activeAccums[i]) this.cpuAccums[i] += dt;\n }\n this.activeAccums[nameId] = !this.activeAccums[nameId];\n this.t0 = t;\n }\n}\n\nexport default GLBench;\n", "// import Human from '../dist/human.esm.js'; // equivalent of @vladmandic/human\nimport Human from '../src/human';\nimport Menu from './menu.js';\nimport GLBench from './gl-bench.js';\n\nconst userConfig = { backend: 'webgl' }; // add any user configuration overrides\n\n/*\nconst userConfig = {\n backend: 'wasm',\n async: false,\n warmup: 'full',\n videoOptimized: true,\n filter: { enabled: true },\n face: { enabled: true, mesh: { enabled: true }, iris: { enabled: false }, age: { enabled: false }, gender: { enabled: false }, emotion: { enabled: false }, embedding: { enabled: false } },\n hand: { enabled: false },\n gesture: { enabled: false },\n body: { enabled: false, modelPath: '../models/blazepose.json' },\n object: { enabled: false },\n};\n*/\n\nconst human = new Human(userConfig);\n\n// ui options\nconst ui = {\n baseBackground: 'rgba(50, 50, 50, 1)', // 'grey'\n crop: true, // video mode crop to size or leave full frame\n columns: 2, // when processing sample images create this many columns\n facing: true, // camera facing front or back\n useWorker: false, // use web workers for processing\n worker: 'worker.js',\n samples: ['../assets/sample6.jpg', '../assets/sample1.jpg', '../assets/sample4.jpg', '../assets/sample5.jpg', '../assets/sample3.jpg', '../assets/sample2.jpg'],\n compare: '../assets/sample-me.jpg',\n console: true, // log messages to browser console\n maxFPSframes: 10, // keep fps history for how many frames\n modelsPreload: true, // preload human models on startup\n busy: false, // internal camera busy flag\n menuWidth: 0, // internal\n menuHeight: 0, // internal\n camera: {}, // internal, holds details of webcam details\n detectFPS: [], // internal, holds fps values for detection performance\n drawFPS: [], // internal, holds fps values for draw performance\n buffered: false, // experimental, should output be buffered between frames\n drawWarmup: false, // debug only, should warmup image processing be displayed on startup\n drawThread: null, // internl, perform draw operations in a separate thread\n detectThread: null, // internl, perform detect operations in a separate thread\n framesDraw: 0, // internal, statistics on frames drawn\n framesDetect: 0, // internal, statistics on frames detected\n bench: true, // show gl fps benchmark window\n lastFrame: 0, // time of last frame processing\n};\n\n// global variables\nconst menu = {};\nlet worker;\nlet bench;\nlet lastDetectedResult = {};\n\n// helper function: translates json to human readable string\nfunction str(...msg) {\n if (!Array.isArray(msg)) return msg;\n let line = '';\n for (const entry of msg) {\n if (typeof entry === 'object') line += JSON.stringify(entry).replace(/{|}|\"|\\[|\\]/g, '').replace(/,/g, ', ');\n else line += entry;\n }\n return line;\n}\n\n// helper function: wrapper around console output\nfunction log(...msg) {\n const dt = new Date();\n const ts = `${dt.getHours().toString().padStart(2, '0')}:${dt.getMinutes().toString().padStart(2, '0')}:${dt.getSeconds().toString().padStart(2, '0')}.${dt.getMilliseconds().toString().padStart(3, '0')}`;\n // eslint-disable-next-line no-console\n if (ui.console) console.log(ts, ...msg);\n}\n\nfunction status(msg) {\n // eslint-disable-next-line no-console\n const div = document.getElementById('status');\n if (div) div.innerText = msg;\n}\n\nconst compare = { enabled: false, original: null };\nasync function calcSimmilariry(result) {\n document.getElementById('compare-container').style.display = compare.enabled ? 'block' : 'none';\n if (!compare.enabled) return;\n if (!(result?.face?.length > 0) || (result?.face[0]?.embedding?.length <= 64)) return;\n if (!compare.original) {\n compare.original = result;\n log('setting face compare baseline:', result.face[0]);\n if (result.face[0].tensor) {\n const enhanced = human.enhance(result.face[0]);\n if (enhanced) {\n const c = document.getElementById('orig');\n const squeeze = enhanced.squeeze();\n const norm = squeeze.div(255);\n human.tf.browser.toPixels(norm, c);\n enhanced.dispose();\n squeeze.dispose();\n norm.dispose();\n }\n } else {\n document.getElementById('compare-canvas').getContext('2d').drawImage(compare.original.canvas, 0, 0, 200, 200);\n }\n }\n const similarity = human.similarity(compare.original?.face[0]?.embedding, result?.face[0]?.embedding);\n document.getElementById('similarity').innerText = `similarity: ${Math.trunc(1000 * similarity) / 10}%`;\n}\n\n// draws processed results and starts processing of a next frame\nlet lastDraw = performance.now();\nasync function drawResults(input) {\n const result = lastDetectedResult;\n const canvas = document.getElementById('canvas');\n\n // update draw fps data\n ui.drawFPS.push(1000 / (performance.now() - lastDraw));\n if (ui.drawFPS.length > ui.maxFPSframes) ui.drawFPS.shift();\n lastDraw = performance.now();\n\n // draw fps chart\n await menu.process.updateChart('FPS', ui.detectFPS);\n\n // get updated canvas\n if (ui.buffered || !result.canvas) {\n const image = await human.image(input);\n result.canvas = image.canvas;\n human.tf.dispose(image.tensor);\n }\n\n // draw image from video\n const ctx = canvas.getContext('2d');\n ctx.fillStyle = ui.baseBackground;\n ctx.fillRect(0, 0, canvas.width, canvas.height);\n if (result.canvas) {\n if (result.canvas.width !== canvas.width) canvas.width = result.canvas.width;\n if (result.canvas.height !== canvas.height) canvas.height = result.canvas.height;\n ctx.drawImage(result.canvas, 0, 0, result.canvas.width, result.canvas.height, 0, 0, result.canvas.width, result.canvas.height);\n } else {\n ctx.drawImage(input, 0, 0, input.width, input.height, 0, 0, canvas.width, canvas.height);\n }\n\n // draw all results\n human.draw.face(canvas, result.face);\n human.draw.body(canvas, result.body);\n human.draw.hand(canvas, result.hand);\n human.draw.object(canvas, result.object);\n human.draw.gesture(canvas, result.gesture);\n await calcSimmilariry(result);\n\n // update log\n const engine = human.tf.engine();\n const gpu = engine.backendInstance ? `gpu: ${(engine.backendInstance.numBytesInGPU ? engine.backendInstance.numBytesInGPU : 0).toLocaleString()} bytes` : '';\n const memory = `system: ${engine.state.numBytes.toLocaleString()} bytes ${gpu} | tensors: ${engine.state.numTensors.toLocaleString()}`;\n const processing = result.canvas ? `processing: ${result.canvas.width} x ${result.canvas.height}` : '';\n const avgDetect = Math.trunc(10 * ui.detectFPS.reduce((a, b) => a + b, 0) / ui.detectFPS.length) / 10;\n const avgDraw = Math.trunc(10 * ui.drawFPS.reduce((a, b) => a + b, 0) / ui.drawFPS.length) / 10;\n const warning = (ui.detectFPS.length > 5) && (avgDetect < 5) ? 'warning: your performance is low: try switching to higher performance backend, lowering resolution or disabling some models' : '';\n document.getElementById('log').innerHTML = `\n video: ${ui.camera.name} | facing: ${ui.camera.facing} | screen: ${window.innerWidth} x ${window.innerHeight} camera: ${ui.camera.width} x ${ui.camera.height} ${processing}
\n backend: ${human.tf.getBackend()} | ${memory}
\n performance: ${str(result.performance)}ms FPS process:${avgDetect} refresh:${avgDraw}
\n ${warning}
\n `;\n\n ui.framesDraw++;\n ui.lastFrame = performance.now();\n // if buffered, immediate loop but limit frame rate although it's going to run slower as JS is singlethreaded\n if (ui.buffered) {\n ui.drawThread = requestAnimationFrame(() => drawResults(input, canvas));\n } else if (!ui.buffered && ui.drawThread) {\n log('stopping buffered refresh');\n cancelAnimationFrame(ui.drawThread);\n ui.drawThread = null;\n }\n}\n\n// setup webcam\nasync function setupCamera() {\n if (ui.busy) return null;\n ui.busy = true;\n const video = document.getElementById('video');\n const canvas = document.getElementById('canvas');\n const output = document.getElementById('log');\n const live = video.srcObject ? ((video.srcObject.getVideoTracks()[0].readyState === 'live') && (video.readyState > 2) && (!video.paused)) : false;\n let msg = '';\n status('setting up camera');\n // setup webcam. note that navigator.mediaDevices requires that page is accessed via https\n if (!navigator.mediaDevices) {\n msg = 'camera access not supported';\n output.innerText += `\\n${msg}`;\n log(msg);\n status(msg);\n ui.busy = false;\n return msg;\n }\n let stream;\n const constraints = {\n audio: false,\n video: { facingMode: ui.facing ? 'user' : 'environment', resizeMode: ui.crop ? 'crop-and-scale' : 'none' },\n };\n if (window.innerWidth > window.innerHeight) constraints.video.width = { ideal: window.innerWidth };\n else constraints.video.height = { ideal: (window.innerHeight - document.getElementById('menubar').offsetHeight) };\n try {\n stream = await navigator.mediaDevices.getUserMedia(constraints);\n } catch (err) {\n if (err.name === 'PermissionDeniedError' || err.name === 'NotAllowedError') msg = 'camera permission denied';\n else if (err.name === 'SourceUnavailableError') msg = 'camera not available';\n else msg = `camera error: ${err.message || err}`;\n output.innerText += `\\n${msg}`;\n status(msg);\n log('camera error:', err);\n ui.busy = false;\n return msg;\n }\n if (stream) video.srcObject = stream;\n else {\n ui.busy = false;\n return 'camera stream empty';\n }\n const track = stream.getVideoTracks()[0];\n const settings = track.getSettings();\n // log('camera constraints:', constraints, 'window:', { width: window.innerWidth, height: window.innerHeight }, 'settings:', settings, 'track:', track);\n ui.camera = { name: track.label?.toLowerCase(), width: settings.width, height: settings.height, facing: settings.facingMode === 'user' ? 'front' : 'back' };\n return new Promise((resolve) => {\n video.onloadeddata = async () => {\n video.width = video.videoWidth;\n video.height = video.videoHeight;\n canvas.width = video.width;\n canvas.height = video.height;\n canvas.style.width = canvas.width > canvas.height ? '100vw' : '';\n canvas.style.height = canvas.width > canvas.height ? '' : '100vh';\n ui.menuWidth.input.setAttribute('value', video.width);\n ui.menuHeight.input.setAttribute('value', video.height);\n // silly font resizing for paint-on-canvas since viewport can be zoomed\n if (live) video.play();\n // eslint-disable-next-line no-use-before-define\n if (live && !ui.detectThread) runHumanDetect(video, canvas);\n ui.busy = false;\n // do once more because onresize events can be delayed or skipped\n // if (video.width > window.innerWidth) await setupCamera();\n status('');\n resolve();\n };\n });\n}\n\nfunction initPerfMonitor() {\n if (!bench) {\n const gl = null;\n // cosnt gl = human.tf.engine().backend.gpgpu.gl;\n // if (!gl) log('bench cannot get tensorflow webgl context');\n bench = new GLBench(gl, {\n trackGPU: false, // this is really slow\n chartHz: 20,\n chartLen: 20,\n });\n bench.begin();\n }\n}\n\n// wrapper for worker.postmessage that creates worker if one does not exist\nfunction webWorker(input, image, canvas, timestamp) {\n if (!worker) {\n // create new webworker and add event handler only once\n log('creating worker thread');\n worker = new Worker(ui.worker, { type: 'module' });\n // after receiving message from webworker, parse&draw results and send new frame for processing\n worker.addEventListener('message', (msg) => {\n if (msg.data.result.performance && msg.data.result.performance.total) ui.detectFPS.push(1000 / msg.data.result.performance.total);\n if (ui.detectFPS.length > ui.maxFPSframes) ui.detectFPS.shift();\n if (ui.bench) {\n if (!bench) initPerfMonitor();\n bench.nextFrame(timestamp);\n }\n if (document.getElementById('gl-bench')) document.getElementById('gl-bench').style.display = ui.bench ? 'block' : 'none';\n lastDetectedResult = msg.data.result;\n ui.framesDetect++;\n if (!ui.drawThread) drawResults(input);\n // eslint-disable-next-line no-use-before-define\n ui.detectThread = requestAnimationFrame((now) => runHumanDetect(input, canvas, now));\n });\n }\n // pass image data as arraybuffer to worker by reference to avoid copy\n worker.postMessage({ image: image.data.buffer, width: canvas.width, height: canvas.height, userConfig }, [image.data.buffer]);\n}\n\n// main processing function when input is webcam, can use direct invocation or web worker\nfunction runHumanDetect(input, canvas, timestamp) {\n // if live video\n const live = input.srcObject && (input.srcObject.getVideoTracks()[0].readyState === 'live') && (input.readyState > 2) && (!input.paused);\n if (!live && input.srcObject) {\n // stop ui refresh\n if (ui.drawThread) cancelAnimationFrame(ui.drawThread);\n if (ui.detectThread) cancelAnimationFrame(ui.detectThread);\n ui.drawThread = null;\n ui.detectThread = null;\n // if we want to continue and camera not ready, retry in 0.5sec, else just give up\n if (input.paused) log('camera paused');\n else if ((input.srcObject.getVideoTracks()[0].readyState === 'live') && (input.readyState <= 2)) setTimeout(() => runHumanDetect(input, canvas), 500);\n else log(`camera not ready: track state: ${input.srcObject?.getVideoTracks()[0].readyState} stream state: ${input.readyState}`);\n clearTimeout(ui.drawThread);\n ui.drawThread = null;\n log('frame statistics: process:', ui.framesDetect, 'refresh:', ui.framesDraw);\n log('memory', human.tf.engine().memory());\n return;\n }\n status('');\n if (ui.useWorker) {\n // get image data from video as we cannot send html objects to webworker\n const offscreen = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(canvas.width, canvas.height) : document.createElement('canvas');\n offscreen.width = canvas.width;\n offscreen.height = canvas.height;\n const ctx = offscreen.getContext('2d');\n ctx.drawImage(input, 0, 0, input.width, input.height, 0, 0, canvas.width, canvas.height);\n const data = ctx.getImageData(0, 0, canvas.width, canvas.height);\n // perform detection in worker\n webWorker(input, data, canvas, userConfig, timestamp);\n } else {\n human.detect(input, userConfig).then((result) => {\n if (result.performance && result.performance.total) ui.detectFPS.push(1000 / result.performance.total);\n if (ui.detectFPS.length > ui.maxFPSframes) ui.detectFPS.shift();\n if (ui.bench) {\n if (!bench) initPerfMonitor();\n bench.nextFrame(timestamp);\n }\n if (document.getElementById('gl-bench')) document.getElementById('gl-bench').style.display = ui.bench ? 'block' : 'none';\n if (result.error) {\n log(result.error);\n document.getElementById('log').innerText += `\\nHuman error: ${result.error}`;\n } else {\n lastDetectedResult = result;\n if (!ui.drawThread) drawResults(input);\n ui.framesDetect++;\n ui.detectThread = requestAnimationFrame((now) => runHumanDetect(input, canvas, now));\n }\n });\n }\n}\n\n// main processing function when input is image, can use direct invocation or web worker\nasync function processImage(input) {\n return new Promise((resolve) => {\n const image = new Image();\n image.onload = async () => {\n log('processing image:', encodeURI(image.src));\n const canvas = document.getElementById('canvas');\n image.width = image.naturalWidth;\n image.height = image.naturalHeight;\n canvas.width = human.config.filter.width && human.config.filter.width > 0 ? human.config.filter.width : image.naturalWidth;\n canvas.height = human.config.filter.height && human.config.filter.height > 0 ? human.config.filter.height : image.naturalHeight;\n const result = await human.detect(image, userConfig);\n lastDetectedResult = result;\n await drawResults(image);\n const thumb = document.createElement('canvas');\n thumb.className = 'thumbnail';\n thumb.width = window.innerWidth / (ui.columns + 0.1);\n thumb.height = thumb.width * canvas.height / canvas.width;\n if (result.face && result.face.length > 0) {\n thumb.title = result.face.map((a, i) => `#${i} face: ${Math.trunc(100 * a.faceConfidence)}% box: ${Math.trunc(100 * a.boxConfidence)}% age: ${Math.trunc(a.age)} gender: ${Math.trunc(100 * a.genderConfidence)}% ${a.gender}`).join(' | ');\n } else {\n thumb.title = 'no face detected';\n }\n const ctx = thumb.getContext('2d');\n ctx.drawImage(canvas, 0, 0, canvas.width, canvas.height, 0, 0, thumb.width, thumb.height);\n document.getElementById('samples-container').appendChild(thumb);\n image.src = '';\n resolve(true);\n };\n image.src = input;\n });\n}\n\n// just initialize everything and call main function\nasync function detectVideo() {\n document.getElementById('samples-container').style.display = 'none';\n document.getElementById('canvas').style.display = 'block';\n const video = document.getElementById('video');\n const canvas = document.getElementById('canvas');\n if ((video.srcObject !== null) && !video.paused) {\n document.getElementById('play').style.display = 'block';\n document.getElementById('btnStart').className = 'button button-start';\n document.getElementById('btnStart').innerHTML = 'start
video';\n status('paused');\n video.pause();\n } else {\n const cameraError = await setupCamera();\n if (!cameraError) {\n document.getElementById('play').style.display = 'none';\n for (const m of Object.values(menu)) m.hide();\n status('');\n document.getElementById('btnStart').className = 'button button-stop';\n document.getElementById('btnStart').innerHTML = 'pause
video';\n await video.play();\n if (!ui.detectThread) runHumanDetect(video, canvas);\n } else {\n status(cameraError);\n }\n }\n}\n\n// just initialize everything and call main function\nasync function detectSampleImages() {\n userConfig.videoOptimized = false; // force disable video optimizations\n document.getElementById('play').style.display = 'none';\n document.getElementById('canvas').style.display = 'none';\n document.getElementById('samples-container').style.display = 'block';\n log('running detection of sample images');\n status('processing images');\n document.getElementById('samples-container').innerHTML = '';\n for (const m of Object.values(menu)) m.hide();\n for (const image of ui.samples) await processImage(image);\n status('');\n}\n\nfunction setupMenu() {\n let x = [];\n if (window.innerWidth > 800) {\n // initial position of menu items, later it's calculated based on mouse coordinates\n x = [`${document.getElementById('btnDisplay').offsetLeft - 50}px`, `${document.getElementById('btnImage').offsetLeft - 50}px`, `${document.getElementById('btnProcess').offsetLeft - 50}px`, `${document.getElementById('btnModel').offsetLeft - 50}px`];\n } else {\n // absolute minimum spacing for menus\n x = ['0rem', '11rem', '21.1rem', '33rem'];\n }\n\n menu.display = new Menu(document.body, '', { top: `${document.getElementById('menubar').offsetHeight}px`, left: x[0] });\n menu.display.addBool('perf monitor', ui, 'bench', (val) => ui.bench = val);\n menu.display.addBool('buffered output', ui, 'buffered', (val) => ui.buffered = val);\n menu.display.addBool('crop & scale', ui, 'crop', (val) => {\n ui.crop = val;\n setupCamera();\n });\n menu.display.addBool('camera facing', ui, 'facing', (val) => {\n ui.facing = val;\n setupCamera();\n });\n menu.display.addHTML('
');\n menu.display.addBool('use 3D depth', human.draw.drawOptions, 'useDepth');\n menu.display.addBool('draw with curves', human.draw.drawOptions, 'useCurves');\n menu.display.addBool('print labels', human.draw.drawOptions, 'drawLabels');\n menu.display.addBool('draw points', human.draw.drawOptions, 'drawPoints');\n menu.display.addBool('draw boxes', human.draw.drawOptions, 'drawBoxes');\n menu.display.addBool('draw polygons', human.draw.drawOptions, 'drawPolygons');\n menu.display.addBool('fill polygons', human.draw.drawOptions, 'fillPolygons');\n\n menu.image = new Menu(document.body, '', { top: `${document.getElementById('menubar').offsetHeight}px`, left: x[1] });\n menu.image.addBool('enabled', human.config.filter, 'enabled', (val) => human.config.filter.enabled = val);\n ui.menuWidth = menu.image.addRange('image width', human.config.filter, 'width', 0, 3840, 10, (val) => human.config.filter.width = parseInt(val));\n ui.menuHeight = menu.image.addRange('image height', human.config.filter, 'height', 0, 2160, 10, (val) => human.config.filter.height = parseInt(val));\n menu.image.addHTML('
');\n menu.image.addRange('brightness', human.config.filter, 'brightness', -1.0, 1.0, 0.05, (val) => human.config.filter.brightness = parseFloat(val));\n menu.image.addRange('contrast', human.config.filter, 'contrast', -1.0, 1.0, 0.05, (val) => human.config.filter.contrast = parseFloat(val));\n menu.image.addRange('sharpness', human.config.filter, 'sharpness', 0, 1.0, 0.05, (val) => human.config.filter.sharpness = parseFloat(val));\n menu.image.addRange('blur', human.config.filter, 'blur', 0, 20, 1, (val) => human.config.filter.blur = parseInt(val));\n menu.image.addRange('saturation', human.config.filter, 'saturation', -1.0, 1.0, 0.05, (val) => human.config.filter.saturation = parseFloat(val));\n menu.image.addRange('hue', human.config.filter, 'hue', 0, 360, 5, (val) => human.config.filter.hue = parseInt(val));\n menu.image.addRange('pixelate', human.config.filter, 'pixelate', 0, 32, 1, (val) => human.config.filter.pixelate = parseInt(val));\n menu.image.addHTML('
');\n menu.image.addBool('negative', human.config.filter, 'negative', (val) => human.config.filter.negative = val);\n menu.image.addBool('sepia', human.config.filter, 'sepia', (val) => human.config.filter.sepia = val);\n menu.image.addBool('vintage', human.config.filter, 'vintage', (val) => human.config.filter.vintage = val);\n menu.image.addBool('kodachrome', human.config.filter, 'kodachrome', (val) => human.config.filter.kodachrome = val);\n menu.image.addBool('technicolor', human.config.filter, 'technicolor', (val) => human.config.filter.technicolor = val);\n menu.image.addBool('polaroid', human.config.filter, 'polaroid', (val) => human.config.filter.polaroid = val);\n\n menu.process = new Menu(document.body, '', { top: `${document.getElementById('menubar').offsetHeight}px`, left: x[2] });\n menu.process.addList('backend', ['cpu', 'webgl', 'wasm', 'humangl'], human.config.backend, (val) => human.config.backend = val);\n menu.process.addBool('async operations', human.config, 'async', (val) => human.config.async = val);\n // menu.process.addBool('enable profiler', human.config, 'profile', (val) => human.config.profile = val);\n // menu.process.addBool('memory shield', human.config, 'deallocate', (val) => human.config.deallocate = val);\n menu.process.addBool('use web worker', ui, 'useWorker');\n menu.process.addHTML('
');\n menu.process.addLabel('model parameters');\n menu.process.addRange('max objects', human.config.face.detector, 'maxFaces', 1, 50, 1, (val) => {\n human.config.face.detector.maxFaces = parseInt(val);\n human.config.body.maxDetections = parseInt(val);\n human.config.hand.maxHands = parseInt(val);\n });\n menu.process.addRange('skip frames', human.config.face.detector, 'skipFrames', 0, 50, 1, (val) => {\n human.config.face.detector.skipFrames = parseInt(val);\n human.config.face.emotion.skipFrames = parseInt(val);\n human.config.face.age.skipFrames = parseInt(val);\n human.config.hand.skipFrames = parseInt(val);\n });\n menu.process.addRange('min confidence', human.config.face.detector, 'minConfidence', 0.0, 1.0, 0.05, (val) => {\n human.config.face.detector.minConfidence = parseFloat(val);\n human.config.face.gender.minConfidence = parseFloat(val);\n human.config.face.emotion.minConfidence = parseFloat(val);\n human.config.hand.minConfidence = parseFloat(val);\n });\n menu.process.addRange('score threshold', human.config.face.detector, 'scoreThreshold', 0.1, 1.0, 0.05, (val) => {\n human.config.face.detector.scoreThreshold = parseFloat(val);\n human.config.hand.scoreThreshold = parseFloat(val);\n human.config.body.scoreThreshold = parseFloat(val);\n });\n menu.process.addRange('overlap', human.config.face.detector, 'iouThreshold', 0.1, 1.0, 0.05, (val) => {\n human.config.face.detector.iouThreshold = parseFloat(val);\n human.config.hand.iouThreshold = parseFloat(val);\n });\n menu.process.addBool('detection rotation', human.config.face.detector, 'rotation', (val) => {\n human.config.face.detector.rotation = val;\n human.config.hand.rotation = val;\n });\n menu.process.addHTML('
');\n menu.process.addButton('process sample images', 'process images', () => detectSampleImages());\n menu.process.addHTML('
');\n menu.process.addChart('FPS', 'FPS');\n\n menu.models = new Menu(document.body, '', { top: `${document.getElementById('menubar').offsetHeight}px`, left: x[3] });\n menu.models.addBool('face detect', human.config.face, 'enabled', (val) => human.config.face.enabled = val);\n menu.models.addBool('face mesh', human.config.face.mesh, 'enabled', (val) => human.config.face.mesh.enabled = val);\n menu.models.addBool('face iris', human.config.face.iris, 'enabled', (val) => human.config.face.iris.enabled = val);\n menu.models.addBool('face description', human.config.face.description, 'enabled', (val) => human.config.face.age.description = val);\n // menu.models.addBool('face age', human.config.face.age, 'enabled', (val) => human.config.face.age.enabled = val);\n // menu.models.addBool('face gender', human.config.face.gender, 'enabled', (val) => human.config.face.gender.enabled = val);\n menu.models.addBool('face emotion', human.config.face.emotion, 'enabled', (val) => human.config.face.emotion.enabled = val);\n menu.models.addHTML('
');\n menu.models.addBool('body pose', human.config.body, 'enabled', (val) => human.config.body.enabled = val);\n menu.models.addBool('hand pose', human.config.hand, 'enabled', (val) => human.config.hand.enabled = val);\n menu.models.addHTML('
');\n menu.models.addBool('gestures', human.config.gesture, 'enabled', (val) => human.config.gesture.enabled = val);\n menu.models.addHTML('
');\n menu.models.addBool('object detection', human.config.object, 'enabled', (val) => human.config.object.enabled = val);\n menu.models.addHTML('
');\n menu.models.addBool('face compare', compare, 'enabled', (val) => {\n compare.enabled = val;\n compare.original = null;\n });\n\n document.getElementById('btnDisplay').addEventListener('click', (evt) => menu.display.toggle(evt));\n document.getElementById('btnImage').addEventListener('click', (evt) => menu.image.toggle(evt));\n document.getElementById('btnProcess').addEventListener('click', (evt) => menu.process.toggle(evt));\n document.getElementById('btnModel').addEventListener('click', (evt) => menu.models.toggle(evt));\n document.getElementById('btnStart').addEventListener('click', () => detectVideo());\n document.getElementById('play').addEventListener('click', () => detectVideo());\n}\n\nasync function drawWarmup(res) {\n const canvas = document.getElementById('canvas');\n canvas.width = res.canvas.width;\n canvas.height = res.canvas.height;\n const ctx = canvas.getContext('2d');\n ctx.drawImage(res.canvas, 0, 0, res.canvas.width, res.canvas.height, 0, 0, canvas.width, canvas.height);\n await human.draw.all(canvas, res);\n}\n\nasync function main() {\n log('demo starting ...');\n setupMenu();\n document.getElementById('log').innerText = `Human: version ${human.version}`;\n if (ui.modelsPreload && !ui.useWorker) {\n status('loading');\n await human.load(userConfig); // this is not required, just pre-loads all models\n const loaded = Object.keys(human.models).filter((a) => human.models[a]);\n log('demo loaded models:', loaded);\n }\n if (!ui.useWorker) {\n status('initializing');\n const res = await human.warmup(userConfig); // this is not required, just pre-warms all models for faster initial inference\n if (res && res.canvas && ui.drawWarmup) await drawWarmup(res);\n }\n status('human: ready');\n document.getElementById('loader').style.display = 'none';\n document.getElementById('play').style.display = 'block';\n log('demo ready...');\n}\n\nwindow.onload = main;\nwindow.onresize = setupCamera;\n"], - "mappings": "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AAC,IAAK,EAAI,KAC7D,EAAc,EACd,EAAc,KAAK,GAGrB,OAAS,GAAI,EAAG,EAAI,EAAa,EAAE,EAAG,CACpC,GAAM,GAAc,EAAK,kBAAkB,EAAoB,SACzD,EAAY,EAAQ,eAAe,GAAI,QAAS,GAChD,EACF,GAAM,CAAC,OAAQ,CAAC,EAAG,EAAW,EAAG,GAAc,QAAA,IAC7C,EACF,GAAK,CAAC,OAAQ,CAAC,KAAU,QAAA,EAAS,MAAO,CAAC,MAAO,aAC/C,EACF,GAAS,CAAC,OAAQ,CAAC,EAAG,EAAY,EAAG,GAAI,QAAA,IACvC,EACF,GAAI,CAAC,OAAQ,CAAC,EAAG,GAAM,QAAA,EAAS,MAAO,CAAC,KAAM,EAAG,SAAU,MAC/D,EAAI,KAAK,GACT,EAAc,KAAK,GACnB,EAAc,KAAK,GACnB,EAAc,KAAK,GACnB,EAAc,KAAK,GACnB,EAAc,KAAK,GAGrB,GAAM,GAAS,GAAK,CAAC,OAAQ,EAAK,QAAA,EAAS,MAAO,CAAC,KAAM,KAEzD,MAAA,GAAc,QAAQ,GAAK,EAAQ,8BAA8B,IAE1D,EAGF,GAAM,IAAyC,CACpD,WAAY,GACZ,YAAa,MACb,WAAY,IC4FR,GAAgC,CACpC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,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AAK,GAEX,EAAO,MAAM,KAAO,EACtB,MAAO,GAET,GAAM,GAAY,GAAM,CACtB,QAAA,EACA,MAAO,CAAC,MAAO,EAAG,KAAM,EAAa,KAAM,EAAG,MAAO,aAEjD,EAAW,GAAK,CACpB,OAAQ,CAAC,EAAG,GACZ,QAAA,EACA,MAAO,CAAC,KAAM,CAAC,EAAS,MAG1B,MAAA,GAAU,KAAK,GACf,EAAU,KAAK,GAGX,EAAa,EAAQ,EAAW,EAAU,EAAO,IAIrD,EAAc,EAChB,EAAK,qBAAsB,EAAY,EAAa,GAElD,EACF,GAAQ,CAAC,OAAQ,CAAC,KAAiB,QAAA,EAAS,MAAO,CAAC,MAAO,KAE3D,EAAS,EACb,GAAI,GAAe,KAAM,CACvB,EAAU,KAAK,GACf,GAAM,GAAO,EAAa,uBAAuB,GACjD,EAAS,GAAU,CAAC,OAAQ,CAAC,EAAG,GAAS,QAAA,EAAS,MAAO,CAAC,KAAA,KAG5D,MAAA,GAAU,QAAQ,GAAK,EAAQ,8BAA8B,IACtD,EAGF,GAAM,IAAyC,CACpD,WAAY,GACZ,YAAa,QACb,WAAY,IC6DR,GAAgC,CACpC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,G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,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,iBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,iBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAA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,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,EAAG,IAC/I,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,EAAG,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IACnJ,IAAK,GAAI,EAAG,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IACnJ,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,IAAK,IAAK,GAAI,EAAG,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAC9I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GACtJ,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,GAClJ,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,EAAG,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GACnJ,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GACrJ,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IACpJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,EAAG,IAClJ,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,IAAK,IAAK,IACnJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IACnJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAChJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,EAAG,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAChJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAC7I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAClJ,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAC7I,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,EAAG,IAAK,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GACnJ,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GACpJ,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,GAAI,IAAK,GAAI,IAAK,EAAG,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAClJ,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAClJ,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,GAAI,EAAG,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAChJ,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IACpJ,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GACrJ,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,GAAI,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,GACpJ,IAAK,GAAI,IAAK,IAAK,EAAG,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,EAAG,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAC/I,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,EAAG,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAC9I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GACpJ,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GACrJ,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IACpJ,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,EACpJ,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAC9I,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,EAAG,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,EAAG,GAAI,IAClJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAC9I,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAChJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAChJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAC9I,IAAK,GAAI,IAAK,EAAG,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAChJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,I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H,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAE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A;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kEA0JP,GAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;qBzB3JpB,+BA8CO,QAAY,CAgDjB,YAAY,EAA8B,GAAI,CAN9C,oBACA,oBACA,oBACA,oBAqDA,aAAU,IAAI,IAAQ,CACpB,GAAI,CAAC,QAAK,IAAqB,OAC/B,GAAM,GAAU,KAAK,GAAG,SAAS,MAAM,WACjC,EAAW,QAAK,IACtB,QAAK,GAAc,GACnB,GAAM,GAAS,EAAU,EACzB,AAAI,IAAW,GAAG,GAAI,GAAG,EAAK,IAKhC,YAAU,AAAC,GAAyB,CAClC,GAAI,CAAC,QAAK,IAAc,MAAO,MAC/B,GAAI,CAAC,EAAO,MAAO,uBACnB,GAAI,KAAK,GAAG,IAAI,MAAM,SAAW,CAAE,aAAoB,KAAS,MAAO,yBACvE,GAAI,CACF,KAAK,GAAG,mBACF,EAAN,CACA,MAAO,qBAET,MAAO,QAqFT,YAAgB,MAAO,EAAQ,KAAU,CACvC,GAAI,KAAK,OAAO,SAAY,KAAK,OAAO,UAAY,IAAO,GAAU,KAAK,GAAG,eAAiB,KAAK,OAAO,QAAU,CAClH,GAAM,GAAY,KAYlB,GAXA,KAAK,MAAQ,UAWT,KAAK,OAAO,SAAW,KAAK,OAAO,UAAY,GAAI,CAKrD,GAJI,KAAK,GAAG,IAAI,MAAM,YAAc,KAAK,OAAO,UAAY,cAAc,MAAK,OAAO,QAAU,SAC5F,KAAK,GAAG,IAAI,MAAM,SAAY,MAAK,OAAO,UAAY,SAAW,KAAK,OAAO,UAAY,SAAS,MAAK,OAAO,QAAU,cACxH,KAAK,OAAO,OAAO,GAAI,mBAAoB,KAAK,OAAO,SAEvD,KAAK,OAAO,UAAY,OAAQ,CAClC,AAAI,KAAK,OAAO,OAAO,GAAI,aAAc,KAAK,OAAO,UACrD,KAAK,GAAG,aAAa,KAAK,OAAO,UACjC,GAAM,GAAO,KAAM,MAAK,GAAG,MAAM,SAAS,yBACpC,EAAK,KAAM,MAAK,GAAG,MAAM,SAAS,gCACxC,AAAI,KAAK,OAAO,OAAO,GAAI,mBAAmB,EAAO,OAAS,aAAa,EAAK,gBAAkB,oBAC7F,GAAM,GAAI,6CAGjB,AAAI,KAAK,OAAO,UAAY,WAAW,AAAQ,KAC/C,GAAI,CACF,KAAM,MAAK,GAAG,WAAW,KAAK,OAAO,eAC9B,EAAP,CACA,GAAI,6BAA8B,KAAK,OAAO,QAAS,IAO3D,GAJA,KAAK,GAAG,iBAIJ,KAAK,GAAG,eAAiB,QAAS,CACpC,AAAI,KAAK,OAAO,YACd,IAAI,kDAAmD,KAAK,OAAO,YACnE,KAAK,GAAG,IAAI,IAAI,iCAAkC,KAAK,OAAO,WAAa,EAAI,KAIjF,GAAM,GAAK,KAAM,MAAK,GAAG,UAAU,kBAAkB,GACrD,AAAI,KAAK,OAAO,OAAO,GAAI,cAAc,EAAG,aAAa,EAAG,qBAAqB,EAAG,aAAa,EAAG,aAEtG,KAAM,MAAK,GAAG,QACd,KAAK,KAAK,QAAU,KAAK,MAAM,KAAQ,MA6I3C,YAAgB,SAAY,CAC1B,GAAM,GAAY,CAAC,EAAQ,EAAO,6BAA+B,MAAM,QAAQ,YAAe,KAAU,KAAK,AAAC,GAAQ,EAAI,QACtH,EACA,EACJ,OAAQ,KAAK,OAAO,YACb,OAAQ,EAAO,KAAM,GAAiB,IAAO,UAC7C,OAAQ,EAAO,KAAM,GAAiB,IAAO,cACzC,EAAO,KAElB,GAAI,EAAM,CACR,GAAM,GAAS,KAAM,mBAAkB,GACvC,EAAM,KAAM,MAAK,OAAO,EAAQ,KAAK,QACrC,EAAO,QAET,MAAO,KAIT,YAAgB,SAAY,GAAI,SAAQ,AAAC,GAAY,CACnD,GAAI,GACA,EAAO,EACX,OAAQ,KAAK,OAAO,YACb,OACH,EAAO,IACP,EAAM,0BAAmC,GACzC,UACG,WACA,OACH,EAAO,KACP,EAAM,0BAAmC,GACzC,cAEA,EAAM,KAGV,GAAM,GAAM,GAAI,OAChB,EAAI,OAAS,SAAY,CACvB,GAAM,GAAU,MAAO,kBAAoB,YAAe,GAAI,iBAAgB,EAAM,GAAQ,SAAS,cAAc,UACnH,EAAO,MAAQ,EAAI,aACnB,EAAO,OAAS,EAAI,cACpB,GAAM,GAAM,EAAO,WAAW,MAC9B,WAAK,UAAU,EAAK,EAAG,GAEvB,GAAM,GAAM,KAAM,MAAK,OAAO,EAAQ,KAAK,QAC3C,EAAQ,IAEV,AAAI,EAAK,EAAI,IAAM,EACd,EAAQ,SAIf,YAAc,SAAY,CACxB,GAAM,GAAO,AAAC,GAAQ,OAAO,KAAK,EAAK,UACjC,EAAM,KAAK,OAAO,SAAW,OAAS,EAAY,IAAQ,EAAY,IAEtE,EAAO,AAAG,SAAK,WAAW,GAC1B,EAAW,EAAK,WAAW,GACjC,KAAK,GAAG,QAAQ,GAEhB,GAAM,GAAM,KAAM,MAAK,OAAO,EAAU,KAAK,QAC7C,YAAK,GAAG,QAAQ,GACT,IAtZP,KAAK,GAAK,GACV,KAAK,KAAO,GACZ,KAAK,QAAc,GACnB,KAAK,OAAS,GAAU,GAAU,GAClC,KAAK,MAAQ,OACb,QAAK,GAAc,GACnB,QAAK,GAAsB,IAC3B,QAAK,GAAe,IACpB,QAAK,GAAY,IACjB,KAAK,KAAO,GAEZ,KAAK,OAAS,CACZ,KAAM,KACN,QAAS,KACT,UAAW,KACX,SAAU,KACV,KAAM,KACN,IAAK,KACL,OAAQ,KACR,QAAS,KACT,UAAW,KACX,QAAS,KACT,QAAS,MAIX,KAAK,MAAQ,AAAC,GAAiB,AAAM,GAAQ,EAAO,KAAK,QAEzD,KAAK,QAAU,CACb,YACA,OACA,UACA,WACA,WACA,KAAM,KAAK,OAAO,KAAK,UAAU,SAAS,WAAa,GAAU,GACjE,KAAM,GACN,YAGF,KAAK,QAAU,AAAQ,KAGzB,aAAyH,CACvH,MAAI,MAAK,OAAO,QAAwB,GACjC,GA4BT,WAAW,EAA2B,EAAmC,CACvE,MAAI,MAAK,OAAO,KAAK,YAAY,QAAgB,AAAQ,GAAW,EAAY,GAC5E,KAAK,OAAO,KAAK,UAAU,QAAgB,AAAU,GAAW,EAAY,GACzE,EAIT,QAAQ,EAA8B,CACpC,MAAO,AAAQ,IAAQ,GAIzB,MAAM,EAA8B,EAAkE,EAAY,EAA8E,CAC9L,MAAO,AAAQ,IAAM,EAAe,EAAI,QAIpC,MAAK,EAA8B,GAAI,CAC3C,KAAK,MAAQ,OACb,GAAM,GAAY,KAClB,AAAI,GAAY,MAAK,OAAS,GAAU,KAAK,OAAQ,IAEjD,QAAK,KACH,MAAK,OAAO,OAAO,GAAI,YAAY,KAAK,WACxC,KAAK,OAAO,OAAO,GAAI,iBAAiB,KAAK,GAAG,gBAChD,KAAK,OAAO,OAAO,GAAI,YAAa,KAAK,QAAQ,UACjD,KAAK,OAAO,OAAO,GAAI,SAAU,KAAK,QAAQ,OAElD,KAAM,SAAK,IAAL,UAAmB,IACrB,KAAK,GAAG,IAAI,MAAM,YAChB,MAAK,OAAO,OAAO,GAAI,iBAAkB,KAAK,QAC9C,KAAK,OAAO,OAAO,GAAI,YAAa,KAAK,GAAG,IAAI,SAGxD,AAAI,KAAK,OAAO,MACd,CACE,KAAK,OAAO,KACZ,KAAK,OAAO,IACZ,KAAK,OAAO,OACZ,KAAK,OAAO,QACZ,KAAK,OAAO,UACZ,KAAK,OAAO,SACZ,KAAK,OAAO,QACZ,KAAK,OAAO,UACZ,KAAK,OAAO,QACZ,KAAK,OAAO,SACV,KAAM,SAAQ,IAAI,CACpB,KAAK,OAAO,MAAS,MAAK,OAAO,KAAK,QAAU,AAAS,QAAK,KAAK,QAAU,MAC7E,KAAK,OAAO,KAAS,MAAK,OAAO,KAAK,SAAW,KAAK,OAAO,KAAK,IAAI,QAAW,AAAI,GAAK,KAAK,QAAU,MACzG,KAAK,OAAO,QAAY,MAAK,OAAO,KAAK,SAAW,KAAK,OAAO,KAAK,OAAO,QAAW,AAAO,GAAK,KAAK,QAAU,MAClH,KAAK,OAAO,SAAa,MAAK,OAAO,KAAK,SAAW,KAAK,OAAO,KAAK,QAAQ,QAAW,AAAQ,GAAK,KAAK,QAAU,MACrH,KAAK,OAAO,WAAe,MAAK,OAAO,KAAK,SAAW,KAAK,OAAO,KAAK,UAAU,QAAW,AAAU,GAAK,KAAK,QAAU,MAC3H,KAAK,OAAO,UAAa,MAAK,OAAO,KAAK,QAAU,AAAS,GAAK,KAAK,QAAU,MACjF,KAAK,OAAO,SAAY,MAAK,OAAO,KAAK,SAAW,KAAK,OAAO,KAAK,UAAU,SAAS,WAAa,AAAQ,GAAK,KAAK,QAAU,MACjI,KAAK,OAAO,SAAY,MAAK,OAAO,KAAK,SAAW,KAAK,OAAO,KAAK,UAAU,SAAS,aAAe,AAAU,GAAK,KAAK,QAAU,MACrI,KAAK,OAAO,SAAY,MAAK,OAAO,OAAO,QAAU,AAAQ,GAAK,KAAK,QAAU,MACjF,KAAK,OAAO,SAAa,MAAK,OAAO,KAAK,SAAW,KAAK,OAAO,KAAK,YAAY,QAAW,AAAQ,GAAK,KAAK,QAAU,QAGvH,MAAK,OAAO,KAAK,SAAW,CAAC,KAAK,OAAO,MAAM,MAAK,OAAO,KAAO,KAAM,AAAS,SAAK,KAAK,SAC3F,KAAK,OAAO,KAAK,SAAW,KAAK,OAAO,KAAK,IAAI,SAAW,CAAC,KAAK,OAAO,KAAK,MAAK,OAAO,IAAM,KAAM,AAAI,IAAK,KAAK,SACpH,KAAK,OAAO,KAAK,SAAW,KAAK,OAAO,KAAK,OAAO,SAAW,CAAC,KAAK,OAAO,QAAQ,MAAK,OAAO,OAAS,KAAM,AAAO,IAAK,KAAK,SAChI,KAAK,OAAO,KAAK,SAAW,KAAK,OAAO,KAAK,QAAQ,SAAW,CAAC,KAAK,OAAO,SAAS,MAAK,OAAO,QAAU,KAAM,AAAQ,IAAK,KAAK,SACpI,KAAK,OAAO,KAAK,SAAW,KAAK,OAAO,KAAK,UAAU,SAAW,CAAC,KAAK,OAAO,WAAW,MAAK,OAAO,UAAY,KAAM,AAAU,IAAK,KAAK,SAC5I,KAAK,OAAO,KAAK,SAAW,CAAC,KAAK,OAAO,UAAU,MAAK,OAAO,SAAW,KAAM,AAAS,IAAK,KAAK,SACnG,KAAK,OAAO,KAAK,SAAW,CAAC,KAAK,OAAO,SAAW,KAAK,OAAO,KAAK,UAAU,SAAS,YAAY,MAAK,OAAO,QAAU,KAAM,AAAQ,IAAK,KAAK,SAClJ,KAAK,OAAO,KAAK,SAAW,CAAC,KAAK,OAAO,WAAa,KAAK,OAAO,KAAK,UAAU,SAAS,cAAc,MAAK,OAAO,UAAY,KAAM,AAAU,IAAK,KAAK,SAC1J,KAAK,OAAO,OAAO,SAAW,CAAC,KAAK,OAAO,SAAS,MAAK,OAAO,QAAU,KAAM,AAAQ,IAAK,KAAK,SAClG,KAAK,OAAO,KAAK,SAAW,KAAK,OAAO,KAAK,YAAY,SAAW,CAAC,KAAK,OAAO,SAAS,MAAK,OAAO,QAAU,KAAM,AAAQ,IAAK,KAAK,UAG1I,QAAK,KACH,MAAK,OAAO,OAAO,GAAI,mBAAoB,KAAK,GAAG,SAAS,MAAM,SAAU,QAAS,KAAK,GAAG,SAAS,MAAM,WAAY,WAC5H,QAAK,GAAY,KAGnB,GAAM,GAAU,KAAK,MAAM,KAAQ,GACnC,AAAI,EAAW,MAAK,KAAK,MAAQ,IAAI,MAAK,KAAK,KAAO,QA4DlD,QAAO,EAAc,EAA8B,GAA6B,CAEpF,MAAO,IAAI,SAAQ,KAAO,IAAY,CAlT1C,YAmTM,KAAK,MAAQ,SACb,GAAI,GAGJ,KAAK,OAAS,GAAU,KAAK,OAAQ,GAGrC,KAAK,MAAQ,QACb,GAAM,GAAQ,QAAK,IAAL,UAAa,GAC3B,AAAI,GACF,IAAI,EAAO,GACX,EAAQ,CAAE,WAGZ,GAAM,GAAY,KAGlB,KAAM,SAAK,IAAL,WAGN,KAAM,MAAK,OAEP,KAAK,OAAO,QAAQ,KAAK,GAAG,SAAS,aACzC,KAAK,QAAQ,gBAEb,EAAY,KACZ,GAAM,GAAU,AAAM,GAAQ,EAAO,KAAK,QAC1C,GAAI,CAAC,GAAW,CAAC,EAAQ,OAAQ,CAC/B,GAAI,qCACJ,EAAQ,CAAE,MAAO,sCACjB,OAEF,KAAK,KAAK,MAAQ,KAAK,MAAM,KAAQ,GACrC,KAAK,QAAQ,cAGb,GAAI,GACA,EACA,EACA,EACA,EAGJ,AAAI,KAAK,OAAO,MACd,GAAU,KAAK,OAAO,KAAK,QAAU,AAAQ,GAAW,KAAM,EAAQ,QAAU,GAC5E,KAAK,KAAK,MAAM,MAAO,MAAK,KAAK,MAErC,MAAK,MAAQ,WACb,EAAY,KACZ,EAAU,KAAK,OAAO,KAAK,QAAU,KAAM,AAAQ,IAAW,KAAM,EAAQ,QAAU,GACtF,EAAU,KAAK,MAAM,KAAQ,GACzB,EAAU,GAAG,MAAK,KAAK,KAAO,IAIpC,KAAK,QAAQ,eACb,AAAI,KAAK,OAAO,MACd,CAAI,KAAK,OAAO,KAAK,UAAU,SAAS,WAAY,EAAU,KAAK,OAAO,KAAK,QAAU,QAAK,OAAO,UAAZ,cAAqB,cAAc,EAAQ,OAAQ,KAAK,QAAU,GACtJ,EAAU,KAAK,OAAO,KAAK,QAAU,AAAU,GAAQ,EAAQ,OAAQ,KAAK,QAAU,GACvF,KAAK,KAAK,MAAM,MAAO,MAAK,KAAK,MAErC,MAAK,MAAQ,WACb,EAAY,KACZ,AAAI,KAAK,OAAO,KAAK,UAAU,SAAS,WAAY,EAAU,KAAK,OAAO,KAAK,QAAU,KAAM,SAAK,OAAO,UAAZ,cAAqB,cAAc,EAAQ,OAAQ,KAAK,SAAU,GAC5J,EAAU,KAAK,OAAO,KAAK,QAAU,KAAM,AAAU,IAAQ,EAAQ,OAAQ,KAAK,QAAU,GACjG,EAAU,KAAK,MAAM,KAAQ,GACzB,EAAU,GAAG,MAAK,KAAK,KAAO,IAEpC,KAAK,QAAQ,aAGb,KAAK,QAAQ,eACb,AAAI,KAAK,OAAO,MACd,GAAU,KAAK,OAAO,KAAK,QAAU,QAAK,OAAO,WAAZ,cAAsB,cAAc,EAAQ,OAAQ,KAAK,QAAU,GACpG,KAAK,KAAK,MAAM,MAAO,MAAK,KAAK,MAErC,MAAK,MAAQ,WACb,EAAY,KACZ,EAAU,KAAK,OAAO,KAAK,QAAU,KAAM,SAAK,OAAO,WAAZ,cAAsB,cAAc,EAAQ,OAAQ,KAAK,SAAU,GAC9G,EAAU,KAAK,MAAM,KAAQ,GACzB,EAAU,GAAG,MAAK,KAAK,KAAO,IAEpC,KAAK,QAAQ,aAGb,KAAK,QAAQ,iBACb,AAAI,KAAK,OAAO,MACd,GAAY,KAAK,OAAO,OAAO,QAAU,AAAQ,GAAQ,EAAQ,OAAQ,KAAK,QAAU,GACpF,KAAK,KAAK,QAAQ,MAAO,MAAK,KAAK,QAEvC,MAAK,MAAQ,aACb,EAAY,KACZ,EAAY,KAAK,OAAO,OAAO,QAAU,KAAM,AAAQ,IAAQ,EAAQ,OAAQ,KAAK,QAAU,GAC9F,EAAU,KAAK,MAAM,KAAQ,GACzB,EAAU,GAAG,MAAK,KAAK,OAAS,IAEtC,KAAK,QAAQ,eAGT,KAAK,OAAO,OACd,EAAC,EAAS,EAAS,EAAS,GAAa,KAAM,SAAQ,IAAI,CAAC,EAAS,EAAS,EAAS,KAEzF,EAAQ,OAAO,UAEX,KAAK,OAAO,QAAQ,KAAK,GAAG,SAAS,WACzC,KAAK,QAAQ,cAEb,GAAI,GAAa,GACjB,AAAI,KAAK,OAAO,QAAQ,SACtB,GAAY,KAEZ,EAAa,CAAC,GAAG,AAAQ,GAAK,GAAU,GAAG,AAAQ,GAAK,GAAU,GAAG,AAAQ,GAAK,GAAU,GAAG,AAAQ,GAAK,IAC5G,AAAK,KAAK,OAAO,MACR,KAAK,KAAK,SAAS,MAAO,MAAK,KAAK,QADrB,KAAK,KAAK,QAAU,KAAK,MAAM,KAAQ,IAIjE,KAAK,KAAK,MAAQ,KAAK,MAAM,KAAQ,GACrC,KAAK,MAAQ,OACb,GAAM,GAAS,CACb,KAAM,EACN,KAAM,EACN,KAAM,EACN,QAAS,EACT,OAAQ,EACR,YAAa,KAAK,KAClB,OAAQ,EAAQ,QAGlB,EAAQ,UAqEN,QAAO,EAA8B,GAAiC,CAC1E,GAAM,GAAK,KACX,AAAI,GAAY,MAAK,OAAS,GAAU,KAAK,OAAQ,IACrD,GAAM,GAAO,KAAK,OAAO,eACzB,KAAK,OAAO,eAAiB,GAC7B,GAAI,GACJ,AAAI,MAAO,oBAAsB,WAAY,EAAM,KAAM,SAAK,IAAL,WACpD,AAAI,MAAO,QAAU,YAAa,EAAM,KAAM,SAAK,IAAL,WAC9C,EAAM,KAAM,SAAK,IAAL,WACjB,KAAK,OAAO,eAAiB,EAC7B,GAAM,GAAK,KACX,MAAI,MAAK,OAAO,OAAO,GAAI,SAAU,KAAK,OAAO,OAAQ,KAAK,MAAM,EAAK,GAAK,KAAM,GAC7E,IA5aT,eACA,eACA,eACA,eAgEA,eA8FA,eA+LA,eAkBA,eAiCA,e0B3eF,GAAI,IAAW,EACX,GAAa,GAEb,GAAQ,CACV,WAAY,gBACZ,MAAO,YACP,eAAgB,QAChB,UAAW,QACX,iBAAkB,YAClB,YAAa,aACb,WAAY,aACZ,YAAa,aACb,gBAAiB,YACjB,WAAY,QACZ,WAAY,aAGd,cAAqB,CACnB,GAAI,GAAY,OAChB,GAAM,GAAM;AAAA;AAAA;AAAA,qDAGuC,GAAM;AAAA;AAAA,sCAErB,GAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kCAWV,GAAM,0BAA0B,GAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,0CAM9B,GAAM;AAAA;AAAA,qCAEX,GAAM;AAAA;AAAA;AAAA,8DAGmB,GAAM;AAAA,kDAClB,GAAM;AAAA,kDACN,GAAM;AAAA,kJAC0F,GAAM;AAAA;AAAA;AAAA;AAAA,qEAInF,GAAM;AAAA;AAAA,4FAEiB,GAAM;AAAA,gCAClE,GAAM;AAAA;AAAA;AAAA,+GAGyE,GAAM;AAAA,kGACnB,GAAM;AAAA,sKAC8D,GAAM;AAAA,kKACV,GAAM;AAAA;AAAA;AAAA;AAAA,IAKhK,EAAK,SAAS,cAAc,SAClC,EAAG,UAAY,EACf,SAAS,qBAAqB,QAAQ,GAAG,YAAY,GACrD,GAAa,GAGf,YAAW,CACT,YAAY,EAAQ,EAAO,EAAU,EAAW,CAC9C,AAAI,GAAW,IAAQ,IAAK,MAAU,IACtC,MACA,KAAK,WAAW,EAAQ,EAAO,GAC/B,KAAK,GAAK,EACV,KAAK,SAAW,GAChB,KACA,KAAK,QAAU,EACf,KAAK,OAAS,EAGhB,WAAW,EAAQ,EAAQ,GAAI,EAAW,CAAE,IAAK,KAAM,KAAM,KAAM,OAAQ,KAAM,MAAO,MAAQ,CAC9F,KAAK,KAAO,SAAS,cAAc,OACnC,KAAK,KAAK,GAAK,QAAQ,KACvB,KAAK,KAAK,UAAY,OAClB,GACE,GAAS,KAAK,MAAK,KAAK,MAAM,IAAM,EAAS,KAC7C,EAAS,QAAQ,MAAK,KAAK,MAAM,OAAS,EAAS,QACnD,EAAS,MAAM,MAAK,KAAK,MAAM,KAAO,EAAS,MAC/C,EAAS,OAAO,MAAK,KAAK,MAAM,MAAQ,EAAS,QAGvD,KAAK,UAAY,SAAS,cAAc,OACxC,KAAK,UAAU,GAAK,kBAAkB,KACtC,KAAK,UAAU,UAAY,uCAG3B,GAAM,GAAU,SAAS,cAAc,OACvC,EAAQ,UAAY,aACpB,EAAQ,GAAK,cAAc,KAC3B,GAAM,GAAM;AAAA;AAAA;AAAA,cAIZ,AAAI,GAAO,GAAQ,UAAY,GAAG,IAAQ,KAC1C,KAAK,KAAK,YAAY,GACtB,EAAQ,iBAAiB,QAAS,IAAM,CACtC,KAAK,UAAU,UAAU,OAAO,0BAChC,KAAK,UAAU,UAAU,OAAO,yBAChC,KAAK,KAAK,MAAM,YAAc,KAAK,UAAU,UAAU,SAAS,0BAA4B,OAAS,UAGvG,KAAK,KAAK,YAAY,KAAK,WAC3B,AAAI,MAAO,IAAW,SAAU,EAAO,YAAY,KAAK,MACnD,SAAS,eAAe,GAAQ,YAAY,KAAK,SAGpD,QAAQ,CACV,YAAK,KACE,QAAQ,KAAK,YAAY,KAAK,QAGnC,KAAK,CACP,MAAO,QAAQ,KAAK,YAAY,KAAK,QAGnC,QAAQ,CACV,MAAO,MAAK,KAAK,eAGf,SAAS,CACX,MAAO,MAAK,KAAK,aAGnB,MAAO,CACL,AAAI,KAAK,UAAU,UAAU,SAAS,0BACpC,MAAK,UAAU,UAAU,OAAO,0BAChC,KAAK,UAAU,UAAU,OAAO,0BAIpC,SAAU,CACR,MAAQ,MAAK,UAAU,UAAU,SAAS,yBAG5C,OAAO,EAAK,CAGV,GAFA,KAAK,UAAU,UAAU,OAAO,0BAChC,KAAK,UAAU,UAAU,OAAO,yBAC5B,KAAK,UAAU,UAAU,SAAS,0BAA4B,EAAK,CACrE,GAAM,GAAI,EAAI,GAAM,GAAI,SAAW,EAAI,QAAQ,GAAK,EAAI,QAAQ,GAAG,MAAQ,MAE3E,AAAI,GAAG,MAAK,KAAK,MAAM,KAAO,GAAG,EAAK,KAAK,KAAK,YAAc,OAE1D,KAAK,KAAK,WAAa,GAAG,MAAK,KAAK,MAAM,KAAO,GAChD,KAAK,KAAK,WAAa,KAAK,KAAK,YAAe,OAAO,YAC1D,MAAK,KAAK,MAAM,KAAO,KACvB,KAAK,KAAK,MAAM,MAAQ,GAE1B,KAAK,KAAK,MAAM,YAAc,YAE9B,MAAK,KAAK,MAAM,YAAc,OAIlC,SAAS,EAAO,CACd,GAAM,GAAK,SAAS,cAAc,OAClC,SAAG,UAAY,aACf,EAAG,GAAK,KAAK,MACb,EAAG,UAAY,EACf,KAAK,KAAK,YAAY,GACtB,EAAG,iBAAiB,QAAS,IAAM,CACjC,KAAK,OAAS,CAAC,KAAK,OACpB,GAAM,GAAM,SAAS,uBAAuB,QAC5C,OAAW,KAAQ,GACjB,EAAK,MAAM,QAAU,KAAK,OAAS,OAAS,UAGzC,EAGT,SAAS,EAAO,CACd,GAAM,GAAK,SAAS,cAAc,OAClC,SAAG,UAAY,uBACf,EAAG,GAAK,KAAK,MACb,EAAG,UAAY,EACf,KAAK,UAAU,YAAY,GACpB,EAGT,QAAQ,EAAO,EAAQ,EAAU,EAAU,CACzC,GAAM,GAAK,SAAS,cAAc,OAClC,SAAG,UAAY,YACf,EAAG,UAAY,+EAA+E,KAAK,UAAU,EAAO,GAAY,UAAY,+CAA+C,KAAK,qBAAqB,IACrN,KAAK,UAAU,YAAY,GAC3B,EAAG,iBAAiB,SAAU,AAAC,GAAQ,CACrC,EAAO,GAAY,EAAI,OAAO,QAC1B,GAAU,EAAS,EAAI,OAAO,WAE7B,OAGH,SAAQ,EAAO,EAAO,EAAU,EAAU,CAC9C,GAAM,GAAK,SAAS,cAAc,OAClC,EAAG,UAAY,YACf,GAAI,GAAU,GACd,OAAW,KAAQ,GAEjB,GAAW,kBAAkB,MADjB,IAAS,EAAW,WAAa,MACA,aAE/C,SAAG,UAAY,wCAAwC,KAAK,8BAA8B,yBAA+B,KAAK,qBAAqB,IACnJ,EAAG,MAAM,WAAa,SAAS,KAAK,MAAM,WAC1C,EAAG,MAAM,SAAW,SAAS,KAAK,MAAM,SACxC,EAAG,MAAM,YAAc,SAAS,KAAK,MAAM,YAC3C,KAAK,UAAU,YAAY,GAC3B,EAAG,iBAAiB,SAAU,AAAC,GAAQ,CACrC,AAAI,GAAU,EAAS,EAAM,EAAI,OAAO,kBAEnC,EAGT,SAAS,EAAO,EAAQ,EAAU,EAAK,EAAK,EAAM,EAAU,CAC1D,GAAM,GAAK,SAAS,cAAc,OAClC,SAAG,UAAY,YACf,EAAG,UAAY,8CAA8C,KAAK,eAAe,WAAa,YAAc,aAAgB,EAAO,OAAc,IACjJ,KAAK,UAAU,YAAY,GAC3B,EAAG,iBAAiB,SAAU,AAAC,GAAQ,CACrC,EAAO,GAAY,SAAS,EAAI,OAAO,SAAW,WAAW,EAAI,OAAO,OAAS,SAAS,EAAI,OAAO,OAAS,WAAW,EAAI,OAAO,OACpI,EAAI,OAAO,aAAa,QAAS,EAAI,OAAO,OACxC,GAAU,EAAS,EAAI,OAAO,SAEpC,EAAG,MAAQ,EAAG,SAAS,GAChB,EAGT,QAAQ,EAAM,CACZ,GAAM,GAAK,SAAS,cAAc,OAClC,SAAG,UAAY,YACf,EAAG,GAAK,KAAK,MACT,GAAM,GAAG,UAAY,GACzB,KAAK,UAAU,YAAY,GACpB,EAGT,UAAU,EAAS,EAAU,EAAU,CACrC,GAAM,GAAK,SAAS,cAAc,UAClC,SAAG,UAAY,wBACf,EAAG,MAAM,WAAa,SAAS,KAAK,MAAM,WAC1C,EAAG,MAAM,SAAW,SAAS,KAAK,MAAM,SACxC,EAAG,MAAM,YAAc,SAAS,KAAK,MAAM,YAC3C,EAAG,KAAO,SACV,EAAG,GAAK,KAAK,MACb,EAAG,UAAY,EACf,KAAK,UAAU,YAAY,GAC3B,EAAG,iBAAiB,QAAS,IAAM,CACjC,AAAI,EAAG,YAAc,EAAS,EAAG,UAAY,EACxC,EAAG,UAAY,EAChB,GAAU,EAAS,EAAG,YAAc,KAEnC,EAGT,SAAS,EAAO,EAAK,EAAS,GAAI,CAChC,GAAM,GAAK,SAAS,cAAc,OAClC,SAAG,UAAY,YACf,EAAG,GAAK,YAAY,IACpB,EAAG,UAAY,GAAG,MAAU,IAAM,IAClC,KAAK,UAAU,YAAY,GACpB,EAIT,YAAY,EAAO,EAAK,EAAS,GAAI,CACnC,GAAM,GAAK,SAAS,eAAe,YAAY,KAC/C,AAAI,EAAI,EAAG,UAAY,GAAG,MAAU,IAAM,IACrC,KAAK,SAAS,EAAO,GAG5B,SAAS,EAAO,EAAI,EAAQ,IAAK,EAAS,GAAI,EAAO,CACnD,AAAI,GAAO,IAAM,WAAa,GAC9B,GAAM,GAAK,SAAS,cAAc,OAClC,SAAG,UAAY,6BACf,EAAG,GAAK,KAAK,MACb,EAAG,UAAY,eAAe,GAAM,cAAc,mCAAuC,uCAAwC,gBAAoB,iBACrJ,KAAK,UAAU,YAAY,GACpB,OAIH,aAAY,EAAI,EAAQ,CAC5B,GAAI,CAAC,GAAW,EAAO,SAAW,EAAI,OACtC,GAAM,GAAS,SAAS,eAAe,eAAe,KACtD,GAAI,CAAC,EAAQ,OACb,GAAM,GAAM,EAAO,WAAW,MAC9B,EAAI,UAAY,GAAM,WACtB,EAAI,SAAS,EAAG,EAAG,EAAO,MAAO,EAAO,QACxC,GAAM,GAAQ,EAAO,MAAQ,EAAO,OAC9B,EAAM,EAAI,KAAK,IAAI,GAAG,GACtB,EAAS,EAAO,OAAS,EAC/B,OAAS,GAAI,EAAG,EAAI,EAAO,OAAQ,IAAK,CACtC,GAAM,GAAW,EAAI,qBAAqB,EAAI,GAAM,EAAO,IAAM,EAAQ,EAAG,GAC5E,EAAS,aAAa,GAAK,GAAM,YACjC,EAAS,aAAa,GAAK,GAAM,YACjC,EAAI,UAAY,EAChB,EAAI,SAAS,EAAI,EAAO,EAAG,EAAQ,EAAG,EAAO,QAC7C,EAAI,UAAY,GAAM,WACtB,EAAI,KAAO,GAAG,EAAQ,mBACtB,EAAI,SAAS,KAAK,MAAM,EAAO,IAAK,EAAI,EAAQ,EAAG,EAAO,OAAS,EAAG,EAAQ,MAK7E,GAAQ,GCvTf,GAAM,KAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAaR,IAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAqBd,QAAc,CAKZ,YAAY,EAAI,EAAW,GAAI,CAC7B,KAAK,IAAM,IACX,KAAK,IAAM,IAEX,KAAK,YAAc,IAAM,GAEzB,KAAK,YAAc,IAAM,GACzB,KAAK,SAAW,GAChB,KAAK,QAAU,GAEf,KAAK,MAAQ,GACb,KAAK,UAAY,GACjB,KAAK,UAAY,GACjB,KAAK,aAAe,GACpB,KAAK,MAAQ,GAAI,OAAM,KAAK,UAC5B,KAAK,IAAM,IAAQ,aAAe,YAAY,IAAO,YAAY,MAAQ,KAAK,MAC9E,KAAK,SAAW,IAAM,CACpB,GAAG,QAAQ,KAAK,KAAK,MAAM,cAAe,AAAC,GAAS,EAAK,MAAM,QAAU,KAAK,SAAW,SAAW,SAGtG,OAAO,OAAO,KAAM,GACpB,KAAK,SAAW,EAChB,KAAK,SAAW,GAChB,KAAK,cAAgB,EACrB,KAAK,QAAU,EAGf,GAAI,GAAW,EAAI,EACjB,EACI,EAAO,AAAC,GAAM,CAClB,AAAI,EAAE,EAAI,GACR,EAAQ,sBAAsB,GAE9B,MAAK,SAAW,KAAK,KAAK,IAAM,EAAK,GAAI,GAAM,IAC/C,qBAAqB,IAElB,GAAI,GAAK,IAKhB,GAHA,sBAAsB,GAGlB,EAAI,CACN,GAAM,GAAW,MAAO,EAAG,IAAiB,QAAQ,QAAQ,WAAW,IAAM,CAC3E,EAAG,WACH,GAAM,GAAK,KAAK,MAAQ,EACxB,EAAa,QAAQ,CAAC,EAAQ,IAAM,CAClC,AAAI,GAAQ,MAAK,UAAU,IAAM,MAElC,IAEG,EAAc,CAAC,EAAI,EAAM,IAAW,CACxC,GAAM,GAAI,EAAK,MAEf,EAAG,MAAM,EAAQ,WACb,EAAK,UAAU,EAAK,SAAS,KAAK,EAAS,EAAG,EAAK,aAAa,MAAM,MAStE,EAAK,eACX,AAAI,EAAG,GACL,EAAG,GAAM,EAAY,EAAG,GAAK,KAAM,GAGnC,QAAQ,IAAI,0CAoBhB,GAAI,CAAC,KAAK,UAAW,CACnB,AAAK,KAAK,KAAK,MAAK,IAAM,SAAS,MACnC,GAAM,GAAM,SAAS,cAAc,OACnC,EAAI,GAAK,WACT,KAAK,IAAI,YAAY,GACrB,KAAK,IAAI,mBAAmB,aAAc,8BAAgC,KAAK,IAAM,YACrF,KAAK,IAAM,EACX,KAAK,IAAI,iBAAiB,QAAS,IAAM,CACvC,KAAK,SAAW,CAAC,KAAK,SACtB,KAAK,aAGP,KAAK,YAAe,EAAC,EAAQ,EAAK,IAAU,CAC1C,GAAM,GAAU,CAAC,SAAU,SAAU,SAAU,SAAU,aAAc,YACjE,EAAQ,IAAK,GACnB,SAAQ,QAAQ,AAAC,GAAM,EAAM,GAAK,EAAI,uBAAuB,IAC7D,KAAK,MAAQ,EACN,CAAC,EAAG,EAAK,EAAK,EAAK,EAAK,EAAW,IAAY,CACpD,EAAM,UAAU,GAAG,MAAM,gBAAmB,GAAM,KAAM,QAAQ,GAAK,OACrE,EAAM,UAAU,GAAG,MAAM,gBAAmB,GAAM,KAAM,QAAQ,GAAK,OAErE,EAAM,UAAU,GAAG,UAAY,EAAM,GAAK,EAAM,GAAM,EAAM,QAAU,EAAI,QAAQ,GAAK,KAAO,GAC9F,EAAM,UAAU,GAAG,UAAY,QAAU,EAAI,QAAQ,GACrD,EAAO,EAAM,GAAI,EAAK,EAAK,EAAK,EAAK,EAAW,MAEjD,KAAK,YAAa,KAAK,IAAK,KAAK,OAEpC,KAAK,YAAe,EAAC,EAAQ,IAAQ,CACnC,GAAM,GAAQ,CAAE,WAAY,EAAI,uBAAuB,aACvD,MAAO,CAAC,EAAG,EAAO,IAAe,CAC/B,GAAI,GAAS,GACP,EAAM,EAAM,OAClB,OAAS,GAAI,EAAG,EAAI,EAAK,IAAK,CAC5B,GAAM,GAAM,GAAa,EAAI,GAAK,EAClC,AAAI,EAAM,KAAQ,QAAW,GAAS,EAAS,IAAO,IAAK,EAAK,GAAM,IAAI,QAAQ,GAAK,IAAO,IAAK,EAAM,GAAM,GAAM,KAAK,UAAU,QAAQ,IAE9I,EAAM,YAAY,GAAG,aAAa,SAAU,GAC5C,EAAO,KAAK,MAAM,GAAI,EAAO,MAE9B,KAAK,YAAa,KAAK,MAQ9B,MAAM,EAAM,CACV,AAAI,KAAK,MAAM,QAAQ,KAAU,IAC/B,MAAK,MAAM,KAAK,GACZ,KAAK,KACP,MAAK,IAAI,mBAAmB,YAAa,KAAK,KAC9C,KAAK,YAEP,KAAK,UAAU,KAAK,GACpB,KAAK,UAAU,KAAK,GACpB,KAAK,aAAa,KAAK,KAQ3B,UAAU,EAAK,CACb,KAAK,UACL,GAAM,GAAI,GAAO,KAAK,MAGtB,GAAI,KAAK,SAAW,EAClB,KAAK,WAAa,KAAK,QACvB,KAAK,UAAY,MACZ,CACL,GAAM,GAAW,EAAI,KAAK,UAC1B,GAAI,GAAY,IAAK,CACnB,GAAM,GAAa,KAAK,QAAU,KAAK,WACjC,EAAM,EAAa,EAAW,IACpC,OAAS,GAAI,EAAG,EAAI,KAAK,MAAM,OAAQ,IAAK,CAC1C,GAAM,GAAM,KAAK,UAAU,GAAK,EAAW,IACrC,EAAM,KAAK,UAAU,GAAK,EAAW,IACrC,EAAO,aAAe,YAAY,OAAU,YAAY,OAAO,eAAkB,IAAK,IAAM,EAClG,KAAK,YAAY,EAAG,EAAK,EAAK,EAAK,EAAK,EAAU,GAClD,KAAK,UAAU,GAAK,EACpB,QAAQ,IAAI,KAAK,UAAU,KAAK,IAAM,CACpC,KAAK,UAAU,GAAK,EACpB,KAAK,SAAW,KAGpB,KAAK,WAAa,KAAK,QACvB,KAAK,UAAY,GAKrB,GAAI,CAAC,KAAK,UAAY,CAAC,KAAK,WAC1B,KAAK,WAAa,KAAK,QACvB,KAAK,UAAY,EACjB,KAAK,WAAa,MACb,CACL,GAAM,GAAW,EAAI,KAAK,UACtB,EAAK,KAAK,QAAU,EAAW,IACnC,KAAO,EAAE,EAAK,GAAK,KAAK,UAAU,CAEhC,GAAM,GAAM,AADO,MAAK,QAAU,KAAK,YACd,EAAW,IACpC,KAAK,MAAM,KAAK,WAAa,KAAK,UAAY,EAC9C,OAAS,GAAI,EAAG,EAAI,KAAK,MAAM,OAAQ,IAAK,KAAK,YAAY,EAAG,KAAK,MAAO,KAAK,YACjF,KAAK,aACL,KAAK,WAAa,KAAK,QACvB,KAAK,UAAY,IASvB,MAAM,EAAM,CACV,KAAK,aAAa,GAOpB,IAAI,EAAM,CACR,KAAK,aAAa,GAGpB,aAAa,EAAM,CACjB,GAAI,GAAS,KAAK,MAAM,QAAQ,GAChC,AAAI,IAAW,IACb,GAAS,KAAK,MAAM,OACpB,KAAK,MAAM,IAGb,GAAM,GAAI,KAAK,MACT,EAAK,EAAI,KAAK,GACpB,OAAS,GAAI,EAAG,EAAI,EAAS,EAAG,IAC9B,AAAI,KAAK,aAAa,IAAI,MAAK,UAAU,IAAM,GAEjD,KAAK,aAAa,GAAU,CAAC,KAAK,aAAa,GAC/C,KAAK,GAAK,IAIP,GAAQ,GChRf,GAAM,IAAa,CAAE,QAAS,SAiBxB,GAAQ,GAAI,IAAM,IAGlB,GAAK,CACT,eAAgB,sBAChB,KAAM,GACN,QAAS,EACT,OAAQ,GACR,UAAW,GACX,OAAQ,YACR,QAAS,CAAC,wBAAyB,wBAAyB,wBAAyB,wBAAyB,wBAAyB,yBACvI,QAAS,0BACT,QAAS,GACT,aAAc,GACd,cAAe,GACf,KAAM,GACN,UAAW,EACX,WAAY,EACZ,OAAQ,GACR,UAAW,GACX,QAAS,GACT,SAAU,GACV,WAAY,GACZ,WAAY,KACZ,aAAc,KACd,WAAY,EACZ,aAAc,EACd,MAAO,GACP,UAAW,GAIP,GAAO,GACT,GACA,GACA,GAAqB,GAGzB,gBAAgB,EAAK,CACnB,GAAI,CAAC,MAAM,QAAQ,GAAM,MAAO,GAChC,GAAI,GAAO,GACX,OAAW,KAAS,GAClB,AAAI,MAAO,IAAU,SAAU,GAAQ,KAAK,UAAU,GAAO,QAAQ,eAAgB,IAAI,QAAQ,KAAM,MAClG,GAAQ,EAEf,MAAO,GAIT,eAAgB,EAAK,CACnB,GAAM,GAAK,GAAI,MACT,EAAK,GAAG,EAAG,WAAW,WAAW,SAAS,EAAG,QAAQ,EAAG,aAAa,WAAW,SAAS,EAAG,QAAQ,EAAG,aAAa,WAAW,SAAS,EAAG,QAAQ,EAAG,kBAAkB,WAAW,SAAS,EAAG,OAErM,AAAI,GAAG,SAAS,QAAQ,IAAI,EAAI,GAAG,GAGrC,YAAgB,EAAK,CAEnB,GAAM,GAAM,SAAS,eAAe,UACpC,AAAI,GAAK,GAAI,UAAY,GAG3B,GAAM,IAAU,CAAE,QAAS,GAAO,SAAU,MAC5C,mBAA+B,EAAQ,CArFvC,gBAwFE,GAFA,SAAS,eAAe,qBAAqB,MAAM,QAAU,GAAQ,QAAU,QAAU,OACrF,CAAC,GAAQ,SACT,CAAE,sBAAQ,OAAR,cAAc,QAAS,IAAO,wBAAQ,KAAK,KAAb,cAAiB,YAAjB,cAA4B,SAAU,GAAK,OAC/E,GAAI,CAAC,GAAQ,SAGX,GAFA,GAAQ,SAAW,EACnB,GAAI,iCAAkC,EAAO,KAAK,IAC9C,EAAO,KAAK,GAAG,OAAQ,CACzB,GAAM,GAAW,GAAM,QAAQ,EAAO,KAAK,IAC3C,GAAI,EAAU,CACZ,GAAM,GAAI,SAAS,eAAe,QAC5B,EAAU,EAAS,UACnB,EAAO,EAAQ,IAAI,KACzB,GAAM,GAAG,QAAQ,SAAS,EAAM,GAChC,EAAS,UACT,EAAQ,UACR,EAAK,eAGP,UAAS,eAAe,kBAAkB,WAAW,MAAM,UAAU,GAAQ,SAAS,OAAQ,EAAG,EAAG,IAAK,KAG7G,GAAM,GAAa,GAAM,WAAW,SAAQ,WAAR,cAAkB,KAAK,KAAvB,cAA2B,UAAW,oBAAQ,KAAK,KAAb,cAAiB,WAC3F,SAAS,eAAe,cAAc,UAAY,eAAe,KAAK,MAAM,IAAO,GAAc,MAInG,GAAI,IAAW,YAAY,MAC3B,kBAA2B,EAAO,CAChC,GAAM,GAAS,GACT,EAAS,SAAS,eAAe,UAWvC,GARA,GAAG,QAAQ,KAAK,IAAQ,aAAY,MAAQ,KACxC,GAAG,QAAQ,OAAS,GAAG,cAAc,GAAG,QAAQ,QACpD,GAAW,YAAY,MAGvB,KAAM,IAAK,QAAQ,YAAY,MAAO,GAAG,WAGrC,GAAG,UAAY,CAAC,EAAO,OAAQ,CACjC,GAAM,GAAQ,KAAM,IAAM,MAAM,GAChC,EAAO,OAAS,EAAM,OACtB,GAAM,GAAG,QAAQ,EAAM,QAIzB,GAAM,GAAM,EAAO,WAAW,MAC9B,EAAI,UAAY,GAAG,eACnB,EAAI,SAAS,EAAG,EAAG,EAAO,MAAO,EAAO,QACxC,AAAI,EAAO,OACL,GAAO,OAAO,QAAU,EAAO,OAAO,GAAO,MAAQ,EAAO,OAAO,OACnE,EAAO,OAAO,SAAW,EAAO,QAAQ,GAAO,OAAS,EAAO,OAAO,QAC1E,EAAI,UAAU,EAAO,OAAQ,EAAG,EAAG,EAAO,OAAO,MAAO,EAAO,OAAO,OAAQ,EAAG,EAAG,EAAO,OAAO,MAAO,EAAO,OAAO,SAEvH,EAAI,UAAU,EAAO,EAAG,EAAG,EAAM,MAAO,EAAM,OAAQ,EAAG,EAAG,EAAO,MAAO,EAAO,QAInF,GAAM,KAAK,KAAK,EAAQ,EAAO,MAC/B,GAAM,KAAK,KAAK,EAAQ,EAAO,MAC/B,GAAM,KAAK,KAAK,EAAQ,EAAO,MAC/B,GAAM,KAAK,OAAO,EAAQ,EAAO,QACjC,GAAM,KAAK,QAAQ,EAAQ,EAAO,SAClC,KAAM,KAAgB,GAGtB,GAAM,GAAS,GAAM,GAAG,SAClB,EAAM,EAAO,gBAAkB,QAAS,GAAO,gBAAgB,cAAgB,EAAO,gBAAgB,cAAgB,GAAG,yBAA2B,GACpJ,EAAS,WAAW,EAAO,MAAM,SAAS,0BAA0B,gBAAkB,EAAO,MAAM,WAAW,mBAC9G,EAAa,EAAO,OAAS,eAAe,EAAO,OAAO,WAAW,EAAO,OAAO,SAAW,GAC9F,EAAY,KAAK,MAAM,GAAK,GAAG,UAAU,OAAO,CAAC,EAAG,IAAM,EAAI,EAAG,GAAK,GAAG,UAAU,QAAU,GAC7F,EAAU,KAAK,MAAM,GAAK,GAAG,QAAQ,OAAO,CAAC,EAAG,IAAM,EAAI,EAAG,GAAK,GAAG,QAAQ,QAAU,GACvF,EAAW,GAAG,UAAU,OAAS,GAAO,EAAY,EAAK,8JAAgK,GAC/N,SAAS,eAAe,OAAO,UAAY;AAAA,aAChC,GAAG,OAAO,kBAAkB,GAAG,OAAO,oBAAoB,OAAO,gBAAgB,OAAO,uBAAuB,GAAG,OAAO,WAAW,GAAG,OAAO,UAAU;AAAA,eACtJ,GAAM,GAAG,kBAAkB;AAAA,mBACvB,IAAI,EAAO,8BAA8B,aAAqB;AAAA,MAC3E;AAAA,IAGJ,GAAG,aACH,GAAG,UAAY,YAAY,MAE3B,AAAI,GAAG,SACL,GAAG,WAAa,sBAAsB,IAAM,GAAY,EAAO,IACtD,CAAC,GAAG,UAAY,GAAG,YAC5B,IAAI,6BACJ,qBAAqB,GAAG,YACxB,GAAG,WAAa,MAKpB,mBAA6B,CApL7B,MAqLE,GAAI,GAAG,KAAM,MAAO,MACpB,GAAG,KAAO,GACV,GAAM,GAAQ,SAAS,eAAe,SAChC,EAAS,SAAS,eAAe,UACjC,EAAS,SAAS,eAAe,OACjC,EAAO,EAAM,UAAc,EAAM,UAAU,iBAAiB,GAAG,aAAe,QAAY,EAAM,WAAa,GAAO,CAAC,EAAM,OAAW,GACxI,EAAM,GAGV,GAFA,GAAO,qBAEH,CAAC,UAAU,aACb,SAAM,8BACN,EAAO,WAAa;AAAA,EAAK,IACzB,GAAI,GACJ,GAAO,GACP,GAAG,KAAO,GACH,EAET,GAAI,GACE,EAAc,CAClB,MAAO,GACP,MAAO,CAAE,WAAY,GAAG,OAAS,OAAS,cAAe,WAAY,GAAG,KAAO,iBAAmB,SAEpG,AAAI,OAAO,WAAa,OAAO,YAAa,EAAY,MAAM,MAAQ,CAAE,MAAO,OAAO,YACjF,EAAY,MAAM,OAAS,CAAE,MAAQ,OAAO,YAAc,SAAS,eAAe,WAAW,cAClG,GAAI,CACF,EAAS,KAAM,WAAU,aAAa,aAAa,SAC5C,EAAP,CACA,MAAI,GAAI,OAAS,yBAA2B,EAAI,OAAS,kBAAmB,EAAM,2BAC7E,AAAI,EAAI,OAAS,yBAA0B,EAAM,uBACjD,EAAM,iBAAiB,EAAI,SAAW,IAC3C,EAAO,WAAa;AAAA,EAAK,IACzB,GAAO,GACP,GAAI,gBAAiB,GACrB,GAAG,KAAO,GACH,EAET,GAAI,EAAQ,EAAM,UAAY,MAE5B,WAAG,KAAO,GACH,sBAET,GAAM,GAAQ,EAAO,iBAAiB,GAChC,EAAW,EAAM,cAEvB,UAAG,OAAS,CAAE,KAAM,KAAM,QAAN,cAAa,cAAe,MAAO,EAAS,MAAO,OAAQ,EAAS,OAAQ,OAAQ,EAAS,aAAe,OAAS,QAAU,QAC5I,GAAI,SAAQ,AAAC,GAAY,CAC9B,EAAM,aAAe,SAAY,CAC/B,EAAM,MAAQ,EAAM,WACpB,EAAM,OAAS,EAAM,YACrB,EAAO,MAAQ,EAAM,MACrB,EAAO,OAAS,EAAM,OACtB,EAAO,MAAM,MAAQ,EAAO,MAAQ,EAAO,OAAS,QAAU,GAC9D,EAAO,MAAM,OAAS,EAAO,MAAQ,EAAO,OAAS,GAAK,QAC1D,GAAG,UAAU,MAAM,aAAa,QAAS,EAAM,OAC/C,GAAG,WAAW,MAAM,aAAa,QAAS,EAAM,QAE5C,GAAM,EAAM,OAEZ,GAAQ,CAAC,GAAG,cAAc,GAAe,EAAO,GACpD,GAAG,KAAO,GAGV,GAAO,IACP,OAKN,aAA2B,CACzB,GAAI,CAAC,GAAO,CACV,GAAM,GAAK,KAGX,GAAQ,GAAI,IAAQ,EAAI,CACtB,SAAU,GACV,QAAS,GACT,SAAU,KAEZ,GAAM,SAKV,aAAmB,EAAO,EAAO,EAAQ,EAAW,CAClD,AAAK,IAEH,IAAI,0BACJ,GAAS,GAAI,QAAO,GAAG,OAAQ,CAAE,KAAM,WAEvC,GAAO,iBAAiB,UAAW,AAAC,GAAQ,CAC1C,AAAI,EAAI,KAAK,OAAO,aAAe,EAAI,KAAK,OAAO,YAAY,OAAO,GAAG,UAAU,KAAK,IAAO,EAAI,KAAK,OAAO,YAAY,OACvH,GAAG,UAAU,OAAS,GAAG,cAAc,GAAG,UAAU,QACpD,GAAG,OACA,KAAO,KACZ,GAAM,UAAU,IAEd,SAAS,eAAe,aAAa,UAAS,eAAe,YAAY,MAAM,QAAU,GAAG,MAAQ,QAAU,QAClH,GAAqB,EAAI,KAAK,OAC9B,GAAG,eACE,GAAG,YAAY,GAAY,GAEhC,GAAG,aAAe,sBAAsB,AAAC,GAAQ,GAAe,EAAO,EAAQ,OAInF,GAAO,YAAY,CAAE,MAAO,EAAM,KAAK,OAAQ,MAAO,EAAO,MAAO,OAAQ,EAAO,OAAQ,eAAc,CAAC,EAAM,KAAK,SAIvH,YAAwB,EAAO,EAAQ,EAAW,CAlSlD,MAqSE,GAAI,CADS,GAAM,WAAc,EAAM,UAAU,iBAAiB,GAAG,aAAe,QAAY,EAAM,WAAa,GAAO,CAAC,EAAM,SACpH,EAAM,UAAW,CAE5B,AAAI,GAAG,YAAY,qBAAqB,GAAG,YACvC,GAAG,cAAc,qBAAqB,GAAG,cAC7C,GAAG,WAAa,KAChB,GAAG,aAAe,KAElB,AAAI,EAAM,OAAQ,GAAI,iBACjB,AAAK,EAAM,UAAU,iBAAiB,GAAG,aAAe,QAAY,EAAM,YAAc,EAAI,WAAW,IAAM,GAAe,EAAO,GAAS,KAC5I,GAAI,kCAAkC,KAAM,YAAN,cAAiB,iBAAiB,GAAG,4BAA4B,EAAM,cAClH,aAAa,GAAG,YAChB,GAAG,WAAa,KAChB,GAAI,6BAA8B,GAAG,aAAc,WAAY,GAAG,YAClE,GAAI,SAAU,GAAM,GAAG,SAAS,UAChC,OAGF,GADA,GAAO,IACH,GAAG,UAAW,CAEhB,GAAM,GAAa,MAAO,kBAAoB,YAAe,GAAI,iBAAgB,EAAO,MAAO,EAAO,QAAU,SAAS,cAAc,UACvI,EAAU,MAAQ,EAAO,MACzB,EAAU,OAAS,EAAO,OAC1B,GAAM,GAAM,EAAU,WAAW,MACjC,EAAI,UAAU,EAAO,EAAG,EAAG,EAAM,MAAO,EAAM,OAAQ,EAAG,EAAG,EAAO,MAAO,EAAO,QACjF,GAAM,GAAO,EAAI,aAAa,EAAG,EAAG,EAAO,MAAO,EAAO,QAEzD,IAAU,EAAO,EAAM,EAAQ,GAAY,OAE3C,IAAM,OAAO,EAAO,IAAY,KAAK,AAAC,GAAW,CAC/C,AAAI,EAAO,aAAe,EAAO,YAAY,OAAO,GAAG,UAAU,KAAK,IAAO,EAAO,YAAY,OAC5F,GAAG,UAAU,OAAS,GAAG,cAAc,GAAG,UAAU,QACpD,GAAG,OACA,KAAO,KACZ,GAAM,UAAU,IAEd,SAAS,eAAe,aAAa,UAAS,eAAe,YAAY,MAAM,QAAU,GAAG,MAAQ,QAAU,QAClH,AAAI,EAAO,MACT,IAAI,EAAO,OACX,SAAS,eAAe,OAAO,WAAa;AAAA,eAAkB,EAAO,SAErE,IAAqB,EAChB,GAAG,YAAY,GAAY,GAChC,GAAG,eACH,GAAG,aAAe,sBAAsB,AAAC,GAAQ,GAAe,EAAO,EAAQ,OAOvF,mBAA4B,EAAO,CACjC,MAAO,IAAI,SAAQ,AAAC,GAAY,CAC9B,GAAM,GAAQ,GAAI,OAClB,EAAM,OAAS,SAAY,CACzB,GAAI,oBAAqB,UAAU,EAAM,MACzC,GAAM,GAAS,SAAS,eAAe,UACvC,EAAM,MAAQ,EAAM,aACpB,EAAM,OAAS,EAAM,cACrB,EAAO,MAAQ,GAAM,OAAO,OAAO,OAAS,GAAM,OAAO,OAAO,MAAQ,EAAI,GAAM,OAAO,OAAO,MAAQ,EAAM,aAC9G,EAAO,OAAS,GAAM,OAAO,OAAO,QAAU,GAAM,OAAO,OAAO,OAAS,EAAI,GAAM,OAAO,OAAO,OAAS,EAAM,cAClH,GAAM,GAAS,KAAM,IAAM,OAAO,EAAO,IACzC,GAAqB,EACrB,KAAM,IAAY,GAClB,GAAM,GAAQ,SAAS,cAAc,UACrC,EAAM,UAAY,YAClB,EAAM,MAAQ,OAAO,WAAc,IAAG,QAAU,IAChD,EAAM,OAAS,EAAM,MAAQ,EAAO,OAAS,EAAO,MACpD,AAAI,EAAO,MAAQ,EAAO,KAAK,OAAS,EACtC,EAAM,MAAQ,EAAO,KAAK,IAAI,CAAC,EAAG,IAAM,IAAI,WAAW,KAAK,MAAM,IAAM,EAAE,yBAAyB,KAAK,MAAM,IAAM,EAAE,wBAAwB,KAAK,MAAM,EAAE,gBAAgB,KAAK,MAAM,IAAM,EAAE,sBAAsB,EAAE,UAAU,KAAK,OAErO,EAAM,MAAQ,mBAGhB,AADY,EAAM,WAAW,MACzB,UAAU,EAAQ,EAAG,EAAG,EAAO,MAAO,EAAO,OAAQ,EAAG,EAAG,EAAM,MAAO,EAAM,QAClF,SAAS,eAAe,qBAAqB,YAAY,GACzD,EAAM,IAAM,GACZ,EAAQ,KAEV,EAAM,IAAM,IAKhB,mBAA6B,CAC3B,SAAS,eAAe,qBAAqB,MAAM,QAAU,OAC7D,SAAS,eAAe,UAAU,MAAM,QAAU,QAClD,GAAM,GAAQ,SAAS,eAAe,SAChC,EAAS,SAAS,eAAe,UACvC,GAAK,EAAM,YAAc,MAAS,CAAC,EAAM,OACvC,SAAS,eAAe,QAAQ,MAAM,QAAU,QAChD,SAAS,eAAe,YAAY,UAAY,sBAChD,SAAS,eAAe,YAAY,UAAY,iBAChD,GAAO,UACP,EAAM,YACD,CACL,GAAM,GAAc,KAAM,MAC1B,GAAK,EASH,GAAO,OATS,CAChB,SAAS,eAAe,QAAQ,MAAM,QAAU,OAChD,OAAW,KAAK,QAAO,OAAO,IAAO,EAAE,OACvC,GAAO,IACP,SAAS,eAAe,YAAY,UAAY,qBAChD,SAAS,eAAe,YAAY,UAAY,iBAChD,KAAM,GAAM,OACP,GAAG,cAAc,GAAe,EAAO,KAQlD,oBAAoC,CAClC,GAAW,eAAiB,GAC5B,SAAS,eAAe,QAAQ,MAAM,QAAU,OAChD,SAAS,eAAe,UAAU,MAAM,QAAU,OAClD,SAAS,eAAe,qBAAqB,MAAM,QAAU,QAC7D,GAAI,sCACJ,GAAO,qBACP,SAAS,eAAe,qBAAqB,UAAY,GACzD,OAAW,KAAK,QAAO,OAAO,IAAO,EAAE,OACvC,OAAW,KAAS,IAAG,QAAS,KAAM,KAAa,GACnD,GAAO,IAGT,cAAqB,CACnB,GAAI,GAAI,GACR,AAAI,OAAO,WAAa,IAEtB,EAAI,CAAC,GAAG,SAAS,eAAe,cAAc,WAAa,OAAQ,GAAG,SAAS,eAAe,YAAY,WAAa,OAAQ,GAAG,SAAS,eAAe,cAAc,WAAa,OAAQ,GAAG,SAAS,eAAe,YAAY,WAAa,QAGjP,EAAI,CAAC,OAAQ,QAAS,UAAW,SAGnC,GAAK,QAAU,GAAI,IAAK,SAAS,KAAM,GAAI,CAAE,IAAK,GAAG,SAAS,eAAe,WAAW,iBAAkB,KAAM,EAAE,KAClH,GAAK,QAAQ,QAAQ,eAAgB,GAAI,QAAS,AAAC,GAAQ,GAAG,MAAQ,GACtE,GAAK,QAAQ,QAAQ,kBAAmB,GAAI,WAAY,AAAC,GAAQ,GAAG,SAAW,GAC/E,GAAK,QAAQ,QAAQ,eAAgB,GAAI,OAAQ,AAAC,GAAQ,CACxD,GAAG,KAAO,EACV,OAEF,GAAK,QAAQ,QAAQ,gBAAiB,GAAI,SAAU,AAAC,GAAQ,CAC3D,GAAG,OAAS,EACZ,OAEF,GAAK,QAAQ,QAAQ,2DACrB,GAAK,QAAQ,QAAQ,eAAgB,GAAM,KAAK,YAAa,YAC7D,GAAK,QAAQ,QAAQ,mBAAoB,GAAM,KAAK,YAAa,aACjE,GAAK,QAAQ,QAAQ,eAAgB,GAAM,KAAK,YAAa,cAC7D,GAAK,QAAQ,QAAQ,cAAe,GAAM,KAAK,YAAa,cAC5D,GAAK,QAAQ,QAAQ,aAAc,GAAM,KAAK,YAAa,aAC3D,GAAK,QAAQ,QAAQ,gBAAiB,GAAM,KAAK,YAAa,gBAC9D,GAAK,QAAQ,QAAQ,gBAAiB,GAAM,KAAK,YAAa,gBAE9D,GAAK,MAAQ,GAAI,IAAK,SAAS,KAAM,GAAI,CAAE,IAAK,GAAG,SAAS,eAAe,WAAW,iBAAkB,KAAM,EAAE,KAChH,GAAK,MAAM,QAAQ,UAAW,GAAM,OAAO,OAAQ,UAAW,AAAC,GAAQ,GAAM,OAAO,OAAO,QAAU,GACrG,GAAG,UAAY,GAAK,MAAM,SAAS,cAAe,GAAM,OAAO,OAAQ,QAAS,EAAG,KAAM,GAAI,AAAC,GAAQ,GAAM,OAAO,OAAO,MAAQ,SAAS,IAC3I,GAAG,WAAa,GAAK,MAAM,SAAS,eAAgB,GAAM,OAAO,OAAQ,SAAU,EAAG,KAAM,GAAI,AAAC,GAAQ,GAAM,OAAO,OAAO,OAAS,SAAS,IAC/I,GAAK,MAAM,QAAQ,2DACnB,GAAK,MAAM,SAAS,aAAc,GAAM,OAAO,OAAQ,aAAc,GAAM,EAAK,IAAM,AAAC,GAAQ,GAAM,OAAO,OAAO,WAAa,WAAW,IAC3I,GAAK,MAAM,SAAS,WAAY,GAAM,OAAO,OAAQ,WAAY,GAAM,EAAK,IAAM,AAAC,GAAQ,GAAM,OAAO,OAAO,SAAW,WAAW,IACrI,GAAK,MAAM,SAAS,YAAa,GAAM,OAAO,OAAQ,YAAa,EAAG,EAAK,IAAM,AAAC,GAAQ,GAAM,OAAO,OAAO,UAAY,WAAW,IACrI,GAAK,MAAM,SAAS,OAAQ,GAAM,OAAO,OAAQ,OAAQ,EAAG,GAAI,EAAG,AAAC,GAAQ,GAAM,OAAO,OAAO,KAAO,SAAS,IAChH,GAAK,MAAM,SAAS,aAAc,GAAM,OAAO,OAAQ,aAAc,GAAM,EAAK,IAAM,AAAC,GAAQ,GAAM,OAAO,OAAO,WAAa,WAAW,IAC3I,GAAK,MAAM,SAAS,MAAO,GAAM,OAAO,OAAQ,MAAO,EAAG,IAAK,EAAG,AAAC,GAAQ,GAAM,OAAO,OAAO,IAAM,SAAS,IAC9G,GAAK,MAAM,SAAS,WAAY,GAAM,OAAO,OAAQ,WAAY,EAAG,GAAI,EAAG,AAAC,GAAQ,GAAM,OAAO,OAAO,SAAW,SAAS,IAC5H,GAAK,MAAM,QAAQ,2DACnB,GAAK,MAAM,QAAQ,WAAY,GAAM,OAAO,OAAQ,WAAY,AAAC,GAAQ,GAAM,OAAO,OAAO,SAAW,GACxG,GAAK,MAAM,QAAQ,QAAS,GAAM,OAAO,OAAQ,QAAS,AAAC,GAAQ,GAAM,OAAO,OAAO,MAAQ,GAC/F,GAAK,MAAM,QAAQ,UAAW,GAAM,OAAO,OAAQ,UAAW,AAAC,GAAQ,GAAM,OAAO,OAAO,QAAU,GACrG,GAAK,MAAM,QAAQ,aAAc,GAAM,OAAO,OAAQ,aAAc,AAAC,GAAQ,GAAM,OAAO,OAAO,WAAa,GAC9G,GAAK,MAAM,QAAQ,cAAe,GAAM,OAAO,OAAQ,cAAe,AAAC,GAAQ,GAAM,OAAO,OAAO,YAAc,GACjH,GAAK,MAAM,QAAQ,WAAY,GAAM,OAAO,OAAQ,WAAY,AAAC,GAAQ,GAAM,OAAO,OAAO,SAAW,GAExG,GAAK,QAAU,GAAI,IAAK,SAAS,KAAM,GAAI,CAAE,IAAK,GAAG,SAAS,eAAe,WAAW,iBAAkB,KAAM,EAAE,KAClH,GAAK,QAAQ,QAAQ,UAAW,CAAC,MAAO,QAAS,OAAQ,WAAY,GAAM,OAAO,QAAS,AAAC,GAAQ,GAAM,OAAO,QAAU,GAC3H,GAAK,QAAQ,QAAQ,mBAAoB,GAAM,OAAQ,QAAS,AAAC,GAAQ,GAAM,OAAO,MAAQ,GAG9F,GAAK,QAAQ,QAAQ,iBAAkB,GAAI,aAC3C,GAAK,QAAQ,QAAQ,2DACrB,GAAK,QAAQ,SAAS,oBACtB,GAAK,QAAQ,SAAS,cAAe,GAAM,OAAO,KAAK,SAAU,WAAY,EAAG,GAAI,EAAG,AAAC,GAAQ,CAC9F,GAAM,OAAO,KAAK,SAAS,SAAW,SAAS,GAC/C,GAAM,OAAO,KAAK,cAAgB,SAAS,GAC3C,GAAM,OAAO,KAAK,SAAW,SAAS,KAExC,GAAK,QAAQ,SAAS,cAAe,GAAM,OAAO,KAAK,SAAU,aAAc,EAAG,GAAI,EAAG,AAAC,GAAQ,CAChG,GAAM,OAAO,KAAK,SAAS,WAAa,SAAS,GACjD,GAAM,OAAO,KAAK,QAAQ,WAAa,SAAS,GAChD,GAAM,OAAO,KAAK,IAAI,WAAa,SAAS,GAC5C,GAAM,OAAO,KAAK,WAAa,SAAS,KAE1C,GAAK,QAAQ,SAAS,iBAAkB,GAAM,OAAO,KAAK,SAAU,gBAAiB,EAAK,EAAK,IAAM,AAAC,GAAQ,CAC5G,GAAM,OAAO,KAAK,SAAS,cAAgB,WAAW,GACtD,GAAM,OAAO,KAAK,OAAO,cAAgB,WAAW,GACpD,GAAM,OAAO,KAAK,QAAQ,cAAgB,WAAW,GACrD,GAAM,OAAO,KAAK,cAAgB,WAAW,KAE/C,GAAK,QAAQ,SAAS,kBAAmB,GAAM,OAAO,KAAK,SAAU,iBAAkB,GAAK,EAAK,IAAM,AAAC,GAAQ,CAC9G,GAAM,OAAO,KAAK,SAAS,eAAiB,WAAW,GACvD,GAAM,OAAO,KAAK,eAAiB,WAAW,GAC9C,GAAM,OAAO,KAAK,eAAiB,WAAW,KAEhD,GAAK,QAAQ,SAAS,UAAW,GAAM,OAAO,KAAK,SAAU,eAAgB,GAAK,EAAK,IAAM,AAAC,GAAQ,CACpG,GAAM,OAAO,KAAK,SAAS,aAAe,WAAW,GACrD,GAAM,OAAO,KAAK,aAAe,WAAW,KAE9C,GAAK,QAAQ,QAAQ,qBAAsB,GAAM,OAAO,KAAK,SAAU,WAAY,AAAC,GAAQ,CAC1F,GAAM,OAAO,KAAK,SAAS,SAAW,EACtC,GAAM,OAAO,KAAK,SAAW,IAE/B,GAAK,QAAQ,QAAQ,2DACrB,GAAK,QAAQ,UAAU,wBAAyB,iBAAkB,IAAM,OACxE,GAAK,QAAQ,QAAQ,2DACrB,GAAK,QAAQ,SAAS,MAAO,OAE7B,GAAK,OAAS,GAAI,IAAK,SAAS,KAAM,GAAI,CAAE,IAAK,GAAG,SAAS,eAAe,WAAW,iBAAkB,KAAM,EAAE,KACjH,GAAK,OAAO,QAAQ,cAAe,GAAM,OAAO,KAAM,UAAW,AAAC,GAAQ,GAAM,OAAO,KAAK,QAAU,GACtG,GAAK,OAAO,QAAQ,YAAa,GAAM,OAAO,KAAK,KAAM,UAAW,AAAC,GAAQ,GAAM,OAAO,KAAK,KAAK,QAAU,GAC9G,GAAK,OAAO,QAAQ,YAAa,GAAM,OAAO,KAAK,KAAM,UAAW,AAAC,GAAQ,GAAM,OAAO,KAAK,KAAK,QAAU,GAC9G,GAAK,OAAO,QAAQ,mBAAoB,GAAM,OAAO,KAAK,YAAa,UAAW,AAAC,GAAQ,GAAM,OAAO,KAAK,IAAI,YAAc,GAG/H,GAAK,OAAO,QAAQ,eAAgB,GAAM,OAAO,KAAK,QAAS,UAAW,AAAC,GAAQ,GAAM,OAAO,KAAK,QAAQ,QAAU,GACvH,GAAK,OAAO,QAAQ,2DACpB,GAAK,OAAO,QAAQ,YAAa,GAAM,OAAO,KAAM,UAAW,AAAC,GAAQ,GAAM,OAAO,KAAK,QAAU,GACpG,GAAK,OAAO,QAAQ,YAAa,GAAM,OAAO,KAAM,UAAW,AAAC,GAAQ,GAAM,OAAO,KAAK,QAAU,GACpG,GAAK,OAAO,QAAQ,2DACpB,GAAK,OAAO,QAAQ,WAAY,GAAM,OAAO,QAAS,UAAW,AAAC,GAAQ,GAAM,OAAO,QAAQ,QAAU,GACzG,GAAK,OAAO,QAAQ,2DACpB,GAAK,OAAO,QAAQ,mBAAoB,GAAM,OAAO,OAAQ,UAAW,AAAC,GAAQ,GAAM,OAAO,OAAO,QAAU,GAC/G,GAAK,OAAO,QAAQ,2DACpB,GAAK,OAAO,QAAQ,eAAgB,GAAS,UAAW,AAAC,GAAQ,CAC/D,GAAQ,QAAU,EAClB,GAAQ,SAAW,OAGrB,SAAS,eAAe,cAAc,iBAAiB,QAAS,AAAC,GAAQ,GAAK,QAAQ,OAAO,IAC7F,SAAS,eAAe,YAAY,iBAAiB,QAAS,AAAC,GAAQ,GAAK,MAAM,OAAO,IACzF,SAAS,eAAe,cAAc,iBAAiB,QAAS,AAAC,GAAQ,GAAK,QAAQ,OAAO,IAC7F,SAAS,eAAe,YAAY,iBAAiB,QAAS,AAAC,GAAQ,GAAK,OAAO,OAAO,IAC1F,SAAS,eAAe,YAAY,iBAAiB,QAAS,IAAM,MACpE,SAAS,eAAe,QAAQ,iBAAiB,QAAS,IAAM,MAGlE,mBAA0B,EAAK,CAC7B,GAAM,GAAS,SAAS,eAAe,UACvC,EAAO,MAAQ,EAAI,OAAO,MAC1B,EAAO,OAAS,EAAI,OAAO,OAE3B,AADY,EAAO,WAAW,MAC1B,UAAU,EAAI,OAAQ,EAAG,EAAG,EAAI,OAAO,MAAO,EAAI,OAAO,OAAQ,EAAG,EAAG,EAAO,MAAO,EAAO,QAChG,KAAM,IAAM,KAAK,IAAI,EAAQ,GAG/B,oBAAsB,CAIpB,GAHA,GAAI,qBACJ,MACA,SAAS,eAAe,OAAO,UAAY,kBAAkB,GAAM,UAC/D,GAAG,eAAiB,CAAC,GAAG,UAAW,CACrC,GAAO,WACP,KAAM,IAAM,KAAK,IACjB,GAAM,GAAS,OAAO,KAAK,GAAM,QAAQ,OAAO,AAAC,GAAM,GAAM,OAAO,IACpE,GAAI,sBAAuB,GAE7B,GAAI,CAAC,GAAG,UAAW,CACjB,GAAO,gBACP,GAAM,GAAM,KAAM,IAAM,OAAO,IAC/B,AAAI,GAAO,EAAI,QAAU,GAAG,YAAY,KAAM,KAAW,GAE3D,GAAO,gBACP,SAAS,eAAe,UAAU,MAAM,QAAU,OAClD,SAAS,eAAe,QAAQ,MAAM,QAAU,QAChD,GAAI,iBAGN,OAAO,OAAS,IAChB,OAAO,SAAW", + "sourcesContent": ["import { log } from '../helpers';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as blazeface from './blazeface';\nimport * as facepipeline from './facepipeline';\nimport * as coords from './coords';\n\nexport class MediaPipeFaceMesh {\n facePipeline: any;\n config: any;\n\n constructor(blazeFace, blazeMeshModel, irisModel, config) {\n this.facePipeline = new facepipeline.Pipeline(blazeFace, blazeMeshModel, irisModel);\n this.config = config;\n }\n\n async estimateFaces(input, config): Promise<{ confidence, boxConfidence, faceConfidence, box, mesh, boxRaw, meshRaw, annotations, image }[]> {\n const predictions = await this.facePipeline.predict(input, config);\n const results: Array<{ confidence, boxConfidence, faceConfidence, box, mesh, boxRaw, meshRaw, annotations, image }> = [];\n for (const prediction of (predictions || [])) {\n if (prediction.isDisposedInternal) continue; // guard against disposed tensors on long running operations such as pause in middle of processing\n const mesh = prediction.coords ? prediction.coords.arraySync() : [];\n const meshRaw = mesh.map((pt) => [\n pt[0] / input.shape[2],\n pt[1] / input.shape[1],\n pt[2] / this.facePipeline.meshSize,\n ]);\n const annotations = {};\n if (mesh && mesh.length > 0) {\n for (const key of Object.keys(coords.MESH_ANNOTATIONS)) annotations[key] = coords.MESH_ANNOTATIONS[key].map((index) => mesh[index]);\n }\n const box = prediction.box ? [\n Math.max(0, prediction.box.startPoint[0]),\n Math.max(0, prediction.box.startPoint[1]),\n Math.min(input.shape[1], prediction.box.endPoint[0]) - Math.max(0, prediction.box.startPoint[0]),\n Math.min(input.shape[2], prediction.box.endPoint[1]) - Math.max(0, prediction.box.startPoint[1]),\n ] : 0;\n const boxRaw = prediction.box ? [\n prediction.box.startPoint[0] / input.shape[2],\n prediction.box.startPoint[1] / input.shape[1],\n (prediction.box.endPoint[0] - prediction.box.startPoint[0]) / input.shape[2],\n (prediction.box.endPoint[1] - prediction.box.startPoint[1]) / input.shape[1],\n ] : [];\n results.push({\n confidence: prediction.faceConfidence || prediction.boxConfidence || 0,\n boxConfidence: prediction.boxConfidence,\n faceConfidence: prediction.faceConfidence,\n box,\n boxRaw,\n mesh,\n meshRaw,\n annotations,\n image: prediction.image ? prediction.image.clone() : null,\n });\n if (prediction.coords) prediction.coords.dispose();\n if (prediction.image) prediction.image.dispose();\n }\n return results;\n }\n}\n\nlet faceModels = [null, null, null];\nexport async function load(config) {\n // @ts-ignore\n faceModels = await Promise.all([\n (!faceModels[0] && config.face.enabled) ? blazeface.load(config) : null,\n (!faceModels[1] && config.face.mesh.enabled) ? tf.loadGraphModel(config.face.mesh.modelPath, { fromTFHub: config.face.mesh.modelPath.includes('tfhub.dev') }) : null,\n (!faceModels[2] && config.face.iris.enabled) ? tf.loadGraphModel(config.face.iris.modelPath, { fromTFHub: config.face.iris.modelPath.includes('tfhub.dev') }) : null,\n ]);\n const faceMesh = new MediaPipeFaceMesh(faceModels[0], faceModels[1], faceModels[2], config);\n if (config.face.mesh.enabled && config.debug) log(`load model: ${config.face.mesh.modelPath.match(/\\/(.*)\\./)[1]}`);\n if (config.face.iris.enabled && config.debug) log(`load model: ${config.face.iris.modelPath.match(/\\/(.*)\\./)[1]}`);\n return faceMesh;\n}\n\nexports.triangulation = coords.TRI468;\n", "export const partNames = [\n 'nose', 'leftEye', 'rightEye', 'leftEar', 'rightEar', 'leftShoulder',\n 'rightShoulder', 'leftElbow', 'rightElbow', 'leftWrist', 'rightWrist',\n 'leftHip', 'rightHip', 'leftKnee', 'rightKnee', 'leftAnkle', 'rightAnkle',\n];\n\nexport const NUM_KEYPOINTS = exports.partNames.length; // 17 keypoints\n\nexport const partIds = exports.partNames.reduce((result, jointName, i) => {\n result[jointName] = i;\n return result;\n}, {});\n\nconst connectedPartNames = [\n ['leftHip', 'leftShoulder'], ['leftElbow', 'leftShoulder'],\n ['leftElbow', 'leftWrist'], ['leftHip', 'leftKnee'],\n ['leftKnee', 'leftAnkle'], ['rightHip', 'rightShoulder'],\n ['rightElbow', 'rightShoulder'], ['rightElbow', 'rightWrist'],\n ['rightHip', 'rightKnee'], ['rightKnee', 'rightAnkle'],\n ['leftShoulder', 'rightShoulder'], ['leftHip', 'rightHip'],\n];\nexport const connectedPartIndices = connectedPartNames.map(([jointNameA, jointNameB]) => ([partIds[jointNameA], partIds[jointNameB]]));\n\nexport const poseChain = [\n ['nose', 'leftEye'], ['leftEye', 'leftEar'], ['nose', 'rightEye'],\n ['rightEye', 'rightEar'], ['nose', 'leftShoulder'],\n ['leftShoulder', 'leftElbow'], ['leftElbow', 'leftWrist'],\n ['leftShoulder', 'leftHip'], ['leftHip', 'leftKnee'],\n ['leftKnee', 'leftAnkle'], ['nose', 'rightShoulder'],\n ['rightShoulder', 'rightElbow'], ['rightElbow', 'rightWrist'],\n ['rightShoulder', 'rightHip'], ['rightHip', 'rightKnee'],\n ['rightKnee', 'rightAnkle'],\n];\n\nexport const partChannels = [\n 'left_face',\n 'right_face',\n 'right_upper_leg_front',\n 'right_lower_leg_back',\n 'right_upper_leg_back',\n 'left_lower_leg_front',\n 'left_upper_leg_front',\n 'left_upper_leg_back',\n 'left_lower_leg_back',\n 'right_feet',\n 'right_lower_leg_front',\n 'left_feet',\n 'torso_front',\n 'torso_back',\n 'right_upper_arm_front',\n 'right_upper_arm_back',\n 'right_lower_arm_back',\n 'left_lower_arm_front',\n 'left_upper_arm_front',\n 'left_upper_arm_back',\n 'left_lower_arm_back',\n 'right_hand',\n 'right_lower_arm_front',\n 'left_hand',\n];\n", "// helper function: wrapper around console output\nexport function log(...msg) {\n const dt = new Date();\n const ts = `${dt.getHours().toString().padStart(2, '0')}:${dt.getMinutes().toString().padStart(2, '0')}:${dt.getSeconds().toString().padStart(2, '0')}.${dt.getMilliseconds().toString().padStart(3, '0')}`;\n // eslint-disable-next-line no-console\n if (msg) console.log(ts, 'Human:', ...msg);\n}\n\n// helper function: gets elapsed time on both browser and nodejs\nexport const now = () => {\n if (typeof performance !== 'undefined') return performance.now();\n return parseInt((Number(process.hrtime.bigint()) / 1000 / 1000).toString());\n};\n\n// helper function: perform deep merge of multiple objects so it allows full inheriance with overrides\nexport function mergeDeep(...objects) {\n const isObject = (obj) => obj && typeof obj === 'object';\n return objects.reduce((prev, obj) => {\n Object.keys(obj || {}).forEach((key) => {\n const pVal = prev[key];\n const oVal = obj[key];\n if (Array.isArray(pVal) && Array.isArray(oVal)) prev[key] = pVal.concat(...oVal);\n else if (isObject(pVal) && isObject(oVal)) prev[key] = mergeDeep(pVal, oVal);\n else prev[key] = oVal;\n });\n return prev;\n }, {});\n}\n", "export function info(): { platform: string, agent: string } {\n let platform;\n let agent;\n if (typeof navigator !== 'undefined') {\n const raw = navigator.userAgent.match(/\\(([^()]+)\\)/g);\n if (raw && raw[0]) {\n // @ts-ignore\n platform = raw[0].match(/\\(([^()]+)\\)/g)[0].replace(/\\(|\\)/g, '');\n agent = navigator.userAgent.replace(raw[0], '');\n if (platform[1]) agent = agent.replace(raw[1], '');\n agent = agent.replace(/ /g, ' ');\n }\n } else if (typeof process !== 'undefined') {\n platform = `${process.platform} ${process.arch}`;\n agent = `NodeJS ${process.version}`;\n }\n return { platform, agent };\n}\n", "", "// A port of an algorithm by Johannes Baag\u00F8e , 2010\n// http://baagoe.com/en/RandomMusings/javascript/\n// https://github.com/nquinlan/better-random-numbers-for-javascript-mirror\n// Original work is under MIT license -\n\n// Copyright (C) 2010 by Johannes Baag\u00F8e \n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n// \n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n// \n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n\n\n(function(global, module, define) {\n\nfunction Alea(seed) {\n var me = this, mash = Mash();\n\n me.next = function() {\n var t = 2091639 * me.s0 + me.c * 2.3283064365386963e-10; // 2^-32\n me.s0 = me.s1;\n me.s1 = me.s2;\n return me.s2 = t - (me.c = t | 0);\n };\n\n // Apply the seeding algorithm from Baagoe.\n me.c = 1;\n me.s0 = mash(' ');\n me.s1 = mash(' ');\n me.s2 = mash(' ');\n me.s0 -= mash(seed);\n if (me.s0 < 0) { me.s0 += 1; }\n me.s1 -= mash(seed);\n if (me.s1 < 0) { me.s1 += 1; }\n me.s2 -= mash(seed);\n if (me.s2 < 0) { me.s2 += 1; }\n mash = null;\n}\n\nfunction copy(f, t) {\n t.c = f.c;\n t.s0 = f.s0;\n t.s1 = f.s1;\n t.s2 = f.s2;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new Alea(seed),\n state = opts && opts.state,\n prng = xg.next;\n prng.int32 = function() { return (xg.next() * 0x100000000) | 0; }\n prng.double = function() {\n return prng() + (prng() * 0x200000 | 0) * 1.1102230246251565e-16; // 2^-53\n };\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nfunction Mash() {\n var n = 0xefc8249d;\n\n var mash = function(data) {\n data = data.toString();\n for (var i = 0; i < data.length; i++) {\n n += data.charCodeAt(i);\n var h = 0.02519603282416938 * n;\n n = h >>> 0;\n h -= n;\n h *= n;\n n = h >>> 0;\n h -= n;\n n += h * 0x100000000; // 2^32\n }\n return (n >>> 0) * 2.3283064365386963e-10; // 2^-32\n };\n\n return mash;\n}\n\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.alea = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xor128\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n\n // Set up generator function.\n me.next = function() {\n var t = me.x ^ (me.x << 11);\n me.x = me.y;\n me.y = me.z;\n me.z = me.w;\n return me.w ^= (me.w >>> 19) ^ t ^ (t >>> 8);\n };\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor128 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorwow\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var t = (me.x ^ (me.x >>> 2));\n me.x = me.y; me.y = me.z; me.z = me.w; me.w = me.v;\n return (me.d = (me.d + 362437 | 0)) +\n (me.v = (me.v ^ (me.v << 4)) ^ (t ^ (t << 1))) | 0;\n };\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n me.v = 0;\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n if (k == strseed.length) {\n me.d = me.x << 10 ^ me.x >>> 4;\n }\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n t.v = f.v;\n t.d = f.d;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorwow = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorshift7\" algorithm by\n// Fran\u00E7ois Panneton and Pierre L'ecuyer:\n// \"On the Xorgshift Random Number Generators\"\n// http://saluc.engr.uconn.edu/refs/crypto/rng/panneton05onthexorshift.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n // Update xor generator.\n var X = me.x, i = me.i, t, v, w;\n t = X[i]; t ^= (t >>> 7); v = t ^ (t << 24);\n t = X[(i + 1) & 7]; v ^= t ^ (t >>> 10);\n t = X[(i + 3) & 7]; v ^= t ^ (t >>> 3);\n t = X[(i + 4) & 7]; v ^= t ^ (t << 7);\n t = X[(i + 7) & 7]; t = t ^ (t << 13); v ^= t ^ (t << 9);\n X[i] = v;\n me.i = (i + 1) & 7;\n return v;\n };\n\n function init(me, seed) {\n var j, w, X = [];\n\n if (seed === (seed | 0)) {\n // Seed state array using a 32-bit integer.\n w = X[0] = seed;\n } else {\n // Seed state using a string.\n seed = '' + seed;\n for (j = 0; j < seed.length; ++j) {\n X[j & 7] = (X[j & 7] << 15) ^\n (seed.charCodeAt(j) + X[(j + 1) & 7] << 13);\n }\n }\n // Enforce an array length of 8, not all zeroes.\n while (X.length < 8) X.push(0);\n for (j = 0; j < 8 && X[j] === 0; ++j);\n if (j == 8) w = X[7] = -1; else w = X[j];\n\n me.x = X;\n me.i = 0;\n\n // Discard an initial 256 values.\n for (j = 256; j > 0; --j) {\n me.next();\n }\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.x = f.x.slice();\n t.i = f.i;\n return t;\n}\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.x) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorshift7 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n", "// A Javascript implementaion of Richard Brent's Xorgens xor4096 algorithm.\n//\n// This fast non-cryptographic random number generator is designed for\n// use in Monte-Carlo algorithms. It combines a long-period xorshift\n// generator with a Weyl generator, and it passes all common batteries\n// of stasticial tests for randomness while consuming only a few nanoseconds\n// for each prng generated. For background on the generator, see Brent's\n// paper: \"Some long-period random number generators using shifts and xors.\"\n// http://arxiv.org/pdf/1004.3115v1.pdf\n//\n// Usage:\n//\n// var xor4096 = require('xor4096');\n// random = xor4096(1); // Seed with int32 or string.\n// assert.equal(random(), 0.1520436450538547); // (0, 1) range, 53 bits.\n// assert.equal(random.int32(), 1806534897); // signed int32, 32 bits.\n//\n// For nonzero numeric keys, this impelementation provides a sequence\n// identical to that by Brent's xorgens 3 implementaion in C. This\n// implementation also provides for initalizing the generator with\n// string seeds, or for saving and restoring the state of the generator.\n//\n// On Chrome, this prng benchmarks about 2.1 times slower than\n// Javascript's built-in Math.random().\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n var w = me.w,\n X = me.X, i = me.i, t, v;\n // Update Weyl generator.\n me.w = w = (w + 0x61c88647) | 0;\n // Update xor generator.\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n // Update Xor generator array state.\n v = X[i] = v ^ t;\n me.i = i;\n // Result is the combination.\n return (v + (w ^ (w >>> 16))) | 0;\n };\n\n function init(me, seed) {\n var t, v, i, j, w, X = [], limit = 128;\n if (seed === (seed | 0)) {\n // Numeric seeds initialize v, which is used to generates X.\n v = seed;\n seed = null;\n } else {\n // String seeds are mixed into v and X one character at a time.\n seed = seed + '\\0';\n v = 0;\n limit = Math.max(limit, seed.length);\n }\n // Initialize circular array and weyl value.\n for (i = 0, j = -32; j < limit; ++j) {\n // Put the unicode characters into the array, and shuffle them.\n if (seed) v ^= seed.charCodeAt((j + 32) % seed.length);\n // After 32 shuffles, take v as the starting w value.\n if (j === 0) w = v;\n v ^= v << 10;\n v ^= v >>> 15;\n v ^= v << 4;\n v ^= v >>> 13;\n if (j >= 0) {\n w = (w + 0x61c88647) | 0; // Weyl.\n t = (X[j & 127] ^= (v + w)); // Combine xor and weyl to init array.\n i = (0 == t) ? i + 1 : 0; // Count zeroes.\n }\n }\n // We have detected all zeroes; make the key nonzero.\n if (i >= 128) {\n X[(seed && seed.length || 0) & 127] = -1;\n }\n // Run the generator 512 times to further mix the state before using it.\n // Factoring this as a function slows the main generator, so it is just\n // unrolled here. The weyl generator is not advanced while warming up.\n i = 127;\n for (j = 4 * 128; j > 0; --j) {\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n X[i] = v ^ t;\n }\n // Storing state as object members is faster than using closure variables.\n me.w = w;\n me.X = X;\n me.i = i;\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.i = f.i;\n t.w = f.w;\n t.X = f.X.slice();\n return t;\n};\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.X) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor4096 = impl;\n}\n\n})(\n this, // window object or global\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n", "// A Javascript implementaion of the \"Tyche-i\" prng algorithm by\n// Samuel Neves and Filipe Araujo.\n// See https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var b = me.b, c = me.c, d = me.d, a = me.a;\n b = (b << 25) ^ (b >>> 7) ^ c;\n c = (c - d) | 0;\n d = (d << 24) ^ (d >>> 8) ^ a;\n a = (a - b) | 0;\n me.b = b = (b << 20) ^ (b >>> 12) ^ c;\n me.c = c = (c - d) | 0;\n me.d = (d << 16) ^ (c >>> 16) ^ a;\n return me.a = (a - b) | 0;\n };\n\n /* The following is non-inverted tyche, which has better internal\n * bit diffusion, but which is about 25% slower than tyche-i in JS.\n me.next = function() {\n var a = me.a, b = me.b, c = me.c, d = me.d;\n a = (me.a + me.b | 0) >>> 0;\n d = me.d ^ a; d = d << 16 ^ d >>> 16;\n c = me.c + d | 0;\n b = me.b ^ c; b = b << 12 ^ d >>> 20;\n me.a = a = a + b | 0;\n d = d ^ a; me.d = d = d << 8 ^ d >>> 24;\n me.c = c = c + d | 0;\n b = b ^ c;\n return me.b = (b << 7 ^ b >>> 25);\n }\n */\n\n me.a = 0;\n me.b = 0;\n me.c = 2654435769 | 0;\n me.d = 1367130551;\n\n if (seed === Math.floor(seed)) {\n // Integer seed.\n me.a = (seed / 0x100000000) | 0;\n me.b = seed | 0;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 20; k++) {\n me.b ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.a = f.a;\n t.b = f.b;\n t.c = f.c;\n t.d = f.d;\n return t;\n};\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.tychei = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "", "/*\nCopyright 2014 David Bau.\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n*/\n\n(function (pool, math) {\n//\n// The following constants are related to IEEE 754 limits.\n//\nvar global = this,\n width = 256, // each RC4 output is 0 <= x < 256\n chunks = 6, // at least six RC4 outputs for each double\n digits = 52, // there are 52 significant digits in a double\n rngname = 'random', // rngname: name for Math.random and Math.seedrandom\n startdenom = math.pow(width, chunks),\n significance = math.pow(2, digits),\n overflow = significance * 2,\n mask = width - 1,\n nodecrypto; // node.js crypto module, initialized at the bottom.\n\n//\n// seedrandom()\n// This is the seedrandom function described above.\n//\nfunction seedrandom(seed, options, callback) {\n var key = [];\n options = (options == true) ? { entropy: true } : (options || {});\n\n // Flatten the seed string or build one from local entropy if needed.\n var shortseed = mixkey(flatten(\n options.entropy ? [seed, tostring(pool)] :\n (seed == null) ? autoseed() : seed, 3), key);\n\n // Use the seed to initialize an ARC4 generator.\n var arc4 = new ARC4(key);\n\n // This function returns a random double in [0, 1) that contains\n // randomness in every bit of the mantissa of the IEEE 754 value.\n var prng = function() {\n var n = arc4.g(chunks), // Start with a numerator n < 2 ^ 48\n d = startdenom, // and denominator d = 2 ^ 48.\n x = 0; // and no 'extra last byte'.\n while (n < significance) { // Fill up all significant digits by\n n = (n + x) * width; // shifting numerator and\n d *= width; // denominator and generating a\n x = arc4.g(1); // new least-significant-byte.\n }\n while (n >= overflow) { // To avoid rounding up, before adding\n n /= 2; // last byte, shift everything\n d /= 2; // right using integer math until\n x >>>= 1; // we have exactly the desired bits.\n }\n return (n + x) / d; // Form the number within [0, 1).\n };\n\n prng.int32 = function() { return arc4.g(4) | 0; }\n prng.quick = function() { return arc4.g(4) / 0x100000000; }\n prng.double = prng;\n\n // Mix the randomness into accumulated entropy.\n mixkey(tostring(arc4.S), pool);\n\n // Calling convention: what to return as a function of prng, seed, is_math.\n return (options.pass || callback ||\n function(prng, seed, is_math_call, state) {\n if (state) {\n // Load the arc4 state from the given state if it has an S array.\n if (state.S) { copy(state, arc4); }\n // Only provide the .state method if requested via options.state.\n prng.state = function() { return copy(arc4, {}); }\n }\n\n // If called as a method of Math (Math.seedrandom()), mutate\n // Math.random because that is how seedrandom.js has worked since v1.0.\n if (is_math_call) { math[rngname] = prng; return seed; }\n\n // Otherwise, it is a newer calling convention, so return the\n // prng directly.\n else return prng;\n })(\n prng,\n shortseed,\n 'global' in options ? options.global : (this == math),\n options.state);\n}\nmath['seed' + rngname] = seedrandom;\n\n//\n// ARC4\n//\n// An ARC4 implementation. The constructor takes a key in the form of\n// an array of at most (width) integers that should be 0 <= x < (width).\n//\n// The g(count) method returns a pseudorandom integer that concatenates\n// the next (count) outputs from ARC4. Its return value is a number x\n// that is in the range 0 <= x < (width ^ count).\n//\nfunction ARC4(key) {\n var t, keylen = key.length,\n me = this, i = 0, j = me.i = me.j = 0, s = me.S = [];\n\n // The empty key [] is treated as [0].\n if (!keylen) { key = [keylen++]; }\n\n // Set up S using the standard key scheduling algorithm.\n while (i < width) {\n s[i] = i++;\n }\n for (i = 0; i < width; i++) {\n s[i] = s[j = mask & (j + key[i % keylen] + (t = s[i]))];\n s[j] = t;\n }\n\n // The \"g\" method returns the next (count) outputs as one number.\n (me.g = function(count) {\n // Using instance members instead of closure state nearly doubles speed.\n var t, r = 0,\n i = me.i, j = me.j, s = me.S;\n while (count--) {\n t = s[i = mask & (i + 1)];\n r = r * width + s[mask & ((s[i] = s[j = mask & (j + t)]) + (s[j] = t))];\n }\n me.i = i; me.j = j;\n return r;\n // For robust unpredictability, the function call below automatically\n // discards an initial batch of values. This is called RC4-drop[256].\n // See http://google.com/search?q=rsa+fluhrer+response&btnI\n })(width);\n}\n\n//\n// copy()\n// Copies internal state of ARC4 to or from a plain object.\n//\nfunction copy(f, t) {\n t.i = f.i;\n t.j = f.j;\n t.S = f.S.slice();\n return t;\n};\n\n//\n// flatten()\n// Converts an object tree to nested arrays of strings.\n//\nfunction flatten(obj, depth) {\n var result = [], typ = (typeof obj), prop;\n if (depth && typ == 'object') {\n for (prop in obj) {\n try { result.push(flatten(obj[prop], depth - 1)); } catch (e) {}\n }\n }\n return (result.length ? result : typ == 'string' ? obj : obj + '\\0');\n}\n\n//\n// mixkey()\n// Mixes a string seed into a key that is an array of integers, and\n// returns a shortened string seed that is equivalent to the result key.\n//\nfunction mixkey(seed, key) {\n var stringseed = seed + '', smear, j = 0;\n while (j < stringseed.length) {\n key[mask & j] =\n mask & ((smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++));\n }\n return tostring(key);\n}\n\n//\n// autoseed()\n// Returns an object for autoseeding, using window.crypto and Node crypto\n// module if available.\n//\nfunction autoseed() {\n try {\n var out;\n if (nodecrypto && (out = nodecrypto.randomBytes)) {\n // The use of 'out' to remember randomBytes makes tight minified code.\n out = out(width);\n } else {\n out = new Uint8Array(width);\n (global.crypto || global.msCrypto).getRandomValues(out);\n }\n return tostring(out);\n } catch (e) {\n var browser = global.navigator,\n plugins = browser && browser.plugins;\n return [+new Date, global, plugins, global.screen, tostring(pool)];\n }\n}\n\n//\n// tostring()\n// Converts an array of charcodes to a string\n//\nfunction tostring(a) {\n return String.fromCharCode.apply(0, a);\n}\n\n//\n// When seedrandom.js is loaded, we immediately mix a few bits\n// from the built-in RNG into the entropy pool. Because we do\n// not want to interfere with deterministic PRNG state later,\n// seedrandom will not call math.random on its own again after\n// initialization.\n//\nmixkey(math.random(), pool);\n\n//\n// Nodejs and AMD support: export the implementation as a module using\n// either convention.\n//\nif ((typeof module) == 'object' && module.exports) {\n module.exports = seedrandom;\n // When in node.js, try using crypto package for autoseeding.\n try {\n nodecrypto = require('crypto');\n } catch (ex) {}\n} else if ((typeof define) == 'function' && define.amd) {\n define(function() { return seedrandom; });\n}\n\n// End anonymous scope, and pass initial values.\n})(\n [], // pool: entropy pool starts empty\n Math // math: package containing random, pow, and seedrandom\n);\n", "// A library of seedable RNGs implemented in Javascript.\n//\n// Usage:\n//\n// var seedrandom = require('seedrandom');\n// var random = seedrandom(1); // or any seed.\n// var x = random(); // 0 <= x < 1. Every bit is random.\n// var x = random.quick(); // 0 <= x < 1. 32 bits of randomness.\n\n// alea, a 53-bit multiply-with-carry generator by Johannes Baag\u00F8e.\n// Period: ~2^116\n// Reported to pass all BigCrush tests.\nvar alea = require('./lib/alea');\n\n// xor128, a pure xor-shift generator by George Marsaglia.\n// Period: 2^128-1.\n// Reported to fail: MatrixRank and LinearComp.\nvar xor128 = require('./lib/xor128');\n\n// xorwow, George Marsaglia's 160-bit xor-shift combined plus weyl.\n// Period: 2^192-2^32\n// Reported to fail: CollisionOver, SimpPoker, and LinearComp.\nvar xorwow = require('./lib/xorwow');\n\n// xorshift7, by Fran\u00E7ois Panneton and Pierre L'ecuyer, takes\n// a different approach: it adds robustness by allowing more shifts\n// than Marsaglia's original three. It is a 7-shift generator\n// with 256 bits, that passes BigCrush with no systmatic failures.\n// Period 2^256-1.\n// No systematic BigCrush failures reported.\nvar xorshift7 = require('./lib/xorshift7');\n\n// xor4096, by Richard Brent, is a 4096-bit xor-shift with a\n// very long period that also adds a Weyl generator. It also passes\n// BigCrush with no systematic failures. Its long period may\n// be useful if you have many generators and need to avoid\n// collisions.\n// Period: 2^4128-2^32.\n// No systematic BigCrush failures reported.\nvar xor4096 = require('./lib/xor4096');\n\n// Tyche-i, by Samuel Neves and Filipe Araujo, is a bit-shifting random\n// number generator derived from ChaCha, a modern stream cipher.\n// https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n// Period: ~2^127\n// No systematic BigCrush failures reported.\nvar tychei = require('./lib/tychei');\n\n// The original ARC4-based prng included in this library.\n// Period: ~2^1600\nvar sr = require('./seedrandom');\n\nsr.alea = alea;\nsr.xor128 = xor128;\nsr.xorwow = xorwow;\nsr.xorshift7 = xorshift7;\nsr.xor4096 = xor4096;\nsr.tychei = tychei;\n\nmodule.exports = sr;\n", "", "", "", "\nvar WasmBackendModuleThreadedSimd = (function() {\n var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined;\n if (typeof __filename !== 'undefined') _scriptDir = _scriptDir || __filename;\n return (\nfunction(WasmBackendModuleThreadedSimd) {\n WasmBackendModuleThreadedSimd = WasmBackendModuleThreadedSimd || {};\n\nfunction GROWABLE_HEAP_I8(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAP8}function GROWABLE_HEAP_U8(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAPU8}function GROWABLE_HEAP_I32(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAP32}function GROWABLE_HEAP_U32(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAPU32}function GROWABLE_HEAP_F64(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAPF64}var Module=typeof WasmBackendModuleThreadedSimd!==\"undefined\"?WasmBackendModuleThreadedSimd:{};var readyPromiseResolve,readyPromiseReject;Module[\"ready\"]=new Promise(function(resolve,reject){readyPromiseResolve=resolve;readyPromiseReject=reject});var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var arguments_=[];var thisProgram=\"./this.program\";var quit_=function(status,toThrow){throw toThrow};var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;ENVIRONMENT_IS_WEB=typeof window===\"object\";ENVIRONMENT_IS_WORKER=typeof importScripts===\"function\";ENVIRONMENT_IS_NODE=typeof process===\"object\"&&typeof process.versions===\"object\"&&typeof process.versions.node===\"string\";ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var ENVIRONMENT_IS_PTHREAD=Module[\"ENVIRONMENT_IS_PTHREAD\"]||false;if(ENVIRONMENT_IS_PTHREAD){buffer=Module[\"buffer\"]}var scriptDirectory=\"\";function locateFile(path){if(Module[\"locateFile\"]){return Module[\"locateFile\"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;var nodeFS;var nodePath;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require(\"path\").dirname(scriptDirectory)+\"/\"}else{scriptDirectory=__dirname+\"/\"}read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require(\"fs\");if(!nodePath)nodePath=require(\"path\");filename=nodePath[\"normalize\"](filename);return nodeFS[\"readFileSync\"](filename,binary?null:\"utf8\")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};if(process[\"argv\"].length>1){thisProgram=process[\"argv\"][1].replace(/\\\\/g,\"/\")}arguments_=process[\"argv\"].slice(2);process[\"on\"](\"uncaughtException\",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process[\"on\"](\"unhandledRejection\",abort);quit_=function(status){process[\"exit\"](status)};Module[\"inspect\"]=function(){return\"[Emscripten Module object]\"};var nodeWorkerThreads;try{nodeWorkerThreads=require(\"worker_threads\")}catch(e){console.error('The \"worker_threads\" module is not supported in this node.js build - perhaps a newer version is needed?');throw e}global.Worker=nodeWorkerThreads.Worker}else if(ENVIRONMENT_IS_SHELL){if(typeof read!=\"undefined\"){read_=function shell_read(f){return read(f)}}readBinary=function readBinary(f){var data;if(typeof readbuffer===\"function\"){return new Uint8Array(readbuffer(f))}data=read(f,\"binary\");assert(typeof data===\"object\");return data};if(typeof scriptArgs!=\"undefined\"){arguments_=scriptArgs}else if(typeof arguments!=\"undefined\"){arguments_=arguments}if(typeof quit===\"function\"){quit_=function(status){quit(status)}}if(typeof print!==\"undefined\"){if(typeof console===\"undefined\")console={};console.log=print;console.warn=console.error=typeof printErr!==\"undefined\"?printErr:print}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!==\"undefined\"&&document.currentScript){scriptDirectory=document.currentScript.src}if(typeof _scriptDir !== \"undefined\" && _scriptDir){scriptDirectory=_scriptDir}if(scriptDirectory.indexOf(\"blob:\")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf(\"/\")+1)}else{scriptDirectory=\"\"}if(ENVIRONMENT_IS_NODE){read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require(\"fs\");if(!nodePath)nodePath=require(\"path\");filename=nodePath[\"normalize\"](filename);return nodeFS[\"readFileSync\"](filename,binary?null:\"utf8\")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret}}else{read_=function(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=function(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.responseType=\"arraybuffer\";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=function(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,true);xhr.responseType=\"arraybuffer\";xhr.onload=function(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=function(title){document.title=title}}else{}if(ENVIRONMENT_IS_NODE){if(typeof performance===\"undefined\"){global.performance=require(\"perf_hooks\").performance}}var out=Module[\"print\"]||console.log.bind(console);var err=Module[\"printErr\"]||console.warn.bind(console);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=null;if(Module[\"arguments\"])arguments_=Module[\"arguments\"];if(Module[\"thisProgram\"])thisProgram=Module[\"thisProgram\"];if(Module[\"quit\"])quit_=Module[\"quit\"];var Atomics_load=Atomics.load;var Atomics_store=Atomics.store;var Atomics_compareExchange=Atomics.compareExchange;var wasmBinary;if(Module[\"wasmBinary\"])wasmBinary=Module[\"wasmBinary\"];var noExitRuntime=Module[\"noExitRuntime\"]||true;if(typeof WebAssembly!==\"object\"){abort(\"no native wasm support detected\")}var wasmMemory;var wasmModule;var ABORT=false;var EXITSTATUS;function assert(condition,text){if(!condition){abort(\"Assertion failed: \"+text)}}function getCFunc(ident){var func=Module[\"_\"+ident];assert(func,\"Cannot call unknown function \"+ident+\", make sure it is exported\");return func}function ccall(ident,returnType,argTypes,args,opts){var toC={\"string\":function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){var len=(str.length<<2)+1;ret=stackAlloc(len);stringToUTF8(str,ret,len)}return ret},\"array\":function(arr){var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType===\"string\")return UTF8ToString(ret);if(returnType===\"boolean\")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i=endIdx)){var u0=heap[idx++];if(!u0)return str;if(!(u0&128)){str+=String.fromCharCode(u0);continue}var u1=heap[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}var u2=heap[idx++]&63;if((u0&240)==224){u0=(u0&15)<<12|u1<<6|u2}else{u0=(u0&7)<<18|u1<<12|u2<<6|heap[idx++]&63}if(u0<65536){str+=String.fromCharCode(u0)}else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(GROWABLE_HEAP_U8(),ptr,maxBytesToRead):\"\"}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,GROWABLE_HEAP_U8(),outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}function writeArrayToMemory(array,buffer){GROWABLE_HEAP_I8().set(array,buffer)}function alignUp(x,multiple){if(x%multiple>0){x+=multiple-x%multiple}return x}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module[\"HEAP8\"]=HEAP8=new Int8Array(buf);Module[\"HEAP16\"]=HEAP16=new Int16Array(buf);Module[\"HEAP32\"]=HEAP32=new Int32Array(buf);Module[\"HEAPU8\"]=HEAPU8=new Uint8Array(buf);Module[\"HEAPU16\"]=HEAPU16=new Uint16Array(buf);Module[\"HEAPU32\"]=HEAPU32=new Uint32Array(buf);Module[\"HEAPF32\"]=HEAPF32=new Float32Array(buf);Module[\"HEAPF64\"]=HEAPF64=new Float64Array(buf)}var INITIAL_MEMORY=Module[\"INITIAL_MEMORY\"]||16777216;if(ENVIRONMENT_IS_PTHREAD){wasmMemory=Module[\"wasmMemory\"];buffer=Module[\"buffer\"]}else{if(Module[\"wasmMemory\"]){wasmMemory=Module[\"wasmMemory\"]}else{wasmMemory=new WebAssembly.Memory({\"initial\":INITIAL_MEMORY/65536,\"maximum\":2147483648/65536,\"shared\":true});if(!(wasmMemory.buffer instanceof SharedArrayBuffer)){err(\"requested a shared WebAssembly.Memory but the returned buffer is not a SharedArrayBuffer, indicating that while the browser has SharedArrayBuffer it does not have WebAssembly threads support - you may need to set a flag\");if(ENVIRONMENT_IS_NODE){console.log(\"(on node you may need: --experimental-wasm-threads --experimental-wasm-bulk-memory and also use a recent version)\")}throw Error(\"bad memory\")}}}if(wasmMemory){buffer=wasmMemory.buffer}INITIAL_MEMORY=buffer.byteLength;updateGlobalBufferAndViews(buffer);var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=false;if(!ENVIRONMENT_IS_PTHREAD)__ATINIT__.push({func:function(){___wasm_call_ctors()}});if(ENVIRONMENT_IS_PTHREAD)runtimeInitialized=true;function preRun(){if(ENVIRONMENT_IS_PTHREAD)return;if(Module[\"preRun\"]){if(typeof Module[\"preRun\"]==\"function\")Module[\"preRun\"]=[Module[\"preRun\"]];while(Module[\"preRun\"].length){addOnPreRun(Module[\"preRun\"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function preMain(){if(ENVIRONMENT_IS_PTHREAD)return;callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){if(ENVIRONMENT_IS_PTHREAD)return;runtimeExited=true}function postRun(){if(ENVIRONMENT_IS_PTHREAD)return;if(Module[\"postRun\"]){if(typeof Module[\"postRun\"]==\"function\")Module[\"postRun\"]=[Module[\"postRun\"]];while(Module[\"postRun\"].length){addOnPostRun(Module[\"postRun\"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){assert(!ENVIRONMENT_IS_PTHREAD,\"addRunDependency cannot be used in a pthread worker\");runDependencies++;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module[\"preloadedImages\"]={};Module[\"preloadedAudios\"]={};function abort(what){if(Module[\"onAbort\"]){Module[\"onAbort\"](what)}if(ENVIRONMENT_IS_PTHREAD)console.error(\"Pthread aborting at \"+(new Error).stack);what+=\"\";err(what);ABORT=true;EXITSTATUS=1;what=\"abort(\"+what+\"). Build with -s ASSERTIONS=1 for more info.\";var e=new WebAssembly.RuntimeError(what);readyPromiseReject(e);throw e}function hasPrefix(str,prefix){return String.prototype.startsWith?str.startsWith(prefix):str.indexOf(prefix)===0}var dataURIPrefix=\"data:application/octet-stream;base64,\";function isDataURI(filename){return hasPrefix(filename,dataURIPrefix)}var fileURIPrefix=\"file://\";function isFileURI(filename){return hasPrefix(filename,fileURIPrefix)}var wasmBinaryFile=\"tfjs-backend-wasm-threaded-simd.wasm\";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}else{throw\"both async and sync fetching of the wasm failed\"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch===\"function\"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){if(!response[\"ok\"]){throw\"failed to load wasm binary file at '\"+wasmBinaryFile+\"'\"}return response[\"arrayBuffer\"]()}).catch(function(){return getBinary(wasmBinaryFile)})}else{if(readAsync){return new Promise(function(resolve,reject){readAsync(wasmBinaryFile,function(response){resolve(new Uint8Array(response))},reject)})}}}return Promise.resolve().then(function(){return getBinary(wasmBinaryFile)})}function createWasm(){var info={\"a\":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module[\"asm\"]=exports;wasmTable=Module[\"asm\"][\"F\"];wasmModule=module;if(!ENVIRONMENT_IS_PTHREAD){var numWorkersToLoad=PThread.unusedWorkers.length;PThread.unusedWorkers.forEach(function(w){PThread.loadWasmModuleToWorker(w,function(){if(!--numWorkersToLoad)removeRunDependency(\"wasm-instantiate\")})})}}if(!ENVIRONMENT_IS_PTHREAD){addRunDependency(\"wasm-instantiate\")}function receiveInstantiatedSource(output){receiveInstance(output[\"instance\"],output[\"module\"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err(\"failed to asynchronously prepare wasm: \"+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming===\"function\"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch===\"function\"){return fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err(\"wasm streaming compile failed: \"+reason);err(\"falling back to ArrayBuffer instantiation\");return instantiateArrayBuffer(receiveInstantiatedSource)})})}else{return instantiateArrayBuffer(receiveInstantiatedSource)}}if(Module[\"instantiateWasm\"]){try{var exports=Module[\"instantiateWasm\"](info,receiveInstance);return exports}catch(e){err(\"Module.instantiateWasm callback failed with error: \"+e);return false}}instantiateAsync().catch(readyPromiseReject);return{}}var ASM_CONSTS={8991:function($0,$1){setTimeout(function(){__emscripten_do_dispatch_to_thread($0,$1)},0)}};function initPthreadsJS(){PThread.initRuntime()}function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback==\"function\"){callback(Module);continue}var func=callback.func;if(typeof func===\"number\"){if(callback.arg===undefined){wasmTable.get(func)()}else{wasmTable.get(func)(callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}function _emscripten_futex_wake(addr,count){if(addr<=0||addr>GROWABLE_HEAP_I8().length||addr&3!=0||count<0)return-28;if(count==0)return 0;if(count>=2147483647)count=Infinity;var mainThreadWaitAddress=Atomics.load(GROWABLE_HEAP_I32(),__emscripten_main_thread_futex>>2);var mainThreadWoken=0;if(mainThreadWaitAddress==addr){var loadedAddr=Atomics.compareExchange(GROWABLE_HEAP_I32(),__emscripten_main_thread_futex>>2,mainThreadWaitAddress,0);if(loadedAddr==mainThreadWaitAddress){--count;mainThreadWoken=1;if(count<=0)return 1}}var ret=Atomics.notify(GROWABLE_HEAP_I32(),addr>>2,count);if(ret>=0)return ret+mainThreadWoken;throw\"Atomics.notify returned an unexpected value \"+ret}Module[\"_emscripten_futex_wake\"]=_emscripten_futex_wake;function killThread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! killThread() can only ever be called from main application thread!\";if(!pthread_ptr)throw\"Internal Error! Null pthread_ptr in killThread!\";GROWABLE_HEAP_I32()[pthread_ptr+12>>2]=0;var pthread=PThread.pthreads[pthread_ptr];pthread.worker.terminate();PThread.freeThreadData(pthread);PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(pthread.worker),1);pthread.worker.pthread=undefined}function cancelThread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! cancelThread() can only ever be called from main application thread!\";if(!pthread_ptr)throw\"Internal Error! Null pthread_ptr in cancelThread!\";var pthread=PThread.pthreads[pthread_ptr];pthread.worker.postMessage({\"cmd\":\"cancel\"})}function cleanupThread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! cleanupThread() can only ever be called from main application thread!\";if(!pthread_ptr)throw\"Internal Error! Null pthread_ptr in cleanupThread!\";GROWABLE_HEAP_I32()[pthread_ptr+12>>2]=0;var pthread=PThread.pthreads[pthread_ptr];if(pthread){var worker=pthread.worker;PThread.returnWorkerToPool(worker)}}var PThread={unusedWorkers:[],runningWorkers:[],initMainThreadBlock:function(){var pthreadPoolSize=8;for(var i=0;i>2]=tb;var headPtr=tb+152;GROWABLE_HEAP_I32()[headPtr>>2]=headPtr;var tlsMemory=_malloc(512);for(var i=0;i<128;++i)GROWABLE_HEAP_U32()[tlsMemory/4+i]=0;Atomics.store(GROWABLE_HEAP_U32(),tb+100>>2,tlsMemory);Atomics.store(GROWABLE_HEAP_U32(),tb+40>>2,tb);__emscripten_thread_init(tb,!ENVIRONMENT_IS_WORKER,1);_emscripten_register_main_browser_thread_id(tb)},initWorker:function(){},pthreads:{},threadExitHandlers:[],setThreadStatus:function(){},runExitHandlers:function(){while(PThread.threadExitHandlers.length>0){PThread.threadExitHandlers.pop()()}if(ENVIRONMENT_IS_PTHREAD&&_pthread_self())___pthread_tsd_run_dtors()},threadExit:function(exitCode){var tb=_pthread_self();if(tb){Atomics.store(GROWABLE_HEAP_U32(),tb+4>>2,exitCode);Atomics.store(GROWABLE_HEAP_U32(),tb+0>>2,1);Atomics.store(GROWABLE_HEAP_U32(),tb+56>>2,1);Atomics.store(GROWABLE_HEAP_U32(),tb+60>>2,0);PThread.runExitHandlers();_emscripten_futex_wake(tb+0,2147483647);__emscripten_thread_init(0,0,0);if(ENVIRONMENT_IS_PTHREAD){postMessage({\"cmd\":\"exit\"})}}},threadCancel:function(){PThread.runExitHandlers();var tb=_pthread_self();Atomics.store(GROWABLE_HEAP_U32(),tb+4>>2,-1);Atomics.store(GROWABLE_HEAP_U32(),tb+0>>2,1);_emscripten_futex_wake(tb+0,2147483647);__emscripten_thread_init(0,0,0);postMessage({\"cmd\":\"cancelDone\"})},terminateAllThreads:function(){for(var t in PThread.pthreads){var pthread=PThread.pthreads[t];if(pthread&&pthread.worker){PThread.returnWorkerToPool(pthread.worker)}}PThread.pthreads={};for(var i=0;i>2];GROWABLE_HEAP_I32()[pthread.threadInfoStruct+100>>2]=0;_free(tlsMemory);_free(pthread.threadInfoStruct)}pthread.threadInfoStruct=0;if(pthread.allocatedOwnStack&&pthread.stackBase)_free(pthread.stackBase);pthread.stackBase=0;if(pthread.worker)pthread.worker.pthread=null},returnWorkerToPool:function(worker){PThread.runWithoutMainThreadQueuedCalls(function(){delete PThread.pthreads[worker.pthread.threadInfoStruct];PThread.unusedWorkers.push(worker);PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(worker),1);PThread.freeThreadData(worker.pthread);worker.pthread=undefined})},runWithoutMainThreadQueuedCalls:function(func){GROWABLE_HEAP_I32()[__emscripten_allow_main_runtime_queued_calls>>2]=0;try{func()}finally{GROWABLE_HEAP_I32()[__emscripten_allow_main_runtime_queued_calls>>2]=1}},receiveObjectTransfer:function(data){},loadWasmModuleToWorker:function(worker,onFinishedLoading){worker.onmessage=function(e){var d=e[\"data\"];var cmd=d[\"cmd\"];if(worker.pthread)PThread.currentProxiedOperationCallerThread=worker.pthread.threadInfoStruct;if(d[\"targetThread\"]&&d[\"targetThread\"]!=_pthread_self()){var thread=PThread.pthreads[d.targetThread];if(thread){thread.worker.postMessage(e.data,d[\"transferList\"])}else{console.error('Internal error! Worker sent a message \"'+cmd+'\" to target pthread '+d[\"targetThread\"]+\", but that thread no longer exists!\")}PThread.currentProxiedOperationCallerThread=undefined;return}if(cmd===\"processQueuedMainThreadWork\"){_emscripten_main_thread_process_queued_calls()}else if(cmd===\"spawnThread\"){spawnThread(e.data)}else if(cmd===\"cleanupThread\"){cleanupThread(d[\"thread\"])}else if(cmd===\"killThread\"){killThread(d[\"thread\"])}else if(cmd===\"cancelThread\"){cancelThread(d[\"thread\"])}else if(cmd===\"loaded\"){worker.loaded=true;if(onFinishedLoading)onFinishedLoading(worker);if(worker.runPthread){worker.runPthread();delete worker.runPthread}}else if(cmd===\"print\"){out(\"Thread \"+d[\"threadId\"]+\": \"+d[\"text\"])}else if(cmd===\"printErr\"){err(\"Thread \"+d[\"threadId\"]+\": \"+d[\"text\"])}else if(cmd===\"alert\"){alert(\"Thread \"+d[\"threadId\"]+\": \"+d[\"text\"])}else if(cmd===\"exit\"){var detached=worker.pthread&&Atomics.load(GROWABLE_HEAP_U32(),worker.pthread.threadInfoStruct+64>>2);if(detached){PThread.returnWorkerToPool(worker)}}else if(cmd===\"exitProcess\"){try{exit(d[\"returnCode\"])}catch(e){if(e instanceof ExitStatus)return;throw e}}else if(cmd===\"cancelDone\"){PThread.returnWorkerToPool(worker)}else if(cmd===\"objectTransfer\"){PThread.receiveObjectTransfer(e.data)}else if(e.data.target===\"setimmediate\"){worker.postMessage(e.data)}else{err(\"worker sent an unknown command \"+cmd)}PThread.currentProxiedOperationCallerThread=undefined};worker.onerror=function(e){err(\"pthread sent an error! \"+e.filename+\":\"+e.lineno+\": \"+e.message)};if(ENVIRONMENT_IS_NODE){worker.on(\"message\",function(data){worker.onmessage({data:data})});worker.on(\"error\",function(data){worker.onerror(data)});worker.on(\"exit\",function(data){})}worker.postMessage({\"cmd\":\"load\",\"urlOrBlob\":Module[\"mainScriptUrlOrBlob\"]||_scriptDir,\"wasmMemory\":wasmMemory,\"wasmModule\":wasmModule})},allocateUnusedWorker:function(){var pthreadMainJs=locateFile(\"tfjs-backend-wasm-threaded-simd.worker.js\");PThread.unusedWorkers.push(new Worker(pthreadMainJs))},getNewWorker:function(){if(PThread.unusedWorkers.length==0){PThread.allocateUnusedWorker();PThread.loadWasmModuleToWorker(PThread.unusedWorkers[0])}if(PThread.unusedWorkers.length>0)return PThread.unusedWorkers.pop();else return null},busySpinWait:function(msecs){var t=performance.now()+msecs;while(performance.now()>2]=value;return value}function _atexit(func,arg){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(1,1,func,arg)}function __emscripten_notify_thread_queue(targetThreadId,mainThreadId){if(targetThreadId==mainThreadId){postMessage({\"cmd\":\"processQueuedMainThreadWork\"})}else if(ENVIRONMENT_IS_PTHREAD){postMessage({\"targetThread\":targetThreadId,\"cmd\":\"processThreadQueue\"})}else{var pthread=PThread.pthreads[targetThreadId];var worker=pthread&&pthread.worker;if(!worker){return}worker.postMessage({\"cmd\":\"processThreadQueue\"})}return 1}function _abort(){abort()}function _emscripten_asm_const_int(code,sigPtr,argbuf){var args=readAsmConstArgs(sigPtr,argbuf);return ASM_CONSTS[code].apply(null,args)}function _emscripten_conditional_set_current_thread_status(expectedStatus,newStatus){}function _emscripten_futex_wait(addr,val,timeout){if(addr<=0||addr>GROWABLE_HEAP_I8().length||addr&3!=0)return-28;if(!ENVIRONMENT_IS_WEB){var ret=Atomics.wait(GROWABLE_HEAP_I32(),addr>>2,val,timeout);if(ret===\"timed-out\")return-73;if(ret===\"not-equal\")return-6;if(ret===\"ok\")return 0;throw\"Atomics.wait returned an unexpected value \"+ret}else{if(Atomics.load(GROWABLE_HEAP_I32(),addr>>2)!=val){return-6}var tNow=performance.now();var tEnd=tNow+timeout;var lastAddr=Atomics.exchange(GROWABLE_HEAP_I32(),__emscripten_main_thread_futex>>2,addr);while(1){tNow=performance.now();if(tNow>tEnd){lastAddr=Atomics.exchange(GROWABLE_HEAP_I32(),__emscripten_main_thread_futex>>2,0);return-73}lastAddr=Atomics.exchange(GROWABLE_HEAP_I32(),__emscripten_main_thread_futex>>2,0);if(lastAddr==0){break}_emscripten_main_thread_process_queued_calls();if(Atomics.load(GROWABLE_HEAP_I32(),addr>>2)!=val){return-6}lastAddr=Atomics.exchange(GROWABLE_HEAP_I32(),__emscripten_main_thread_futex>>2,addr)}return 0}}function _emscripten_memcpy_big(dest,src,num){GROWABLE_HEAP_U8().copyWithin(dest,src,src+num)}function _emscripten_num_logical_cores(){if(ENVIRONMENT_IS_NODE)return require(\"os\").cpus().length;return navigator[\"hardwareConcurrency\"]}function _emscripten_proxy_to_main_thread_js(index,sync){var numCallArgs=arguments.length-2;var stack=stackSave();var serializedNumCallArgs=numCallArgs;var args=stackAlloc(serializedNumCallArgs*8);var b=args>>3;for(var i=0;i>=2;while(ch=GROWABLE_HEAP_U8()[sigPtr++]){var double=ch<105;if(double&&buf&1)buf++;readAsmConstArgsArray.push(double?GROWABLE_HEAP_F64()[buf++>>1]:GROWABLE_HEAP_I32()[buf]);++buf}return readAsmConstArgsArray}function _emscripten_receive_on_main_thread_js(index,numCallArgs,args){_emscripten_receive_on_main_thread_js_callArgs.length=numCallArgs;var b=args>>3;for(var i=0;i>>16);updateGlobalBufferAndViews(wasmMemory.buffer);return 1}catch(e){}}function _emscripten_resize_heap(requestedSize){var oldSize=_emscripten_get_heap_size();if(requestedSize<=oldSize){return false}var maxHeapSize=2147483648;if(requestedSize>maxHeapSize){return false}for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=emscripten_realloc_buffer(newSize);if(replacement){return true}}return false}var JSEvents={inEventHandler:0,removeAllEventListeners:function(){for(var i=JSEvents.eventHandlers.length-1;i>=0;--i){JSEvents._removeHandler(i)}JSEvents.eventHandlers=[];JSEvents.deferredCalls=[]},registerRemoveEventListeners:function(){if(!JSEvents.removeEventListenersRegistered){__ATEXIT__.push(JSEvents.removeAllEventListeners);JSEvents.removeEventListenersRegistered=true}},deferredCalls:[],deferCall:function(targetFunction,precedence,argsList){function arraysHaveEqualContent(arrA,arrB){if(arrA.length!=arrB.length)return false;for(var i in arrA){if(arrA[i]!=arrB[i])return false}return true}for(var i in JSEvents.deferredCalls){var call=JSEvents.deferredCalls[i];if(call.targetFunction==targetFunction&&arraysHaveEqualContent(call.argsList,argsList)){return}}JSEvents.deferredCalls.push({targetFunction:targetFunction,precedence:precedence,argsList:argsList});JSEvents.deferredCalls.sort(function(x,y){return x.precedence>2]=eventTypeId;GROWABLE_HEAP_I32()[varargs+4>>2]=eventData;GROWABLE_HEAP_I32()[varargs+8>>2]=userData;__emscripten_call_on_thread(0,targetThread,637534208,eventHandlerFunc,eventData,varargs);stackRestore(stackTop)},getTargetThreadForEventCallback:function(targetThread){switch(targetThread){case 1:return 0;case 2:return PThread.currentProxiedOperationCallerThread;default:return targetThread}},getNodeNameForTarget:function(target){if(!target)return\"\";if(target==window)return\"#window\";if(target==screen)return\"#screen\";return target&&target.nodeName?target.nodeName:\"\"},fullscreenEnabled:function(){return document.fullscreenEnabled||document.webkitFullscreenEnabled}};function stringToNewUTF8(jsString){var length=lengthBytesUTF8(jsString)+1;var cString=_malloc(length);stringToUTF8(jsString,cString,length);return cString}function _emscripten_set_offscreencanvas_size_on_target_thread_js(targetThread,targetCanvas,width,height){var stackTop=stackSave();var varargs=stackAlloc(12);var targetCanvasPtr=0;if(targetCanvas){targetCanvasPtr=stringToNewUTF8(targetCanvas)}GROWABLE_HEAP_I32()[varargs>>2]=targetCanvasPtr;GROWABLE_HEAP_I32()[varargs+4>>2]=width;GROWABLE_HEAP_I32()[varargs+8>>2]=height;__emscripten_call_on_thread(0,targetThread,657457152,0,targetCanvasPtr,varargs);stackRestore(stackTop)}function _emscripten_set_offscreencanvas_size_on_target_thread(targetThread,targetCanvas,width,height){targetCanvas=targetCanvas?UTF8ToString(targetCanvas):\"\";_emscripten_set_offscreencanvas_size_on_target_thread_js(targetThread,targetCanvas,width,height)}function maybeCStringToJsString(cString){return cString>2?UTF8ToString(cString):cString}var specialHTMLTargets=[0,typeof document!==\"undefined\"?document:0,typeof window!==\"undefined\"?window:0];function findEventTarget(target){target=maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||(typeof document!==\"undefined\"?document.querySelector(target):undefined);return domElement}function findCanvasEventTarget(target){return findEventTarget(target)}function _emscripten_set_canvas_element_size_calling_thread(target,width,height){var canvas=findCanvasEventTarget(target);if(!canvas)return-4;if(canvas.canvasSharedPtr){GROWABLE_HEAP_I32()[canvas.canvasSharedPtr>>2]=width;GROWABLE_HEAP_I32()[canvas.canvasSharedPtr+4>>2]=height}if(canvas.offscreenCanvas||!canvas.controlTransferredOffscreen){if(canvas.offscreenCanvas)canvas=canvas.offscreenCanvas;var autoResizeViewport=false;if(canvas.GLctxObject&&canvas.GLctxObject.GLctx){var prevViewport=canvas.GLctxObject.GLctx.getParameter(2978);autoResizeViewport=prevViewport[0]===0&&prevViewport[1]===0&&prevViewport[2]===canvas.width&&prevViewport[3]===canvas.height}canvas.width=width;canvas.height=height;if(autoResizeViewport){canvas.GLctxObject.GLctx.viewport(0,0,width,height)}}else if(canvas.canvasSharedPtr){var targetThread=GROWABLE_HEAP_I32()[canvas.canvasSharedPtr+8>>2];_emscripten_set_offscreencanvas_size_on_target_thread(targetThread,target,width,height);return 1}else{return-4}return 0}function _emscripten_set_canvas_element_size_main_thread(target,width,height){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(2,1,target,width,height);return _emscripten_set_canvas_element_size_calling_thread(target,width,height)}function _emscripten_set_canvas_element_size(target,width,height){var canvas=findCanvasEventTarget(target);if(canvas){return _emscripten_set_canvas_element_size_calling_thread(target,width,height)}else{return _emscripten_set_canvas_element_size_main_thread(target,width,height)}}function _emscripten_set_current_thread_status(newStatus){}function _emscripten_set_thread_name(threadId,name){}function __webgl_enable_ANGLE_instanced_arrays(ctx){var ext=ctx.getExtension(\"ANGLE_instanced_arrays\");if(ext){ctx[\"vertexAttribDivisor\"]=function(index,divisor){ext[\"vertexAttribDivisorANGLE\"](index,divisor)};ctx[\"drawArraysInstanced\"]=function(mode,first,count,primcount){ext[\"drawArraysInstancedANGLE\"](mode,first,count,primcount)};ctx[\"drawElementsInstanced\"]=function(mode,count,type,indices,primcount){ext[\"drawElementsInstancedANGLE\"](mode,count,type,indices,primcount)};return 1}}function __webgl_enable_OES_vertex_array_object(ctx){var ext=ctx.getExtension(\"OES_vertex_array_object\");if(ext){ctx[\"createVertexArray\"]=function(){return ext[\"createVertexArrayOES\"]()};ctx[\"deleteVertexArray\"]=function(vao){ext[\"deleteVertexArrayOES\"](vao)};ctx[\"bindVertexArray\"]=function(vao){ext[\"bindVertexArrayOES\"](vao)};ctx[\"isVertexArray\"]=function(vao){return ext[\"isVertexArrayOES\"](vao)};return 1}}function __webgl_enable_WEBGL_draw_buffers(ctx){var ext=ctx.getExtension(\"WEBGL_draw_buffers\");if(ext){ctx[\"drawBuffers\"]=function(n,bufs){ext[\"drawBuffersWEBGL\"](n,bufs)};return 1}}function __webgl_enable_WEBGL_multi_draw(ctx){return!!(ctx.multiDrawWebgl=ctx.getExtension(\"WEBGL_multi_draw\"))}var GL={counter:1,buffers:[],programs:[],framebuffers:[],renderbuffers:[],textures:[],uniforms:[],shaders:[],vaos:[],contexts:{},offscreenCanvases:{},timerQueriesEXT:[],programInfos:{},stringCache:{},unpackAlignment:4,recordError:function recordError(errorCode){if(!GL.lastError){GL.lastError=errorCode}},getNewId:function(table){var ret=GL.counter++;for(var i=table.length;i>2]:-1;source+=UTF8ToString(GROWABLE_HEAP_I32()[string+i*4>>2],len<0?undefined:len)}return source},createContext:function(canvas,webGLContextAttributes){var ctx=canvas.getContext(\"webgl\",webGLContextAttributes);if(!ctx)return 0;var handle=GL.registerContext(ctx,webGLContextAttributes);return handle},registerContext:function(ctx,webGLContextAttributes){var handle=_malloc(8);GROWABLE_HEAP_I32()[handle+4>>2]=_pthread_self();var context={handle:handle,attributes:webGLContextAttributes,version:webGLContextAttributes.majorVersion,GLctx:ctx};if(ctx.canvas)ctx.canvas.GLctxObject=context;GL.contexts[handle]=context;if(typeof webGLContextAttributes.enableExtensionsByDefault===\"undefined\"||webGLContextAttributes.enableExtensionsByDefault){GL.initExtensions(context)}return handle},makeContextCurrent:function(contextHandle){GL.currentContext=GL.contexts[contextHandle];Module.ctx=GLctx=GL.currentContext&&GL.currentContext.GLctx;return!(contextHandle&&!GLctx)},getContext:function(contextHandle){return GL.contexts[contextHandle]},deleteContext:function(contextHandle){if(GL.currentContext===GL.contexts[contextHandle])GL.currentContext=null;if(typeof JSEvents===\"object\")JSEvents.removeAllHandlersOnTarget(GL.contexts[contextHandle].GLctx.canvas);if(GL.contexts[contextHandle]&&GL.contexts[contextHandle].GLctx.canvas)GL.contexts[contextHandle].GLctx.canvas.GLctxObject=undefined;_free(GL.contexts[contextHandle].handle);GL.contexts[contextHandle]=null},initExtensions:function(context){if(!context)context=GL.currentContext;if(context.initExtensionsDone)return;context.initExtensionsDone=true;var GLctx=context.GLctx;__webgl_enable_ANGLE_instanced_arrays(GLctx);__webgl_enable_OES_vertex_array_object(GLctx);__webgl_enable_WEBGL_draw_buffers(GLctx);GLctx.disjointTimerQueryExt=GLctx.getExtension(\"EXT_disjoint_timer_query\");__webgl_enable_WEBGL_multi_draw(GLctx);var exts=GLctx.getSupportedExtensions()||[];exts.forEach(function(ext){if(ext.indexOf(\"lose_context\")<0&&ext.indexOf(\"debug\")<0){GLctx.getExtension(ext)}})},populateUniformTable:function(program){var p=GL.programs[program];var ptable=GL.programInfos[program]={uniforms:{},maxUniformLength:0,maxAttributeLength:-1,maxUniformBlockNameLength:-1};var utable=ptable.uniforms;var numUniforms=GLctx.getProgramParameter(p,35718);for(var i=0;i>2;var powerPreference=GROWABLE_HEAP_I32()[a+(24>>2)];var contextAttributes={\"alpha\":!!GROWABLE_HEAP_I32()[a+(0>>2)],\"depth\":!!GROWABLE_HEAP_I32()[a+(4>>2)],\"stencil\":!!GROWABLE_HEAP_I32()[a+(8>>2)],\"antialias\":!!GROWABLE_HEAP_I32()[a+(12>>2)],\"premultipliedAlpha\":!!GROWABLE_HEAP_I32()[a+(16>>2)],\"preserveDrawingBuffer\":!!GROWABLE_HEAP_I32()[a+(20>>2)],\"powerPreference\":__emscripten_webgl_power_preferences[powerPreference],\"failIfMajorPerformanceCaveat\":!!GROWABLE_HEAP_I32()[a+(28>>2)],majorVersion:GROWABLE_HEAP_I32()[a+(32>>2)],minorVersion:GROWABLE_HEAP_I32()[a+(36>>2)],enableExtensionsByDefault:GROWABLE_HEAP_I32()[a+(40>>2)],explicitSwapControl:GROWABLE_HEAP_I32()[a+(44>>2)],proxyContextToMainThread:GROWABLE_HEAP_I32()[a+(48>>2)],renderViaOffscreenBackBuffer:GROWABLE_HEAP_I32()[a+(52>>2)]};var canvas=findCanvasEventTarget(target);if(!canvas){return 0}if(contextAttributes.explicitSwapControl){return 0}var contextHandle=GL.createContext(canvas,contextAttributes);return contextHandle}function _emscripten_webgl_create_context(a0,a1){return _emscripten_webgl_do_create_context(a0,a1)}var SYSCALLS={mappings:{},buffers:[null,[],[]],printChar:function(stream,curr){var buffer=SYSCALLS.buffers[stream];if(curr===0||curr===10){(stream===1?out:err)(UTF8ArrayToString(buffer,0));buffer.length=0}else{buffer.push(curr)}},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=GROWABLE_HEAP_I32()[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},get64:function(low,high){return low}};function _fd_close(fd){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(3,1,fd);return 0}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(4,1,fd,offset_low,offset_high,whence,newOffset)}function _fd_write(fd,iov,iovcnt,pnum){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(5,1,fd,iov,iovcnt,pnum);var num=0;for(var i=0;i>2];var len=GROWABLE_HEAP_I32()[iov+(i*8+4)>>2];for(var j=0;j>2]=num;return 0}function _pthread_cleanup_pop(execute){var routine=PThread.threadExitHandlers.pop();if(execute)routine()}function _pthread_cleanup_push(routine,arg){PThread.threadExitHandlers.push(function(){wasmTable.get(routine)(arg)})}function spawnThread(threadParams){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! spawnThread() can only ever be called from main application thread!\";var worker=PThread.getNewWorker();if(worker.pthread!==undefined)throw\"Internal error!\";if(!threadParams.pthread_ptr)throw\"Internal error, no pthread ptr!\";PThread.runningWorkers.push(worker);var tlsMemory=_malloc(128*4);for(var i=0;i<128;++i){GROWABLE_HEAP_I32()[tlsMemory+i*4>>2]=0}var stackHigh=threadParams.stackBase+threadParams.stackSize;var pthread=PThread.pthreads[threadParams.pthread_ptr]={worker:worker,stackBase:threadParams.stackBase,stackSize:threadParams.stackSize,allocatedOwnStack:threadParams.allocatedOwnStack,threadInfoStruct:threadParams.pthread_ptr};var tis=pthread.threadInfoStruct>>2;Atomics.store(GROWABLE_HEAP_U32(),tis+(64>>2),threadParams.detached);Atomics.store(GROWABLE_HEAP_U32(),tis+(100>>2),tlsMemory);Atomics.store(GROWABLE_HEAP_U32(),tis+(40>>2),pthread.threadInfoStruct);Atomics.store(GROWABLE_HEAP_U32(),tis+(80>>2),threadParams.stackSize);Atomics.store(GROWABLE_HEAP_U32(),tis+(76>>2),stackHigh);Atomics.store(GROWABLE_HEAP_U32(),tis+(104>>2),threadParams.stackSize);Atomics.store(GROWABLE_HEAP_U32(),tis+(104+8>>2),stackHigh);Atomics.store(GROWABLE_HEAP_U32(),tis+(104+12>>2),threadParams.detached);var global_libc=_emscripten_get_global_libc();var global_locale=global_libc+40;Atomics.store(GROWABLE_HEAP_U32(),tis+(172>>2),global_locale);worker.pthread=pthread;var msg={\"cmd\":\"run\",\"start_routine\":threadParams.startRoutine,\"arg\":threadParams.arg,\"threadInfoStruct\":threadParams.pthread_ptr,\"stackBase\":threadParams.stackBase,\"stackSize\":threadParams.stackSize};worker.runPthread=function(){msg.time=performance.now();worker.postMessage(msg,threadParams.transferList)};if(worker.loaded){worker.runPthread();delete worker.runPthread}}function _pthread_create(pthread_ptr,attr,start_routine,arg){if(typeof SharedArrayBuffer===\"undefined\"){err(\"Current environment does not support SharedArrayBuffer, pthreads are not available!\");return 6}if(!pthread_ptr){err(\"pthread_create called with a null thread pointer!\");return 28}var transferList=[];var error=0;if(ENVIRONMENT_IS_PTHREAD&&(transferList.length===0||error)){return _emscripten_sync_run_in_main_thread_4(687865856,pthread_ptr,attr,start_routine,arg)}if(error)return error;var stackSize=0;var stackBase=0;var detached=0;if(attr&&attr!=-1){stackSize=GROWABLE_HEAP_I32()[attr>>2];stackSize+=81920;stackBase=GROWABLE_HEAP_I32()[attr+8>>2];detached=GROWABLE_HEAP_I32()[attr+12>>2]!==0}else{stackSize=2097152}var allocatedOwnStack=stackBase==0;if(allocatedOwnStack){stackBase=_memalign(16,stackSize)}else{stackBase-=stackSize;assert(stackBase>0)}var threadInfoStruct=_malloc(228);for(var i=0;i<228>>2;++i)GROWABLE_HEAP_U32()[(threadInfoStruct>>2)+i]=0;GROWABLE_HEAP_I32()[pthread_ptr>>2]=threadInfoStruct;GROWABLE_HEAP_I32()[threadInfoStruct+12>>2]=threadInfoStruct;var headPtr=threadInfoStruct+152;GROWABLE_HEAP_I32()[headPtr>>2]=headPtr;var threadParams={stackBase:stackBase,stackSize:stackSize,allocatedOwnStack:allocatedOwnStack,detached:detached,startRoutine:start_routine,pthread_ptr:threadInfoStruct,arg:arg,transferList:transferList};if(ENVIRONMENT_IS_PTHREAD){threadParams.cmd=\"spawnThread\";postMessage(threadParams,transferList)}else{spawnThread(threadParams)}return 0}function _sysconf(name){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(6,1,name);switch(name){case 30:return 16384;case 85:var maxHeapSize=2147483648;return maxHeapSize/16384;case 132:case 133:case 12:case 137:case 138:case 15:case 235:case 16:case 17:case 18:case 19:case 20:case 149:case 13:case 10:case 236:case 153:case 9:case 21:case 22:case 159:case 154:case 14:case 77:case 78:case 139:case 82:case 68:case 67:case 164:case 11:case 29:case 47:case 48:case 95:case 52:case 51:case 46:return 200809;case 27:case 246:case 127:case 128:case 23:case 24:case 160:case 161:case 181:case 182:case 242:case 183:case 184:case 243:case 244:case 245:case 165:case 178:case 179:case 49:case 50:case 168:case 169:case 175:case 170:case 171:case 172:case 97:case 76:case 32:case 173:case 35:case 80:case 81:case 79:return-1;case 176:case 177:case 7:case 155:case 8:case 157:case 125:case 126:case 92:case 93:case 129:case 130:case 131:case 94:case 91:return 1;case 74:case 60:case 69:case 70:case 4:return 1024;case 31:case 42:case 72:return 32;case 87:case 26:case 33:return 2147483647;case 34:case 1:return 47839;case 38:case 36:return 99;case 43:case 37:return 2048;case 0:return 2097152;case 3:return 65536;case 28:return 32768;case 44:return 32767;case 75:return 16384;case 39:return 1e3;case 89:return 700;case 71:return 256;case 40:return 255;case 2:return 100;case 180:return 64;case 25:return 20;case 5:return 16;case 6:return 6;case 73:return 4;case 84:{if(typeof navigator===\"object\")return navigator[\"hardwareConcurrency\"]||1;return 1}}setErrNo(28);return-1}if(!ENVIRONMENT_IS_PTHREAD)PThread.initMainThreadBlock();var GLctx;var proxiedFunctionTable=[null,_atexit,_emscripten_set_canvas_element_size_main_thread,_fd_close,_fd_seek,_fd_write,_sysconf];var asmLibraryArg={\"e\":___assert_fail,\"r\":___call_main,\"x\":__emscripten_notify_thread_queue,\"b\":_abort,\"y\":_emscripten_asm_const_int,\"j\":_emscripten_conditional_set_current_thread_status,\"c\":_emscripten_futex_wait,\"d\":_emscripten_futex_wake,\"f\":_emscripten_get_now,\"p\":_emscripten_memcpy_big,\"z\":_emscripten_num_logical_cores,\"u\":_emscripten_receive_on_main_thread_js,\"q\":_emscripten_resize_heap,\"v\":_emscripten_set_canvas_element_size,\"i\":_emscripten_set_current_thread_status,\"t\":_emscripten_set_thread_name,\"w\":_emscripten_webgl_create_context,\"m\":_fd_close,\"n\":_fd_seek,\"g\":_fd_write,\"o\":initPthreadsJS,\"a\":wasmMemory||Module[\"wasmMemory\"],\"k\":_pthread_cleanup_pop,\"l\":_pthread_cleanup_push,\"h\":_pthread_create,\"s\":_sysconf};var asm=createWasm();var ___wasm_call_ctors=Module[\"___wasm_call_ctors\"]=function(){return(___wasm_call_ctors=Module[\"___wasm_call_ctors\"]=Module[\"asm\"][\"A\"]).apply(null,arguments)};var _init=Module[\"_init\"]=function(){return(_init=Module[\"_init\"]=Module[\"asm\"][\"B\"]).apply(null,arguments)};var _register_tensor=Module[\"_register_tensor\"]=function(){return(_register_tensor=Module[\"_register_tensor\"]=Module[\"asm\"][\"C\"]).apply(null,arguments)};var _dispose_data=Module[\"_dispose_data\"]=function(){return(_dispose_data=Module[\"_dispose_data\"]=Module[\"asm\"][\"D\"]).apply(null,arguments)};var _dispose=Module[\"_dispose\"]=function(){return(_dispose=Module[\"_dispose\"]=Module[\"asm\"][\"E\"]).apply(null,arguments)};var _Abs=Module[\"_Abs\"]=function(){return(_Abs=Module[\"_Abs\"]=Module[\"asm\"][\"G\"]).apply(null,arguments)};var _Add=Module[\"_Add\"]=function(){return(_Add=Module[\"_Add\"]=Module[\"asm\"][\"H\"]).apply(null,arguments)};var _AddN=Module[\"_AddN\"]=function(){return(_AddN=Module[\"_AddN\"]=Module[\"asm\"][\"I\"]).apply(null,arguments)};var _ArgMax=Module[\"_ArgMax\"]=function(){return(_ArgMax=Module[\"_ArgMax\"]=Module[\"asm\"][\"J\"]).apply(null,arguments)};var _AvgPool=Module[\"_AvgPool\"]=function(){return(_AvgPool=Module[\"_AvgPool\"]=Module[\"asm\"][\"K\"]).apply(null,arguments)};var _BatchMatMul=Module[\"_BatchMatMul\"]=function(){return(_BatchMatMul=Module[\"_BatchMatMul\"]=Module[\"asm\"][\"L\"]).apply(null,arguments)};var _Ceil=Module[\"_Ceil\"]=function(){return(_Ceil=Module[\"_Ceil\"]=Module[\"asm\"][\"M\"]).apply(null,arguments)};var _ClipByValue=Module[\"_ClipByValue\"]=function(){return(_ClipByValue=Module[\"_ClipByValue\"]=Module[\"asm\"][\"N\"]).apply(null,arguments)};var _Conv2D=Module[\"_Conv2D\"]=function(){return(_Conv2D=Module[\"_Conv2D\"]=Module[\"asm\"][\"O\"]).apply(null,arguments)};var _Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=function(){return(_Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=Module[\"asm\"][\"P\"]).apply(null,arguments)};var _Cos=Module[\"_Cos\"]=function(){return(_Cos=Module[\"_Cos\"]=Module[\"asm\"][\"Q\"]).apply(null,arguments)};var _CropAndResize=Module[\"_CropAndResize\"]=function(){return(_CropAndResize=Module[\"_CropAndResize\"]=Module[\"asm\"][\"R\"]).apply(null,arguments)};var _Cumsum=Module[\"_Cumsum\"]=function(){return(_Cumsum=Module[\"_Cumsum\"]=Module[\"asm\"][\"S\"]).apply(null,arguments)};var _DepthToSpace=Module[\"_DepthToSpace\"]=function(){return(_DepthToSpace=Module[\"_DepthToSpace\"]=Module[\"asm\"][\"T\"]).apply(null,arguments)};var _DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=function(){return(_DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=Module[\"asm\"][\"U\"]).apply(null,arguments)};var _Equal=Module[\"_Equal\"]=function(){return(_Equal=Module[\"_Equal\"]=Module[\"asm\"][\"V\"]).apply(null,arguments)};var _Exp=Module[\"_Exp\"]=function(){return(_Exp=Module[\"_Exp\"]=Module[\"asm\"][\"W\"]).apply(null,arguments)};var _FlipLeftRight=Module[\"_FlipLeftRight\"]=function(){return(_FlipLeftRight=Module[\"_FlipLeftRight\"]=Module[\"asm\"][\"X\"]).apply(null,arguments)};var _Floor=Module[\"_Floor\"]=function(){return(_Floor=Module[\"_Floor\"]=Module[\"asm\"][\"Y\"]).apply(null,arguments)};var _FloorDiv=Module[\"_FloorDiv\"]=function(){return(_FloorDiv=Module[\"_FloorDiv\"]=Module[\"asm\"][\"Z\"]).apply(null,arguments)};var _FusedBatchNorm=Module[\"_FusedBatchNorm\"]=function(){return(_FusedBatchNorm=Module[\"_FusedBatchNorm\"]=Module[\"asm\"][\"_\"]).apply(null,arguments)};var _FusedConv2D=Module[\"_FusedConv2D\"]=function(){return(_FusedConv2D=Module[\"_FusedConv2D\"]=Module[\"asm\"][\"$\"]).apply(null,arguments)};var _FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=function(){return(_FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=Module[\"asm\"][\"aa\"]).apply(null,arguments)};var _Gather=Module[\"_Gather\"]=function(){return(_Gather=Module[\"_Gather\"]=Module[\"asm\"][\"ba\"]).apply(null,arguments)};var _GatherNd=Module[\"_GatherNd\"]=function(){return(_GatherNd=Module[\"_GatherNd\"]=Module[\"asm\"][\"ca\"]).apply(null,arguments)};var _Greater=Module[\"_Greater\"]=function(){return(_Greater=Module[\"_Greater\"]=Module[\"asm\"][\"da\"]).apply(null,arguments)};var _GreaterEqual=Module[\"_GreaterEqual\"]=function(){return(_GreaterEqual=Module[\"_GreaterEqual\"]=Module[\"asm\"][\"ea\"]).apply(null,arguments)};var _LeakyRelu=Module[\"_LeakyRelu\"]=function(){return(_LeakyRelu=Module[\"_LeakyRelu\"]=Module[\"asm\"][\"fa\"]).apply(null,arguments)};var _Less=Module[\"_Less\"]=function(){return(_Less=Module[\"_Less\"]=Module[\"asm\"][\"ga\"]).apply(null,arguments)};var _LessEqual=Module[\"_LessEqual\"]=function(){return(_LessEqual=Module[\"_LessEqual\"]=Module[\"asm\"][\"ha\"]).apply(null,arguments)};var _Log=Module[\"_Log\"]=function(){return(_Log=Module[\"_Log\"]=Module[\"asm\"][\"ia\"]).apply(null,arguments)};var _LogicalAnd=Module[\"_LogicalAnd\"]=function(){return(_LogicalAnd=Module[\"_LogicalAnd\"]=Module[\"asm\"][\"ja\"]).apply(null,arguments)};var _Max=Module[\"_Max\"]=function(){return(_Max=Module[\"_Max\"]=Module[\"asm\"][\"ka\"]).apply(null,arguments)};var _MaxPool=Module[\"_MaxPool\"]=function(){return(_MaxPool=Module[\"_MaxPool\"]=Module[\"asm\"][\"la\"]).apply(null,arguments)};var _Maximum=Module[\"_Maximum\"]=function(){return(_Maximum=Module[\"_Maximum\"]=Module[\"asm\"][\"ma\"]).apply(null,arguments)};var _Mean=Module[\"_Mean\"]=function(){return(_Mean=Module[\"_Mean\"]=Module[\"asm\"][\"na\"]).apply(null,arguments)};var _Min=Module[\"_Min\"]=function(){return(_Min=Module[\"_Min\"]=Module[\"asm\"][\"oa\"]).apply(null,arguments)};var _Minimum=Module[\"_Minimum\"]=function(){return(_Minimum=Module[\"_Minimum\"]=Module[\"asm\"][\"pa\"]).apply(null,arguments)};var _Multiply=Module[\"_Multiply\"]=function(){return(_Multiply=Module[\"_Multiply\"]=Module[\"asm\"][\"qa\"]).apply(null,arguments)};var _Neg=Module[\"_Neg\"]=function(){return(_Neg=Module[\"_Neg\"]=Module[\"asm\"][\"ra\"]).apply(null,arguments)};var _NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=function(){return(_NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=Module[\"asm\"][\"sa\"]).apply(null,arguments)};var _NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=function(){return(_NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=Module[\"asm\"][\"ta\"]).apply(null,arguments)};var _NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=function(){return(_NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=Module[\"asm\"][\"ua\"]).apply(null,arguments)};var _NotEqual=Module[\"_NotEqual\"]=function(){return(_NotEqual=Module[\"_NotEqual\"]=Module[\"asm\"][\"va\"]).apply(null,arguments)};var _OneHot=Module[\"_OneHot\"]=function(){return(_OneHot=Module[\"_OneHot\"]=Module[\"asm\"][\"wa\"]).apply(null,arguments)};var _PadV2=Module[\"_PadV2\"]=function(){return(_PadV2=Module[\"_PadV2\"]=Module[\"asm\"][\"xa\"]).apply(null,arguments)};var _Pow=Module[\"_Pow\"]=function(){return(_Pow=Module[\"_Pow\"]=Module[\"asm\"][\"ya\"]).apply(null,arguments)};var _Prelu=Module[\"_Prelu\"]=function(){return(_Prelu=Module[\"_Prelu\"]=Module[\"asm\"][\"za\"]).apply(null,arguments)};var _Prod=Module[\"_Prod\"]=function(){return(_Prod=Module[\"_Prod\"]=Module[\"asm\"][\"Aa\"]).apply(null,arguments)};var _RealDiv=Module[\"_RealDiv\"]=function(){return(_RealDiv=Module[\"_RealDiv\"]=Module[\"asm\"][\"Ba\"]).apply(null,arguments)};var _Relu=Module[\"_Relu\"]=function(){return(_Relu=Module[\"_Relu\"]=Module[\"asm\"][\"Ca\"]).apply(null,arguments)};var _Relu6=Module[\"_Relu6\"]=function(){return(_Relu6=Module[\"_Relu6\"]=Module[\"asm\"][\"Da\"]).apply(null,arguments)};var _ResizeBilinear=Module[\"_ResizeBilinear\"]=function(){return(_ResizeBilinear=Module[\"_ResizeBilinear\"]=Module[\"asm\"][\"Ea\"]).apply(null,arguments)};var _Reverse=Module[\"_Reverse\"]=function(){return(_Reverse=Module[\"_Reverse\"]=Module[\"asm\"][\"Fa\"]).apply(null,arguments)};var _RotateWithOffset=Module[\"_RotateWithOffset\"]=function(){return(_RotateWithOffset=Module[\"_RotateWithOffset\"]=Module[\"asm\"][\"Ga\"]).apply(null,arguments)};var _Round=Module[\"_Round\"]=function(){return(_Round=Module[\"_Round\"]=Module[\"asm\"][\"Ha\"]).apply(null,arguments)};var _Rsqrt=Module[\"_Rsqrt\"]=function(){return(_Rsqrt=Module[\"_Rsqrt\"]=Module[\"asm\"][\"Ia\"]).apply(null,arguments)};var _ScatterNd=Module[\"_ScatterNd\"]=function(){return(_ScatterNd=Module[\"_ScatterNd\"]=Module[\"asm\"][\"Ja\"]).apply(null,arguments)};var _SelectV2=Module[\"_SelectV2\"]=function(){return(_SelectV2=Module[\"_SelectV2\"]=Module[\"asm\"][\"Ka\"]).apply(null,arguments)};var _Sigmoid=Module[\"_Sigmoid\"]=function(){return(_Sigmoid=Module[\"_Sigmoid\"]=Module[\"asm\"][\"La\"]).apply(null,arguments)};var _Sin=Module[\"_Sin\"]=function(){return(_Sin=Module[\"_Sin\"]=Module[\"asm\"][\"Ma\"]).apply(null,arguments)};var _Softmax=Module[\"_Softmax\"]=function(){return(_Softmax=Module[\"_Softmax\"]=Module[\"asm\"][\"Na\"]).apply(null,arguments)};var _Sqrt=Module[\"_Sqrt\"]=function(){return(_Sqrt=Module[\"_Sqrt\"]=Module[\"asm\"][\"Oa\"]).apply(null,arguments)};var _Square=Module[\"_Square\"]=function(){return(_Square=Module[\"_Square\"]=Module[\"asm\"][\"Pa\"]).apply(null,arguments)};var _SquaredDifference=Module[\"_SquaredDifference\"]=function(){return(_SquaredDifference=Module[\"_SquaredDifference\"]=Module[\"asm\"][\"Qa\"]).apply(null,arguments)};var _Step=Module[\"_Step\"]=function(){return(_Step=Module[\"_Step\"]=Module[\"asm\"][\"Ra\"]).apply(null,arguments)};var _StridedSlice=Module[\"_StridedSlice\"]=function(){return(_StridedSlice=Module[\"_StridedSlice\"]=Module[\"asm\"][\"Sa\"]).apply(null,arguments)};var _Sub=Module[\"_Sub\"]=function(){return(_Sub=Module[\"_Sub\"]=Module[\"asm\"][\"Ta\"]).apply(null,arguments)};var _Sum=Module[\"_Sum\"]=function(){return(_Sum=Module[\"_Sum\"]=Module[\"asm\"][\"Ua\"]).apply(null,arguments)};var _Tanh=Module[\"_Tanh\"]=function(){return(_Tanh=Module[\"_Tanh\"]=Module[\"asm\"][\"Va\"]).apply(null,arguments)};var _Tile=Module[\"_Tile\"]=function(){return(_Tile=Module[\"_Tile\"]=Module[\"asm\"][\"Wa\"]).apply(null,arguments)};var _TopK=Module[\"_TopK\"]=function(){return(_TopK=Module[\"_TopK\"]=Module[\"asm\"][\"Xa\"]).apply(null,arguments)};var _Transpose=Module[\"_Transpose\"]=function(){return(_Transpose=Module[\"_Transpose\"]=Module[\"asm\"][\"Ya\"]).apply(null,arguments)};var __FusedMatMul=Module[\"__FusedMatMul\"]=function(){return(__FusedMatMul=Module[\"__FusedMatMul\"]=Module[\"asm\"][\"Za\"]).apply(null,arguments)};var _malloc=Module[\"_malloc\"]=function(){return(_malloc=Module[\"_malloc\"]=Module[\"asm\"][\"_a\"]).apply(null,arguments)};var _free=Module[\"_free\"]=function(){return(_free=Module[\"_free\"]=Module[\"asm\"][\"$a\"]).apply(null,arguments)};var ___errno_location=Module[\"___errno_location\"]=function(){return(___errno_location=Module[\"___errno_location\"]=Module[\"asm\"][\"ab\"]).apply(null,arguments)};var _emscripten_get_global_libc=Module[\"_emscripten_get_global_libc\"]=function(){return(_emscripten_get_global_libc=Module[\"_emscripten_get_global_libc\"]=Module[\"asm\"][\"bb\"]).apply(null,arguments)};var _pthread_self=Module[\"_pthread_self\"]=function(){return(_pthread_self=Module[\"_pthread_self\"]=Module[\"asm\"][\"cb\"]).apply(null,arguments)};var ___pthread_tsd_run_dtors=Module[\"___pthread_tsd_run_dtors\"]=function(){return(___pthread_tsd_run_dtors=Module[\"___pthread_tsd_run_dtors\"]=Module[\"asm\"][\"db\"]).apply(null,arguments)};var _emscripten_main_thread_process_queued_calls=Module[\"_emscripten_main_thread_process_queued_calls\"]=function(){return(_emscripten_main_thread_process_queued_calls=Module[\"_emscripten_main_thread_process_queued_calls\"]=Module[\"asm\"][\"eb\"]).apply(null,arguments)};var _emscripten_current_thread_process_queued_calls=Module[\"_emscripten_current_thread_process_queued_calls\"]=function(){return(_emscripten_current_thread_process_queued_calls=Module[\"_emscripten_current_thread_process_queued_calls\"]=Module[\"asm\"][\"fb\"]).apply(null,arguments)};var _emscripten_register_main_browser_thread_id=Module[\"_emscripten_register_main_browser_thread_id\"]=function(){return(_emscripten_register_main_browser_thread_id=Module[\"_emscripten_register_main_browser_thread_id\"]=Module[\"asm\"][\"gb\"]).apply(null,arguments)};var __emscripten_do_dispatch_to_thread=Module[\"__emscripten_do_dispatch_to_thread\"]=function(){return(__emscripten_do_dispatch_to_thread=Module[\"__emscripten_do_dispatch_to_thread\"]=Module[\"asm\"][\"hb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_4=Module[\"_emscripten_sync_run_in_main_thread_4\"]=function(){return(_emscripten_sync_run_in_main_thread_4=Module[\"_emscripten_sync_run_in_main_thread_4\"]=Module[\"asm\"][\"ib\"]).apply(null,arguments)};var _emscripten_run_in_main_runtime_thread_js=Module[\"_emscripten_run_in_main_runtime_thread_js\"]=function(){return(_emscripten_run_in_main_runtime_thread_js=Module[\"_emscripten_run_in_main_runtime_thread_js\"]=Module[\"asm\"][\"jb\"]).apply(null,arguments)};var __emscripten_call_on_thread=Module[\"__emscripten_call_on_thread\"]=function(){return(__emscripten_call_on_thread=Module[\"__emscripten_call_on_thread\"]=Module[\"asm\"][\"kb\"]).apply(null,arguments)};var _emscripten_tls_init=Module[\"_emscripten_tls_init\"]=function(){return(_emscripten_tls_init=Module[\"_emscripten_tls_init\"]=Module[\"asm\"][\"lb\"]).apply(null,arguments)};var __emscripten_thread_init=Module[\"__emscripten_thread_init\"]=function(){return(__emscripten_thread_init=Module[\"__emscripten_thread_init\"]=Module[\"asm\"][\"mb\"]).apply(null,arguments)};var stackSave=Module[\"stackSave\"]=function(){return(stackSave=Module[\"stackSave\"]=Module[\"asm\"][\"nb\"]).apply(null,arguments)};var stackRestore=Module[\"stackRestore\"]=function(){return(stackRestore=Module[\"stackRestore\"]=Module[\"asm\"][\"ob\"]).apply(null,arguments)};var stackAlloc=Module[\"stackAlloc\"]=function(){return(stackAlloc=Module[\"stackAlloc\"]=Module[\"asm\"][\"pb\"]).apply(null,arguments)};var _emscripten_stack_set_limits=Module[\"_emscripten_stack_set_limits\"]=function(){return(_emscripten_stack_set_limits=Module[\"_emscripten_stack_set_limits\"]=Module[\"asm\"][\"qb\"]).apply(null,arguments)};var _memalign=Module[\"_memalign\"]=function(){return(_memalign=Module[\"_memalign\"]=Module[\"asm\"][\"rb\"]).apply(null,arguments)};var __emscripten_allow_main_runtime_queued_calls=Module[\"__emscripten_allow_main_runtime_queued_calls\"]=9880;var __emscripten_main_thread_futex=Module[\"__emscripten_main_thread_futex\"]=11368;Module[\"cwrap\"]=cwrap;Module[\"PThread\"]=PThread;Module[\"PThread\"]=PThread;Module[\"wasmMemory\"]=wasmMemory;Module[\"ExitStatus\"]=ExitStatus;var calledRun;function ExitStatus(status){this.name=\"ExitStatus\";this.message=\"Program terminated with exit(\"+status+\")\";this.status=status}dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function run(args){args=args||arguments_;if(runDependencies>0){return}if(ENVIRONMENT_IS_PTHREAD){readyPromiseResolve(Module);postMessage({\"cmd\":\"loaded\"});return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module[\"calledRun\"]=true;if(ABORT)return;initRuntime();preMain();readyPromiseResolve(Module);if(Module[\"onRuntimeInitialized\"])Module[\"onRuntimeInitialized\"]();postRun()}if(Module[\"setStatus\"]){Module[\"setStatus\"](\"Running...\");setTimeout(function(){setTimeout(function(){Module[\"setStatus\"](\"\")},1);doRun()},1)}else{doRun()}}Module[\"run\"]=run;function exit(status,implicit){if(implicit&&noExitRuntime&&status===0){return}if(!implicit){if(ENVIRONMENT_IS_PTHREAD){postMessage({\"cmd\":\"exitProcess\",\"returnCode\":status});throw new ExitStatus(status)}else{}}if(noExitRuntime){}else{PThread.terminateAllThreads();EXITSTATUS=status;exitRuntime();if(Module[\"onExit\"])Module[\"onExit\"](status);ABORT=true}quit_(status,new ExitStatus(status))}if(Module[\"preInit\"]){if(typeof Module[\"preInit\"]==\"function\")Module[\"preInit\"]=[Module[\"preInit\"]];while(Module[\"preInit\"].length>0){Module[\"preInit\"].pop()()}}if(ENVIRONMENT_IS_PTHREAD){noExitRuntime=false;PThread.initWorker()}run();\n\n\n return WasmBackendModuleThreadedSimd.ready\n}\n);\n})();\nif (typeof exports === 'object' && typeof module === 'object')\n module.exports = WasmBackendModuleThreadedSimd;\nelse if (typeof define === 'function' && define['amd'])\n define([], function() { return WasmBackendModuleThreadedSimd; });\nelse if (typeof exports === 'object')\n exports[\"WasmBackendModuleThreadedSimd\"] = WasmBackendModuleThreadedSimd;\n", "\nvar WasmBackendModule = (function() {\n var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined;\n if (typeof __filename !== 'undefined') _scriptDir = _scriptDir || __filename;\n return (\nfunction(WasmBackendModule) {\n WasmBackendModule = WasmBackendModule || {};\n\nvar Module=typeof WasmBackendModule!==\"undefined\"?WasmBackendModule:{};var readyPromiseResolve,readyPromiseReject;Module[\"ready\"]=new Promise(function(resolve,reject){readyPromiseResolve=resolve;readyPromiseReject=reject});var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var arguments_=[];var thisProgram=\"./this.program\";var quit_=function(status,toThrow){throw toThrow};var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;ENVIRONMENT_IS_WEB=typeof window===\"object\";ENVIRONMENT_IS_WORKER=typeof importScripts===\"function\";ENVIRONMENT_IS_NODE=typeof process===\"object\"&&typeof process.versions===\"object\"&&typeof process.versions.node===\"string\";ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var scriptDirectory=\"\";function locateFile(path){if(Module[\"locateFile\"]){return Module[\"locateFile\"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;var nodeFS;var nodePath;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require(\"path\").dirname(scriptDirectory)+\"/\"}else{scriptDirectory=__dirname+\"/\"}read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require(\"fs\");if(!nodePath)nodePath=require(\"path\");filename=nodePath[\"normalize\"](filename);return nodeFS[\"readFileSync\"](filename,binary?null:\"utf8\")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};if(process[\"argv\"].length>1){thisProgram=process[\"argv\"][1].replace(/\\\\/g,\"/\")}arguments_=process[\"argv\"].slice(2);process[\"on\"](\"uncaughtException\",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process[\"on\"](\"unhandledRejection\",abort);quit_=function(status){process[\"exit\"](status)};Module[\"inspect\"]=function(){return\"[Emscripten Module object]\"}}else if(ENVIRONMENT_IS_SHELL){if(typeof read!=\"undefined\"){read_=function shell_read(f){return read(f)}}readBinary=function readBinary(f){var data;if(typeof readbuffer===\"function\"){return new Uint8Array(readbuffer(f))}data=read(f,\"binary\");assert(typeof data===\"object\");return data};if(typeof scriptArgs!=\"undefined\"){arguments_=scriptArgs}else if(typeof arguments!=\"undefined\"){arguments_=arguments}if(typeof quit===\"function\"){quit_=function(status){quit(status)}}if(typeof print!==\"undefined\"){if(typeof console===\"undefined\")console={};console.log=print;console.warn=console.error=typeof printErr!==\"undefined\"?printErr:print}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!==\"undefined\"&&document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptDir){scriptDirectory=_scriptDir}if(scriptDirectory.indexOf(\"blob:\")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf(\"/\")+1)}else{scriptDirectory=\"\"}{read_=function(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=function(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.responseType=\"arraybuffer\";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=function(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,true);xhr.responseType=\"arraybuffer\";xhr.onload=function(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=function(title){document.title=title}}else{}var out=Module[\"print\"]||console.log.bind(console);var err=Module[\"printErr\"]||console.warn.bind(console);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=null;if(Module[\"arguments\"])arguments_=Module[\"arguments\"];if(Module[\"thisProgram\"])thisProgram=Module[\"thisProgram\"];if(Module[\"quit\"])quit_=Module[\"quit\"];var wasmBinary;if(Module[\"wasmBinary\"])wasmBinary=Module[\"wasmBinary\"];var noExitRuntime=Module[\"noExitRuntime\"]||true;if(typeof WebAssembly!==\"object\"){abort(\"no native wasm support detected\")}var wasmMemory;var ABORT=false;var EXITSTATUS;function assert(condition,text){if(!condition){abort(\"Assertion failed: \"+text)}}function getCFunc(ident){var func=Module[\"_\"+ident];assert(func,\"Cannot call unknown function \"+ident+\", make sure it is exported\");return func}function ccall(ident,returnType,argTypes,args,opts){var toC={\"string\":function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){var len=(str.length<<2)+1;ret=stackAlloc(len);stringToUTF8(str,ret,len)}return ret},\"array\":function(arr){var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType===\"string\")return UTF8ToString(ret);if(returnType===\"boolean\")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i=endIdx))++endPtr;if(endPtr-idx>16&&heap.subarray&&UTF8Decoder){return UTF8Decoder.decode(heap.subarray(idx,endPtr))}else{var str=\"\";while(idx>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):\"\"}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}function alignUp(x,multiple){if(x%multiple>0){x+=multiple-x%multiple}return x}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module[\"HEAP8\"]=HEAP8=new Int8Array(buf);Module[\"HEAP16\"]=HEAP16=new Int16Array(buf);Module[\"HEAP32\"]=HEAP32=new Int32Array(buf);Module[\"HEAPU8\"]=HEAPU8=new Uint8Array(buf);Module[\"HEAPU16\"]=HEAPU16=new Uint16Array(buf);Module[\"HEAPU32\"]=HEAPU32=new Uint32Array(buf);Module[\"HEAPF32\"]=HEAPF32=new Float32Array(buf);Module[\"HEAPF64\"]=HEAPF64=new Float64Array(buf)}var INITIAL_MEMORY=Module[\"INITIAL_MEMORY\"]||16777216;var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;__ATINIT__.push({func:function(){___wasm_call_ctors()}});function preRun(){if(Module[\"preRun\"]){if(typeof Module[\"preRun\"]==\"function\")Module[\"preRun\"]=[Module[\"preRun\"]];while(Module[\"preRun\"].length){addOnPreRun(Module[\"preRun\"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function postRun(){if(Module[\"postRun\"]){if(typeof Module[\"postRun\"]==\"function\")Module[\"postRun\"]=[Module[\"postRun\"]];while(Module[\"postRun\"].length){addOnPostRun(Module[\"postRun\"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){runDependencies++;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module[\"preloadedImages\"]={};Module[\"preloadedAudios\"]={};function abort(what){if(Module[\"onAbort\"]){Module[\"onAbort\"](what)}what+=\"\";err(what);ABORT=true;EXITSTATUS=1;what=\"abort(\"+what+\"). Build with -s ASSERTIONS=1 for more info.\";var e=new WebAssembly.RuntimeError(what);readyPromiseReject(e);throw e}function hasPrefix(str,prefix){return String.prototype.startsWith?str.startsWith(prefix):str.indexOf(prefix)===0}var dataURIPrefix=\"data:application/octet-stream;base64,\";function isDataURI(filename){return hasPrefix(filename,dataURIPrefix)}var fileURIPrefix=\"file://\";function isFileURI(filename){return hasPrefix(filename,fileURIPrefix)}var wasmBinaryFile=\"tfjs-backend-wasm.wasm\";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}else{throw\"both async and sync fetching of the wasm failed\"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch===\"function\"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){if(!response[\"ok\"]){throw\"failed to load wasm binary file at '\"+wasmBinaryFile+\"'\"}return response[\"arrayBuffer\"]()}).catch(function(){return getBinary(wasmBinaryFile)})}else{if(readAsync){return new Promise(function(resolve,reject){readAsync(wasmBinaryFile,function(response){resolve(new Uint8Array(response))},reject)})}}}return Promise.resolve().then(function(){return getBinary(wasmBinaryFile)})}function createWasm(){var info={\"a\":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module[\"asm\"]=exports;wasmMemory=Module[\"asm\"][\"g\"];updateGlobalBufferAndViews(wasmMemory.buffer);wasmTable=Module[\"asm\"][\"m\"];removeRunDependency(\"wasm-instantiate\")}addRunDependency(\"wasm-instantiate\");function receiveInstantiatedSource(output){receiveInstance(output[\"instance\"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err(\"failed to asynchronously prepare wasm: \"+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming===\"function\"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch===\"function\"){return fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err(\"wasm streaming compile failed: \"+reason);err(\"falling back to ArrayBuffer instantiation\");return instantiateArrayBuffer(receiveInstantiatedSource)})})}else{return instantiateArrayBuffer(receiveInstantiatedSource)}}if(Module[\"instantiateWasm\"]){try{var exports=Module[\"instantiateWasm\"](info,receiveInstance);return exports}catch(e){err(\"Module.instantiateWasm callback failed with error: \"+e);return false}}instantiateAsync().catch(readyPromiseReject);return{}}function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback==\"function\"){callback(Module);continue}var func=callback.func;if(typeof func===\"number\"){if(callback.arg===undefined){wasmTable.get(func)()}else{wasmTable.get(func)(callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}function _abort(){abort()}function _emscripten_memcpy_big(dest,src,num){HEAPU8.copyWithin(dest,src,src+num)}function _emscripten_get_heap_size(){return HEAPU8.length}function emscripten_realloc_buffer(size){try{wasmMemory.grow(size-buffer.byteLength+65535>>>16);updateGlobalBufferAndViews(wasmMemory.buffer);return 1}catch(e){}}function _emscripten_resize_heap(requestedSize){var oldSize=_emscripten_get_heap_size();var maxHeapSize=2147483648;if(requestedSize>maxHeapSize){return false}for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=emscripten_realloc_buffer(newSize);if(replacement){return true}}return false}var SYSCALLS={mappings:{},buffers:[null,[],[]],printChar:function(stream,curr){var buffer=SYSCALLS.buffers[stream];if(curr===0||curr===10){(stream===1?out:err)(UTF8ArrayToString(buffer,0));buffer.length=0}else{buffer.push(curr)}},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},get64:function(low,high){return low}};function _fd_close(fd){return 0}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){}function _fd_write(fd,iov,iovcnt,pnum){var num=0;for(var i=0;i>2];var len=HEAP32[iov+(i*8+4)>>2];for(var j=0;j>2]=num;return 0}var asmLibraryArg={\"a\":_abort,\"d\":_emscripten_memcpy_big,\"e\":_emscripten_resize_heap,\"f\":_fd_close,\"c\":_fd_seek,\"b\":_fd_write};var asm=createWasm();var ___wasm_call_ctors=Module[\"___wasm_call_ctors\"]=function(){return(___wasm_call_ctors=Module[\"___wasm_call_ctors\"]=Module[\"asm\"][\"h\"]).apply(null,arguments)};var _init=Module[\"_init\"]=function(){return(_init=Module[\"_init\"]=Module[\"asm\"][\"i\"]).apply(null,arguments)};var _register_tensor=Module[\"_register_tensor\"]=function(){return(_register_tensor=Module[\"_register_tensor\"]=Module[\"asm\"][\"j\"]).apply(null,arguments)};var _dispose_data=Module[\"_dispose_data\"]=function(){return(_dispose_data=Module[\"_dispose_data\"]=Module[\"asm\"][\"k\"]).apply(null,arguments)};var _dispose=Module[\"_dispose\"]=function(){return(_dispose=Module[\"_dispose\"]=Module[\"asm\"][\"l\"]).apply(null,arguments)};var _Abs=Module[\"_Abs\"]=function(){return(_Abs=Module[\"_Abs\"]=Module[\"asm\"][\"n\"]).apply(null,arguments)};var _Add=Module[\"_Add\"]=function(){return(_Add=Module[\"_Add\"]=Module[\"asm\"][\"o\"]).apply(null,arguments)};var _AddN=Module[\"_AddN\"]=function(){return(_AddN=Module[\"_AddN\"]=Module[\"asm\"][\"p\"]).apply(null,arguments)};var _ArgMax=Module[\"_ArgMax\"]=function(){return(_ArgMax=Module[\"_ArgMax\"]=Module[\"asm\"][\"q\"]).apply(null,arguments)};var _AvgPool=Module[\"_AvgPool\"]=function(){return(_AvgPool=Module[\"_AvgPool\"]=Module[\"asm\"][\"r\"]).apply(null,arguments)};var _BatchMatMul=Module[\"_BatchMatMul\"]=function(){return(_BatchMatMul=Module[\"_BatchMatMul\"]=Module[\"asm\"][\"s\"]).apply(null,arguments)};var _Ceil=Module[\"_Ceil\"]=function(){return(_Ceil=Module[\"_Ceil\"]=Module[\"asm\"][\"t\"]).apply(null,arguments)};var _ClipByValue=Module[\"_ClipByValue\"]=function(){return(_ClipByValue=Module[\"_ClipByValue\"]=Module[\"asm\"][\"u\"]).apply(null,arguments)};var _Conv2D=Module[\"_Conv2D\"]=function(){return(_Conv2D=Module[\"_Conv2D\"]=Module[\"asm\"][\"v\"]).apply(null,arguments)};var _Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=function(){return(_Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=Module[\"asm\"][\"w\"]).apply(null,arguments)};var _Cos=Module[\"_Cos\"]=function(){return(_Cos=Module[\"_Cos\"]=Module[\"asm\"][\"x\"]).apply(null,arguments)};var _CropAndResize=Module[\"_CropAndResize\"]=function(){return(_CropAndResize=Module[\"_CropAndResize\"]=Module[\"asm\"][\"y\"]).apply(null,arguments)};var _Cumsum=Module[\"_Cumsum\"]=function(){return(_Cumsum=Module[\"_Cumsum\"]=Module[\"asm\"][\"z\"]).apply(null,arguments)};var _DepthToSpace=Module[\"_DepthToSpace\"]=function(){return(_DepthToSpace=Module[\"_DepthToSpace\"]=Module[\"asm\"][\"A\"]).apply(null,arguments)};var _DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=function(){return(_DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=Module[\"asm\"][\"B\"]).apply(null,arguments)};var _Equal=Module[\"_Equal\"]=function(){return(_Equal=Module[\"_Equal\"]=Module[\"asm\"][\"C\"]).apply(null,arguments)};var _Exp=Module[\"_Exp\"]=function(){return(_Exp=Module[\"_Exp\"]=Module[\"asm\"][\"D\"]).apply(null,arguments)};var _FlipLeftRight=Module[\"_FlipLeftRight\"]=function(){return(_FlipLeftRight=Module[\"_FlipLeftRight\"]=Module[\"asm\"][\"E\"]).apply(null,arguments)};var _Floor=Module[\"_Floor\"]=function(){return(_Floor=Module[\"_Floor\"]=Module[\"asm\"][\"F\"]).apply(null,arguments)};var _FloorDiv=Module[\"_FloorDiv\"]=function(){return(_FloorDiv=Module[\"_FloorDiv\"]=Module[\"asm\"][\"G\"]).apply(null,arguments)};var _FusedBatchNorm=Module[\"_FusedBatchNorm\"]=function(){return(_FusedBatchNorm=Module[\"_FusedBatchNorm\"]=Module[\"asm\"][\"H\"]).apply(null,arguments)};var _FusedConv2D=Module[\"_FusedConv2D\"]=function(){return(_FusedConv2D=Module[\"_FusedConv2D\"]=Module[\"asm\"][\"I\"]).apply(null,arguments)};var _FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=function(){return(_FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=Module[\"asm\"][\"J\"]).apply(null,arguments)};var _Gather=Module[\"_Gather\"]=function(){return(_Gather=Module[\"_Gather\"]=Module[\"asm\"][\"K\"]).apply(null,arguments)};var _GatherNd=Module[\"_GatherNd\"]=function(){return(_GatherNd=Module[\"_GatherNd\"]=Module[\"asm\"][\"L\"]).apply(null,arguments)};var _Greater=Module[\"_Greater\"]=function(){return(_Greater=Module[\"_Greater\"]=Module[\"asm\"][\"M\"]).apply(null,arguments)};var _GreaterEqual=Module[\"_GreaterEqual\"]=function(){return(_GreaterEqual=Module[\"_GreaterEqual\"]=Module[\"asm\"][\"N\"]).apply(null,arguments)};var _LeakyRelu=Module[\"_LeakyRelu\"]=function(){return(_LeakyRelu=Module[\"_LeakyRelu\"]=Module[\"asm\"][\"O\"]).apply(null,arguments)};var _Less=Module[\"_Less\"]=function(){return(_Less=Module[\"_Less\"]=Module[\"asm\"][\"P\"]).apply(null,arguments)};var _LessEqual=Module[\"_LessEqual\"]=function(){return(_LessEqual=Module[\"_LessEqual\"]=Module[\"asm\"][\"Q\"]).apply(null,arguments)};var _Log=Module[\"_Log\"]=function(){return(_Log=Module[\"_Log\"]=Module[\"asm\"][\"R\"]).apply(null,arguments)};var _LogicalAnd=Module[\"_LogicalAnd\"]=function(){return(_LogicalAnd=Module[\"_LogicalAnd\"]=Module[\"asm\"][\"S\"]).apply(null,arguments)};var _Max=Module[\"_Max\"]=function(){return(_Max=Module[\"_Max\"]=Module[\"asm\"][\"T\"]).apply(null,arguments)};var _MaxPool=Module[\"_MaxPool\"]=function(){return(_MaxPool=Module[\"_MaxPool\"]=Module[\"asm\"][\"U\"]).apply(null,arguments)};var _Maximum=Module[\"_Maximum\"]=function(){return(_Maximum=Module[\"_Maximum\"]=Module[\"asm\"][\"V\"]).apply(null,arguments)};var _Mean=Module[\"_Mean\"]=function(){return(_Mean=Module[\"_Mean\"]=Module[\"asm\"][\"W\"]).apply(null,arguments)};var _Min=Module[\"_Min\"]=function(){return(_Min=Module[\"_Min\"]=Module[\"asm\"][\"X\"]).apply(null,arguments)};var _Minimum=Module[\"_Minimum\"]=function(){return(_Minimum=Module[\"_Minimum\"]=Module[\"asm\"][\"Y\"]).apply(null,arguments)};var _Multiply=Module[\"_Multiply\"]=function(){return(_Multiply=Module[\"_Multiply\"]=Module[\"asm\"][\"Z\"]).apply(null,arguments)};var _Neg=Module[\"_Neg\"]=function(){return(_Neg=Module[\"_Neg\"]=Module[\"asm\"][\"_\"]).apply(null,arguments)};var _NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=function(){return(_NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=Module[\"asm\"][\"$\"]).apply(null,arguments)};var _NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=function(){return(_NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=Module[\"asm\"][\"aa\"]).apply(null,arguments)};var _NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=function(){return(_NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=Module[\"asm\"][\"ba\"]).apply(null,arguments)};var _NotEqual=Module[\"_NotEqual\"]=function(){return(_NotEqual=Module[\"_NotEqual\"]=Module[\"asm\"][\"ca\"]).apply(null,arguments)};var _OneHot=Module[\"_OneHot\"]=function(){return(_OneHot=Module[\"_OneHot\"]=Module[\"asm\"][\"da\"]).apply(null,arguments)};var _PadV2=Module[\"_PadV2\"]=function(){return(_PadV2=Module[\"_PadV2\"]=Module[\"asm\"][\"ea\"]).apply(null,arguments)};var _Pow=Module[\"_Pow\"]=function(){return(_Pow=Module[\"_Pow\"]=Module[\"asm\"][\"fa\"]).apply(null,arguments)};var _Prelu=Module[\"_Prelu\"]=function(){return(_Prelu=Module[\"_Prelu\"]=Module[\"asm\"][\"ga\"]).apply(null,arguments)};var _Prod=Module[\"_Prod\"]=function(){return(_Prod=Module[\"_Prod\"]=Module[\"asm\"][\"ha\"]).apply(null,arguments)};var _RealDiv=Module[\"_RealDiv\"]=function(){return(_RealDiv=Module[\"_RealDiv\"]=Module[\"asm\"][\"ia\"]).apply(null,arguments)};var _Relu=Module[\"_Relu\"]=function(){return(_Relu=Module[\"_Relu\"]=Module[\"asm\"][\"ja\"]).apply(null,arguments)};var _Relu6=Module[\"_Relu6\"]=function(){return(_Relu6=Module[\"_Relu6\"]=Module[\"asm\"][\"ka\"]).apply(null,arguments)};var _ResizeBilinear=Module[\"_ResizeBilinear\"]=function(){return(_ResizeBilinear=Module[\"_ResizeBilinear\"]=Module[\"asm\"][\"la\"]).apply(null,arguments)};var _Reverse=Module[\"_Reverse\"]=function(){return(_Reverse=Module[\"_Reverse\"]=Module[\"asm\"][\"ma\"]).apply(null,arguments)};var _RotateWithOffset=Module[\"_RotateWithOffset\"]=function(){return(_RotateWithOffset=Module[\"_RotateWithOffset\"]=Module[\"asm\"][\"na\"]).apply(null,arguments)};var _Round=Module[\"_Round\"]=function(){return(_Round=Module[\"_Round\"]=Module[\"asm\"][\"oa\"]).apply(null,arguments)};var _Rsqrt=Module[\"_Rsqrt\"]=function(){return(_Rsqrt=Module[\"_Rsqrt\"]=Module[\"asm\"][\"pa\"]).apply(null,arguments)};var _ScatterNd=Module[\"_ScatterNd\"]=function(){return(_ScatterNd=Module[\"_ScatterNd\"]=Module[\"asm\"][\"qa\"]).apply(null,arguments)};var _SelectV2=Module[\"_SelectV2\"]=function(){return(_SelectV2=Module[\"_SelectV2\"]=Module[\"asm\"][\"ra\"]).apply(null,arguments)};var _Sigmoid=Module[\"_Sigmoid\"]=function(){return(_Sigmoid=Module[\"_Sigmoid\"]=Module[\"asm\"][\"sa\"]).apply(null,arguments)};var _Sin=Module[\"_Sin\"]=function(){return(_Sin=Module[\"_Sin\"]=Module[\"asm\"][\"ta\"]).apply(null,arguments)};var _Softmax=Module[\"_Softmax\"]=function(){return(_Softmax=Module[\"_Softmax\"]=Module[\"asm\"][\"ua\"]).apply(null,arguments)};var _Sqrt=Module[\"_Sqrt\"]=function(){return(_Sqrt=Module[\"_Sqrt\"]=Module[\"asm\"][\"va\"]).apply(null,arguments)};var _Square=Module[\"_Square\"]=function(){return(_Square=Module[\"_Square\"]=Module[\"asm\"][\"wa\"]).apply(null,arguments)};var _SquaredDifference=Module[\"_SquaredDifference\"]=function(){return(_SquaredDifference=Module[\"_SquaredDifference\"]=Module[\"asm\"][\"xa\"]).apply(null,arguments)};var _Step=Module[\"_Step\"]=function(){return(_Step=Module[\"_Step\"]=Module[\"asm\"][\"ya\"]).apply(null,arguments)};var _StridedSlice=Module[\"_StridedSlice\"]=function(){return(_StridedSlice=Module[\"_StridedSlice\"]=Module[\"asm\"][\"za\"]).apply(null,arguments)};var _Sub=Module[\"_Sub\"]=function(){return(_Sub=Module[\"_Sub\"]=Module[\"asm\"][\"Aa\"]).apply(null,arguments)};var _Sum=Module[\"_Sum\"]=function(){return(_Sum=Module[\"_Sum\"]=Module[\"asm\"][\"Ba\"]).apply(null,arguments)};var _Tanh=Module[\"_Tanh\"]=function(){return(_Tanh=Module[\"_Tanh\"]=Module[\"asm\"][\"Ca\"]).apply(null,arguments)};var _Tile=Module[\"_Tile\"]=function(){return(_Tile=Module[\"_Tile\"]=Module[\"asm\"][\"Da\"]).apply(null,arguments)};var _TopK=Module[\"_TopK\"]=function(){return(_TopK=Module[\"_TopK\"]=Module[\"asm\"][\"Ea\"]).apply(null,arguments)};var _Transpose=Module[\"_Transpose\"]=function(){return(_Transpose=Module[\"_Transpose\"]=Module[\"asm\"][\"Fa\"]).apply(null,arguments)};var __FusedMatMul=Module[\"__FusedMatMul\"]=function(){return(__FusedMatMul=Module[\"__FusedMatMul\"]=Module[\"asm\"][\"Ga\"]).apply(null,arguments)};var _malloc=Module[\"_malloc\"]=function(){return(_malloc=Module[\"_malloc\"]=Module[\"asm\"][\"Ha\"]).apply(null,arguments)};var _free=Module[\"_free\"]=function(){return(_free=Module[\"_free\"]=Module[\"asm\"][\"Ia\"]).apply(null,arguments)};var stackSave=Module[\"stackSave\"]=function(){return(stackSave=Module[\"stackSave\"]=Module[\"asm\"][\"Ja\"]).apply(null,arguments)};var stackRestore=Module[\"stackRestore\"]=function(){return(stackRestore=Module[\"stackRestore\"]=Module[\"asm\"][\"Ka\"]).apply(null,arguments)};var stackAlloc=Module[\"stackAlloc\"]=function(){return(stackAlloc=Module[\"stackAlloc\"]=Module[\"asm\"][\"La\"]).apply(null,arguments)};Module[\"cwrap\"]=cwrap;var calledRun;function ExitStatus(status){this.name=\"ExitStatus\";this.message=\"Program terminated with exit(\"+status+\")\";this.status=status}dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module[\"calledRun\"]=true;if(ABORT)return;initRuntime();preMain();readyPromiseResolve(Module);if(Module[\"onRuntimeInitialized\"])Module[\"onRuntimeInitialized\"]();postRun()}if(Module[\"setStatus\"]){Module[\"setStatus\"](\"Running...\");setTimeout(function(){setTimeout(function(){Module[\"setStatus\"](\"\")},1);doRun()},1)}else{doRun()}}Module[\"run\"]=run;if(Module[\"preInit\"]){if(typeof Module[\"preInit\"]==\"function\")Module[\"preInit\"]=[Module[\"preInit\"]];while(Module[\"preInit\"].length>0){Module[\"preInit\"].pop()()}}run();\n\n\n return WasmBackendModule.ready\n}\n);\n})();\nif (typeof exports === 'object' && typeof module === 'object')\n module.exports = WasmBackendModule;\nelse if (typeof define === 'function' && define['amd'])\n define([], function() { return WasmBackendModule; });\nelse if (typeof exports === 'object')\n exports[\"WasmBackendModule\"] = WasmBackendModule;\n", "// A port of an algorithm by Johannes Baag\u00F8e , 2010\n// http://baagoe.com/en/RandomMusings/javascript/\n// https://github.com/nquinlan/better-random-numbers-for-javascript-mirror\n// Original work is under MIT license -\n\n// Copyright (C) 2010 by Johannes Baag\u00F8e \n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n\n\n(function(global, module, define) {\n\nfunction Alea(seed) {\n var me = this, mash = Mash();\n\n me.next = function() {\n var t = 2091639 * me.s0 + me.c * 2.3283064365386963e-10; // 2^-32\n me.s0 = me.s1;\n me.s1 = me.s2;\n return me.s2 = t - (me.c = t | 0);\n };\n\n // Apply the seeding algorithm from Baagoe.\n me.c = 1;\n me.s0 = mash(' ');\n me.s1 = mash(' ');\n me.s2 = mash(' ');\n me.s0 -= mash(seed);\n if (me.s0 < 0) { me.s0 += 1; }\n me.s1 -= mash(seed);\n if (me.s1 < 0) { me.s1 += 1; }\n me.s2 -= mash(seed);\n if (me.s2 < 0) { me.s2 += 1; }\n mash = null;\n}\n\nfunction copy(f, t) {\n t.c = f.c;\n t.s0 = f.s0;\n t.s1 = f.s1;\n t.s2 = f.s2;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new Alea(seed),\n state = opts && opts.state,\n prng = xg.next;\n prng.int32 = function() { return (xg.next() * 0x100000000) | 0; }\n prng.double = function() {\n return prng() + (prng() * 0x200000 | 0) * 1.1102230246251565e-16; // 2^-53\n };\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nfunction Mash() {\n var n = 0xefc8249d;\n\n var mash = function(data) {\n data = String(data);\n for (var i = 0; i < data.length; i++) {\n n += data.charCodeAt(i);\n var h = 0.02519603282416938 * n;\n n = h >>> 0;\n h -= n;\n h *= n;\n n = h >>> 0;\n h -= n;\n n += h * 0x100000000; // 2^32\n }\n return (n >>> 0) * 2.3283064365386963e-10; // 2^-32\n };\n\n return mash;\n}\n\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.alea = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xor128\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n\n // Set up generator function.\n me.next = function() {\n var t = me.x ^ (me.x << 11);\n me.x = me.y;\n me.y = me.z;\n me.z = me.w;\n return me.w ^= (me.w >>> 19) ^ t ^ (t >>> 8);\n };\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor128 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorwow\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var t = (me.x ^ (me.x >>> 2));\n me.x = me.y; me.y = me.z; me.z = me.w; me.w = me.v;\n return (me.d = (me.d + 362437 | 0)) +\n (me.v = (me.v ^ (me.v << 4)) ^ (t ^ (t << 1))) | 0;\n };\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n me.v = 0;\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n if (k == strseed.length) {\n me.d = me.x << 10 ^ me.x >>> 4;\n }\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n t.v = f.v;\n t.d = f.d;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorwow = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorshift7\" algorithm by\n// Fran\u00E7ois Panneton and Pierre L'ecuyer:\n// \"On the Xorgshift Random Number Generators\"\n// http://saluc.engr.uconn.edu/refs/crypto/rng/panneton05onthexorshift.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n // Update xor generator.\n var X = me.x, i = me.i, t, v, w;\n t = X[i]; t ^= (t >>> 7); v = t ^ (t << 24);\n t = X[(i + 1) & 7]; v ^= t ^ (t >>> 10);\n t = X[(i + 3) & 7]; v ^= t ^ (t >>> 3);\n t = X[(i + 4) & 7]; v ^= t ^ (t << 7);\n t = X[(i + 7) & 7]; t = t ^ (t << 13); v ^= t ^ (t << 9);\n X[i] = v;\n me.i = (i + 1) & 7;\n return v;\n };\n\n function init(me, seed) {\n var j, w, X = [];\n\n if (seed === (seed | 0)) {\n // Seed state array using a 32-bit integer.\n w = X[0] = seed;\n } else {\n // Seed state using a string.\n seed = '' + seed;\n for (j = 0; j < seed.length; ++j) {\n X[j & 7] = (X[j & 7] << 15) ^\n (seed.charCodeAt(j) + X[(j + 1) & 7] << 13);\n }\n }\n // Enforce an array length of 8, not all zeroes.\n while (X.length < 8) X.push(0);\n for (j = 0; j < 8 && X[j] === 0; ++j);\n if (j == 8) w = X[7] = -1; else w = X[j];\n\n me.x = X;\n me.i = 0;\n\n // Discard an initial 256 values.\n for (j = 256; j > 0; --j) {\n me.next();\n }\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.x = f.x.slice();\n t.i = f.i;\n return t;\n}\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.x) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorshift7 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n", "// A Javascript implementaion of Richard Brent's Xorgens xor4096 algorithm.\n//\n// This fast non-cryptographic random number generator is designed for\n// use in Monte-Carlo algorithms. It combines a long-period xorshift\n// generator with a Weyl generator, and it passes all common batteries\n// of stasticial tests for randomness while consuming only a few nanoseconds\n// for each prng generated. For background on the generator, see Brent's\n// paper: \"Some long-period random number generators using shifts and xors.\"\n// http://arxiv.org/pdf/1004.3115v1.pdf\n//\n// Usage:\n//\n// var xor4096 = require('xor4096');\n// random = xor4096(1); // Seed with int32 or string.\n// assert.equal(random(), 0.1520436450538547); // (0, 1) range, 53 bits.\n// assert.equal(random.int32(), 1806534897); // signed int32, 32 bits.\n//\n// For nonzero numeric keys, this impelementation provides a sequence\n// identical to that by Brent's xorgens 3 implementaion in C. This\n// implementation also provides for initalizing the generator with\n// string seeds, or for saving and restoring the state of the generator.\n//\n// On Chrome, this prng benchmarks about 2.1 times slower than\n// Javascript's built-in Math.random().\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n var w = me.w,\n X = me.X, i = me.i, t, v;\n // Update Weyl generator.\n me.w = w = (w + 0x61c88647) | 0;\n // Update xor generator.\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n // Update Xor generator array state.\n v = X[i] = v ^ t;\n me.i = i;\n // Result is the combination.\n return (v + (w ^ (w >>> 16))) | 0;\n };\n\n function init(me, seed) {\n var t, v, i, j, w, X = [], limit = 128;\n if (seed === (seed | 0)) {\n // Numeric seeds initialize v, which is used to generates X.\n v = seed;\n seed = null;\n } else {\n // String seeds are mixed into v and X one character at a time.\n seed = seed + '\\0';\n v = 0;\n limit = Math.max(limit, seed.length);\n }\n // Initialize circular array and weyl value.\n for (i = 0, j = -32; j < limit; ++j) {\n // Put the unicode characters into the array, and shuffle them.\n if (seed) v ^= seed.charCodeAt((j + 32) % seed.length);\n // After 32 shuffles, take v as the starting w value.\n if (j === 0) w = v;\n v ^= v << 10;\n v ^= v >>> 15;\n v ^= v << 4;\n v ^= v >>> 13;\n if (j >= 0) {\n w = (w + 0x61c88647) | 0; // Weyl.\n t = (X[j & 127] ^= (v + w)); // Combine xor and weyl to init array.\n i = (0 == t) ? i + 1 : 0; // Count zeroes.\n }\n }\n // We have detected all zeroes; make the key nonzero.\n if (i >= 128) {\n X[(seed && seed.length || 0) & 127] = -1;\n }\n // Run the generator 512 times to further mix the state before using it.\n // Factoring this as a function slows the main generator, so it is just\n // unrolled here. The weyl generator is not advanced while warming up.\n i = 127;\n for (j = 4 * 128; j > 0; --j) {\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n X[i] = v ^ t;\n }\n // Storing state as object members is faster than using closure variables.\n me.w = w;\n me.X = X;\n me.i = i;\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.i = f.i;\n t.w = f.w;\n t.X = f.X.slice();\n return t;\n};\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.X) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor4096 = impl;\n}\n\n})(\n this, // window object or global\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n", "// A Javascript implementaion of the \"Tyche-i\" prng algorithm by\n// Samuel Neves and Filipe Araujo.\n// See https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var b = me.b, c = me.c, d = me.d, a = me.a;\n b = (b << 25) ^ (b >>> 7) ^ c;\n c = (c - d) | 0;\n d = (d << 24) ^ (d >>> 8) ^ a;\n a = (a - b) | 0;\n me.b = b = (b << 20) ^ (b >>> 12) ^ c;\n me.c = c = (c - d) | 0;\n me.d = (d << 16) ^ (c >>> 16) ^ a;\n return me.a = (a - b) | 0;\n };\n\n /* The following is non-inverted tyche, which has better internal\n * bit diffusion, but which is about 25% slower than tyche-i in JS.\n me.next = function() {\n var a = me.a, b = me.b, c = me.c, d = me.d;\n a = (me.a + me.b | 0) >>> 0;\n d = me.d ^ a; d = d << 16 ^ d >>> 16;\n c = me.c + d | 0;\n b = me.b ^ c; b = b << 12 ^ d >>> 20;\n me.a = a = a + b | 0;\n d = d ^ a; me.d = d = d << 8 ^ d >>> 24;\n me.c = c = c + d | 0;\n b = b ^ c;\n return me.b = (b << 7 ^ b >>> 25);\n }\n */\n\n me.a = 0;\n me.b = 0;\n me.c = 2654435769 | 0;\n me.d = 1367130551;\n\n if (seed === Math.floor(seed)) {\n // Integer seed.\n me.a = (seed / 0x100000000) | 0;\n me.b = seed | 0;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 20; k++) {\n me.b ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.a = f.a;\n t.b = f.b;\n t.c = f.c;\n t.d = f.d;\n return t;\n};\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.tychei = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "/*\nCopyright 2019 David Bau.\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n*/\n\n(function (global, pool, math) {\n//\n// The following constants are related to IEEE 754 limits.\n//\n\nvar width = 256, // each RC4 output is 0 <= x < 256\n chunks = 6, // at least six RC4 outputs for each double\n digits = 52, // there are 52 significant digits in a double\n rngname = 'random', // rngname: name for Math.random and Math.seedrandom\n startdenom = math.pow(width, chunks),\n significance = math.pow(2, digits),\n overflow = significance * 2,\n mask = width - 1,\n nodecrypto; // node.js crypto module, initialized at the bottom.\n\n//\n// seedrandom()\n// This is the seedrandom function described above.\n//\nfunction seedrandom(seed, options, callback) {\n var key = [];\n options = (options == true) ? { entropy: true } : (options || {});\n\n // Flatten the seed string or build one from local entropy if needed.\n var shortseed = mixkey(flatten(\n options.entropy ? [seed, tostring(pool)] :\n (seed == null) ? autoseed() : seed, 3), key);\n\n // Use the seed to initialize an ARC4 generator.\n var arc4 = new ARC4(key);\n\n // This function returns a random double in [0, 1) that contains\n // randomness in every bit of the mantissa of the IEEE 754 value.\n var prng = function() {\n var n = arc4.g(chunks), // Start with a numerator n < 2 ^ 48\n d = startdenom, // and denominator d = 2 ^ 48.\n x = 0; // and no 'extra last byte'.\n while (n < significance) { // Fill up all significant digits by\n n = (n + x) * width; // shifting numerator and\n d *= width; // denominator and generating a\n x = arc4.g(1); // new least-significant-byte.\n }\n while (n >= overflow) { // To avoid rounding up, before adding\n n /= 2; // last byte, shift everything\n d /= 2; // right using integer math until\n x >>>= 1; // we have exactly the desired bits.\n }\n return (n + x) / d; // Form the number within [0, 1).\n };\n\n prng.int32 = function() { return arc4.g(4) | 0; }\n prng.quick = function() { return arc4.g(4) / 0x100000000; }\n prng.double = prng;\n\n // Mix the randomness into accumulated entropy.\n mixkey(tostring(arc4.S), pool);\n\n // Calling convention: what to return as a function of prng, seed, is_math.\n return (options.pass || callback ||\n function(prng, seed, is_math_call, state) {\n if (state) {\n // Load the arc4 state from the given state if it has an S array.\n if (state.S) { copy(state, arc4); }\n // Only provide the .state method if requested via options.state.\n prng.state = function() { return copy(arc4, {}); }\n }\n\n // If called as a method of Math (Math.seedrandom()), mutate\n // Math.random because that is how seedrandom.js has worked since v1.0.\n if (is_math_call) { math[rngname] = prng; return seed; }\n\n // Otherwise, it is a newer calling convention, so return the\n // prng directly.\n else return prng;\n })(\n prng,\n shortseed,\n 'global' in options ? options.global : (this == math),\n options.state);\n}\n\n//\n// ARC4\n//\n// An ARC4 implementation. The constructor takes a key in the form of\n// an array of at most (width) integers that should be 0 <= x < (width).\n//\n// The g(count) method returns a pseudorandom integer that concatenates\n// the next (count) outputs from ARC4. Its return value is a number x\n// that is in the range 0 <= x < (width ^ count).\n//\nfunction ARC4(key) {\n var t, keylen = key.length,\n me = this, i = 0, j = me.i = me.j = 0, s = me.S = [];\n\n // The empty key [] is treated as [0].\n if (!keylen) { key = [keylen++]; }\n\n // Set up S using the standard key scheduling algorithm.\n while (i < width) {\n s[i] = i++;\n }\n for (i = 0; i < width; i++) {\n s[i] = s[j = mask & (j + key[i % keylen] + (t = s[i]))];\n s[j] = t;\n }\n\n // The \"g\" method returns the next (count) outputs as one number.\n (me.g = function(count) {\n // Using instance members instead of closure state nearly doubles speed.\n var t, r = 0,\n i = me.i, j = me.j, s = me.S;\n while (count--) {\n t = s[i = mask & (i + 1)];\n r = r * width + s[mask & ((s[i] = s[j = mask & (j + t)]) + (s[j] = t))];\n }\n me.i = i; me.j = j;\n return r;\n // For robust unpredictability, the function call below automatically\n // discards an initial batch of values. This is called RC4-drop[256].\n // See http://google.com/search?q=rsa+fluhrer+response&btnI\n })(width);\n}\n\n//\n// copy()\n// Copies internal state of ARC4 to or from a plain object.\n//\nfunction copy(f, t) {\n t.i = f.i;\n t.j = f.j;\n t.S = f.S.slice();\n return t;\n};\n\n//\n// flatten()\n// Converts an object tree to nested arrays of strings.\n//\nfunction flatten(obj, depth) {\n var result = [], typ = (typeof obj), prop;\n if (depth && typ == 'object') {\n for (prop in obj) {\n try { result.push(flatten(obj[prop], depth - 1)); } catch (e) {}\n }\n }\n return (result.length ? result : typ == 'string' ? obj : obj + '\\0');\n}\n\n//\n// mixkey()\n// Mixes a string seed into a key that is an array of integers, and\n// returns a shortened string seed that is equivalent to the result key.\n//\nfunction mixkey(seed, key) {\n var stringseed = seed + '', smear, j = 0;\n while (j < stringseed.length) {\n key[mask & j] =\n mask & ((smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++));\n }\n return tostring(key);\n}\n\n//\n// autoseed()\n// Returns an object for autoseeding, using window.crypto and Node crypto\n// module if available.\n//\nfunction autoseed() {\n try {\n var out;\n if (nodecrypto && (out = nodecrypto.randomBytes)) {\n // The use of 'out' to remember randomBytes makes tight minified code.\n out = out(width);\n } else {\n out = new Uint8Array(width);\n (global.crypto || global.msCrypto).getRandomValues(out);\n }\n return tostring(out);\n } catch (e) {\n var browser = global.navigator,\n plugins = browser && browser.plugins;\n return [+new Date, global, plugins, global.screen, tostring(pool)];\n }\n}\n\n//\n// tostring()\n// Converts an array of charcodes to a string\n//\nfunction tostring(a) {\n return String.fromCharCode.apply(0, a);\n}\n\n//\n// When seedrandom.js is loaded, we immediately mix a few bits\n// from the built-in RNG into the entropy pool. Because we do\n// not want to interfere with deterministic PRNG state later,\n// seedrandom will not call math.random on its own again after\n// initialization.\n//\nmixkey(math.random(), pool);\n\n//\n// Nodejs and AMD support: export the implementation as a module using\n// either convention.\n//\nif ((typeof module) == 'object' && module.exports) {\n module.exports = seedrandom;\n // When in node.js, try using crypto package for autoseeding.\n try {\n nodecrypto = require('crypto');\n } catch (ex) {}\n} else if ((typeof define) == 'function' && define.amd) {\n define(function() { return seedrandom; });\n} else {\n // When included as a plain script, set up Math.seedrandom global.\n math['seed' + rngname] = seedrandom;\n}\n\n\n// End anonymous scope, and pass initial values.\n})(\n // global: `self` in browsers (including strict mode and web workers),\n // otherwise `this` in Node and other environments\n (typeof self !== 'undefined') ? self : this,\n [], // pool: entropy pool starts empty\n Math // math: package containing random, pow, and seedrandom\n);\n", "// A library of seedable RNGs implemented in Javascript.\n//\n// Usage:\n//\n// var seedrandom = require('seedrandom');\n// var random = seedrandom(1); // or any seed.\n// var x = random(); // 0 <= x < 1. Every bit is random.\n// var x = random.quick(); // 0 <= x < 1. 32 bits of randomness.\n\n// alea, a 53-bit multiply-with-carry generator by Johannes Baag\u00F8e.\n// Period: ~2^116\n// Reported to pass all BigCrush tests.\nvar alea = require('./lib/alea');\n\n// xor128, a pure xor-shift generator by George Marsaglia.\n// Period: 2^128-1.\n// Reported to fail: MatrixRank and LinearComp.\nvar xor128 = require('./lib/xor128');\n\n// xorwow, George Marsaglia's 160-bit xor-shift combined plus weyl.\n// Period: 2^192-2^32\n// Reported to fail: CollisionOver, SimpPoker, and LinearComp.\nvar xorwow = require('./lib/xorwow');\n\n// xorshift7, by Fran\u00E7ois Panneton and Pierre L'ecuyer, takes\n// a different approach: it adds robustness by allowing more shifts\n// than Marsaglia's original three. It is a 7-shift generator\n// with 256 bits, that passes BigCrush with no systmatic failures.\n// Period 2^256-1.\n// No systematic BigCrush failures reported.\nvar xorshift7 = require('./lib/xorshift7');\n\n// xor4096, by Richard Brent, is a 4096-bit xor-shift with a\n// very long period that also adds a Weyl generator. It also passes\n// BigCrush with no systematic failures. Its long period may\n// be useful if you have many generators and need to avoid\n// collisions.\n// Period: 2^4128-2^32.\n// No systematic BigCrush failures reported.\nvar xor4096 = require('./lib/xor4096');\n\n// Tyche-i, by Samuel Neves and Filipe Araujo, is a bit-shifting random\n// number generator derived from ChaCha, a modern stream cipher.\n// https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n// Period: ~2^127\n// No systematic BigCrush failures reported.\nvar tychei = require('./lib/tychei');\n\n// The original ARC4-based prng included in this library.\n// Period: ~2^1600\nvar sr = require('./seedrandom');\n\nsr.alea = alea;\nsr.xor128 = xor128;\nsr.xorwow = xorwow;\nsr.xorshift7 = xorshift7;\nsr.xor4096 = xor4096;\nsr.tychei = tychei;\n\nmodule.exports = sr;\n", "", null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, "export const wasmWorkerContents = 'var Module={};function threadPrintErr(){var text=Array.prototype.slice.call(arguments).join(\" \");console.error(text)}function threadAlert(){var text=Array.prototype.slice.call(arguments).join(\" \");postMessage({cmd:\"alert\",text:text,threadId:Module[\"_pthread_self\"]()})}var err=threadPrintErr;this.alert=threadAlert;Module[\"instantiateWasm\"]=function(info,receiveInstance){var instance=new WebAssembly.Instance(Module[\"wasmModule\"],info);Module[\"wasmModule\"]=null;receiveInstance(instance);return instance.exports};function moduleLoaded(){}this.onmessage=function(e){try{if(e.data.cmd===\"load\"){Module[\"wasmModule\"]=e.data.wasmModule;Module[\"wasmMemory\"]=e.data.wasmMemory;Module[\"buffer\"]=Module[\"wasmMemory\"].buffer;Module[\"ENVIRONMENT_IS_PTHREAD\"]=true;if(typeof e.data.urlOrBlob===\"string\"){importScripts(e.data.urlOrBlob)}else{var objectUrl=URL.createObjectURL(e.data.urlOrBlob);importScripts(objectUrl);URL.revokeObjectURL(objectUrl)}WasmBackendModuleThreadedSimd(Module).then(function(instance){Module=instance;moduleLoaded()})}else if(e.data.cmd===\"objectTransfer\"){Module[\"PThread\"].receiveObjectTransfer(e.data)}else if(e.data.cmd===\"run\"){Module[\"__performance_now_clock_drift\"]=performance.now()-e.data.time;Module[\"__emscripten_thread_init\"](e.data.threadInfoStruct,0,0);var max=e.data.stackBase;var top=e.data.stackBase+e.data.stackSize;Module[\"establishStackSpace\"](top,max);Module[\"_emscripten_tls_init\"]();Module[\"PThread\"].receiveObjectTransfer(e.data);Module[\"PThread\"].setThreadStatus(Module[\"_pthread_self\"](),1);try{var result=Module[\"invokeEntryPoint\"](e.data.start_routine,e.data.arg);if(!Module[\"getNoExitRuntime\"]())Module[\"PThread\"].threadExit(result)}catch(ex){if(ex===\"Canceled!\"){Module[\"PThread\"].threadCancel()}else if(ex!=\"unwind\"){if(ex instanceof Module[\"ExitStatus\"]){if(Module[\"getNoExitRuntime\"]()){}else{Module[\"PThread\"].threadExit(ex.status)}}else{Module[\"PThread\"].threadExit(-2);throw ex}}}}else if(e.data.cmd===\"cancel\"){if(Module[\"_pthread_self\"]()){Module[\"PThread\"].threadCancel()}}else if(e.data.target===\"setimmediate\"){}else if(e.data.cmd===\"processThreadQueue\"){if(Module[\"_pthread_self\"]()){Module[\"_emscripten_current_thread_process_queued_calls\"]()}}else{err(\"worker.js received unknown command \"+e.data.cmd);err(e.data)}}catch(ex){err(\"worker.js onmessage() captured an uncaught exception: \"+ex);if(ex&&ex.stack)err(ex.stack);throw ex}};if(typeof process===\"object\"&&typeof process.versions===\"object\"&&typeof process.versions.node===\"string\"){self={location:{href:__filename}};var onmessage=this.onmessage;var nodeWorkerThreads=require(\"worker_threads\");global.Worker=nodeWorkerThreads.Worker;var parentPort=nodeWorkerThreads.parentPort;parentPort.on(\"message\",function(data){onmessage({data:data})});var nodeFS=require(\"fs\");var nodeRead=function(filename){return nodeFS.readFileSync(filename,\"utf8\")};function globalEval(x){global.require=require;global.Module=Module;eval.call(null,x)}importScripts=function(f){globalEval(nodeRead(f))};postMessage=function(msg){parentPort.postMessage(msg)};if(typeof performance===\"undefined\"){performance={now:function(){return Date.now()}}}}';", null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, "// wrapper to load tfjs in a single place so version can be changed quickly\n\n// simplified\n// { modules: 1061, moduleBytes: 3772720, outputBytes: 1531035 }\n\n// export * from '@tensorflow/tfjs/dist/index.js';\n// export * from '@tensorflow/tfjs-backend-wasm';\n\n// modular\n// { modules: 1064, moduleBytes: 3793219, outputBytes: 1535600 }\n\n// get versions of all packages.\nimport * as packageBundle from '@tensorflow/tfjs/package.json';\nimport * as packageCore from '@tensorflow/tfjs-core/package.json';\nimport * as packageData from '@tensorflow/tfjs-data/package.json';\nimport * as packageLayers from '@tensorflow/tfjs-layers/package.json';\nimport * as packageConverter from '@tensorflow/tfjs-converter/package.json';\n// for backends, get version from source so it can register backend during import\nimport { version_cpu } from '@tensorflow/tfjs-backend-cpu/dist/index.js';\nimport { version_webgl } from '@tensorflow/tfjs-backend-webgl/dist/index.js';\nimport { version_wasm } from '@tensorflow/tfjs-backend-wasm/dist/index.js';\n\n// export all\nexport * from '@tensorflow/tfjs-core/dist/index.js';\nexport * from '@tensorflow/tfjs-layers/dist/index.js';\nexport * from '@tensorflow/tfjs-converter/dist/index.js';\nexport * as data from '@tensorflow/tfjs-data/dist/index.js';\nexport * from '@tensorflow/tfjs-backend-cpu/dist/index.js';\nexport * from '@tensorflow/tfjs-backend-webgl/dist/index.js';\nexport * from '@tensorflow/tfjs-backend-wasm/dist/index.js';\n\n// export versions\nexport const version = {\n tfjs: packageBundle.version,\n 'tfjs-core': packageCore.version,\n 'tfjs-data': packageData.version,\n 'tfjs-layers': packageLayers.version,\n 'tfjs-converter': packageConverter.version,\n 'tfjs-backend-cpu': version_cpu,\n 'tfjs-backend-webgl': version_webgl,\n 'tfjs-backend-wasm': version_wasm,\n};\n", "import { log } from '../helpers';\nimport * as tf from '../../dist/tfjs.esm.js';\n\nexport const config = {\n name: 'humangl',\n priority: 99,\n canvas: null,\n gl: null,\n width: 1024,\n height: 1024,\n webGLattr: { // https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.2\n alpha: false,\n antialias: false,\n premultipliedAlpha: false,\n preserveDrawingBuffer: false,\n depth: false,\n stencil: false,\n failIfMajorPerformanceCaveat: false,\n desynchronized: true,\n },\n};\n\nexport function register(): void {\n if (!tf.findBackend(config.name)) {\n log('backend registration:', config.name);\n try {\n // @ts-ignore\n config.canvas = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(config.width, config.height) : document.createElement('canvas');\n } catch (err) {\n log('error: cannot create canvas:', err);\n return;\n }\n try {\n // @ts-ignore\n config.gl = config.canvas.getContext('webgl2', config.webGLattr);\n } catch (err) {\n log('error: cannot get WebGL2 context:', err);\n return;\n }\n try {\n tf.setWebGLContext(2, config.gl);\n } catch (err) {\n log('error: cannot set WebGL2 context:', err);\n return;\n }\n try {\n const ctx = new tf.GPGPUContext(config.gl);\n tf.registerBackend(config.name, () => new tf.MathBackendWebGL(ctx), config.priority);\n } catch (err) {\n log('error: cannot register WebGL backend:', err);\n return;\n }\n try {\n const kernels = tf.getKernelsForBackend('webgl');\n kernels.forEach((kernelConfig) => {\n const newKernelConfig = { ...kernelConfig, backendName: config.name };\n tf.registerKernel(newKernelConfig);\n });\n } catch (err) {\n log('error: cannot update WebGL backend registration:', err);\n return;\n }\n try {\n tf.ENV.set('WEBGL_VERSION', 2);\n // @ts-ignore\n // tf.ENV.set('WEBGL_MAX_TEXTURE_SIZE', config.gl.getParameter(config.gl.MAX_TEXTURE_SIZE));\n // tf.ENV.set('WEBGL_FORCE_F16_TEXTURES', true);\n // tf.ENV.set('WEBGL_PACK_DEPTHWISECONV', true);\n } catch (err) {\n log('error: cannot set WebGL backend flags:', err);\n return;\n }\n log('backend registered:', config.name);\n }\n}\n", "import { log } from '../helpers';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile';\n\nlet model;\nlet last = { age: 0 };\nlet skipped = Number.MAX_SAFE_INTEGER;\n\nexport async function load(config) {\n if (!model) {\n model = await tf.loadGraphModel(config.face.age.modelPath);\n if (config.debug) log(`load model: ${config.face.age.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return model;\n}\n\nexport async function predict(image, config) {\n if (!model) return null;\n if ((skipped < config.face.age.skipFrames) && config.videoOptimized && last.age && (last.age > 0)) {\n skipped++;\n return last;\n }\n if (config.videoOptimized) skipped = 0;\n else skipped = Number.MAX_SAFE_INTEGER;\n return new Promise(async (resolve) => {\n const resize = tf.image.resizeBilinear(image, [model.inputs[0].shape[2], model.inputs[0].shape[1]], false);\n const enhance = tf.mul(resize, [255.0]);\n tf.dispose(resize);\n\n let ageT;\n const obj = { age: 0 };\n\n if (!config.profile) {\n if (config.face.age.enabled) ageT = await model.predict(enhance);\n } else {\n const profileAge = config.face.age.enabled ? await tf.profile(() => model.predict(enhance)) : {};\n ageT = profileAge.result.clone();\n profileAge.result.dispose();\n profile.run('age', profileAge);\n }\n enhance.dispose();\n\n if (ageT) {\n const data = ageT.dataSync();\n obj.age = Math.trunc(10 * data[0]) / 10;\n }\n ageT.dispose();\n\n last = obj;\n resolve(obj);\n });\n}\n", "import { log } from './helpers';\n\nexport const data = {};\n\nexport function run(name: string, raw: any): void {\n if (!raw || !raw.kernels) return;\n const maxResults = 5;\n const time = raw.kernels\n .filter((a) => a.kernelTimeMs > 0)\n .reduce((a, b) => a += b.kernelTimeMs, 0);\n const slowest = raw.kernels\n .map((a, i) => { a.id = i; return a; })\n .filter((a) => a.kernelTimeMs > 0)\n .sort((a, b) => b.kernelTimeMs - a.kernelTimeMs);\n const largest = raw.kernels\n .map((a, i) => { a.id = i; return a; })\n .filter((a) => a.totalBytesSnapshot > 0)\n .sort((a, b) => b.totalBytesSnapshot - a.totalBytesSnapshot);\n if (slowest.length > maxResults) slowest.length = maxResults;\n if (largest.length > maxResults) largest.length = maxResults;\n const res = { newBytes: raw.newBytes, newTensors: raw.newTensors, peakBytes: raw.peakBytes, numKernelOps: raw.kernels.length, timeKernelOps: time, slowestKernelOps: slowest, largestKernelOps: largest };\n data[name] = res;\n log('Human profiler', name, res);\n}\n", "import { log } from '../helpers';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile';\n\nlet model;\nlet last = { gender: '' };\nlet skipped = Number.MAX_SAFE_INTEGER;\nlet alternative = false;\n\n// tuning values\nconst rgb = [0.2989, 0.5870, 0.1140]; // factors for red/green/blue colors when converting to grayscale\n\nexport async function load(config) {\n if (!model) {\n model = await tf.loadGraphModel(config.face.gender.modelPath);\n alternative = model.inputs[0].shape[3] === 1;\n if (config.debug) log(`load model: ${config.face.gender.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return model;\n}\n\nexport async function predict(image, config) {\n if (!model) return null;\n if ((skipped < config.face.gender.skipFrames) && config.videoOptimized && last.gender !== '') {\n skipped++;\n return last;\n }\n if (config.videoOptimized) skipped = 0;\n else skipped = Number.MAX_SAFE_INTEGER;\n return new Promise(async (resolve) => {\n const resize = tf.image.resizeBilinear(image, [model.inputs[0].shape[2], model.inputs[0].shape[1]], false);\n let enhance;\n if (alternative) {\n enhance = tf.tidy(() => {\n const [red, green, blue] = tf.split(resize, 3, 3);\n const redNorm = tf.mul(red, rgb[0]);\n const greenNorm = tf.mul(green, rgb[1]);\n const blueNorm = tf.mul(blue, rgb[2]);\n const grayscale = tf.addN([redNorm, greenNorm, blueNorm]);\n const normalize = grayscale.sub(0.5).mul(2); // range grayscale:-1..1\n return normalize;\n });\n } else {\n enhance = tf.mul(resize, [255.0]); // range RGB:0..255\n }\n tf.dispose(resize);\n\n let genderT;\n const obj = { gender: '', confidence: 0 };\n\n if (!config.profile) {\n if (config.face.gender.enabled) genderT = await model.predict(enhance);\n } else {\n const profileGender = config.face.gender.enabled ? await tf.profile(() => model.predict(enhance)) : {};\n genderT = profileGender.result.clone();\n profileGender.result.dispose();\n profile.run('gender', profileGender);\n }\n enhance.dispose();\n\n if (genderT) {\n if (!Array.isArray(genderT)) {\n const data = genderT.dataSync();\n if (alternative) {\n // returns two values 0..1, bigger one is prediction\n if (data[0] > config.face.gender.minConfidence || data[1] > config.face.gender.minConfidence) {\n obj.gender = data[0] > data[1] ? 'female' : 'male';\n obj.confidence = data[0] > data[1] ? (Math.trunc(100 * data[0]) / 100) : (Math.trunc(100 * data[1]) / 100);\n }\n } else {\n // returns one value 0..1, .5 is prediction threshold\n const confidence = Math.trunc(200 * Math.abs((data[0] - 0.5))) / 100;\n if (confidence > config.face.gender.minConfidence) {\n obj.gender = data[0] <= 0.5 ? 'female' : 'male';\n obj.confidence = Math.min(0.99, confidence);\n }\n }\n genderT.dispose();\n } else {\n const gender = genderT[0].dataSync();\n const confidence = Math.trunc(200 * Math.abs((gender[0] - 0.5))) / 100;\n if (confidence > config.face.gender.minConfidence) {\n obj.gender = gender[0] <= 0.5 ? 'female' : 'male';\n obj.confidence = Math.min(0.99, confidence);\n }\n /*\n let age = genderT[1].argMax(1).dataSync()[0];\n const all = genderT[1].dataSync();\n age = Math.round(all[age - 1] > all[age + 1] ? 10 * age - 100 * all[age - 1] : 10 * age + 100 * all[age + 1]) / 10;\n const descriptor = genderT[1].dataSync();\n */\n genderT.forEach((t) => tf.dispose(t));\n }\n }\n last = obj;\n resolve(obj);\n });\n}\n", "import { log } from '../helpers';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile';\n\nconst annotations = ['angry', 'disgust', 'fear', 'happy', 'sad', 'surprise', 'neutral'];\nlet model;\nlet last: Array<{ score: number, emotion: string }> = [];\nlet skipped = Number.MAX_SAFE_INTEGER;\n\n// tuning values\nconst rgb = [0.2989, 0.5870, 0.1140]; // factors for red/green/blue colors when converting to grayscale\n\nexport async function load(config) {\n if (!model) {\n model = await tf.loadGraphModel(config.face.emotion.modelPath);\n if (config.debug) log(`load model: ${config.face.emotion.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return model;\n}\n\nexport async function predict(image, config) {\n if (!model) return null;\n if ((skipped < config.face.emotion.skipFrames) && config.videoOptimized && (last.length > 0)) {\n skipped++;\n return last;\n }\n if (config.videoOptimized) skipped = 0;\n else skipped = Number.MAX_SAFE_INTEGER;\n return new Promise(async (resolve) => {\n const resize = tf.image.resizeBilinear(image, [model.inputs[0].shape[2], model.inputs[0].shape[1]], false);\n const [red, green, blue] = tf.split(resize, 3, 3);\n resize.dispose();\n // weighted rgb to grayscale: https://www.mathworks.com/help/matlab/ref/rgb2gray.html\n const redNorm = tf.mul(red, rgb[0]);\n const greenNorm = tf.mul(green, rgb[1]);\n const blueNorm = tf.mul(blue, rgb[2]);\n red.dispose();\n green.dispose();\n blue.dispose();\n const grayscale = tf.addN([redNorm, greenNorm, blueNorm]);\n redNorm.dispose();\n greenNorm.dispose();\n blueNorm.dispose();\n const normalize = tf.tidy(() => grayscale.sub(0.5).mul(2));\n grayscale.dispose();\n const obj: Array<{ score: number, emotion: string }> = [];\n if (config.face.emotion.enabled) {\n let data;\n if (!config.profile) {\n const emotionT = await model.predict(normalize); // result is already in range 0..1, no need for additional activation\n data = emotionT.dataSync();\n tf.dispose(emotionT);\n } else {\n const profileData = await tf.profile(() => model.predict(normalize));\n data = profileData.result.dataSync();\n profileData.result.dispose();\n profile.run('emotion', profileData);\n }\n for (let i = 0; i < data.length; i++) {\n if (data[i] > config.face.emotion.minConfidence) obj.push({ score: Math.min(0.99, Math.trunc(100 * data[i]) / 100), emotion: annotations[i] });\n }\n obj.sort((a, b) => b.score - a.score);\n }\n normalize.dispose();\n last = obj;\n resolve(obj);\n });\n}\n", "import { log } from '../helpers';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile';\n\ntype Tensor = typeof tf.Tensor;\ntype DB = Array<{ name: string, source: string, embedding: number[] }>;\nlet model;\n\nexport async function load(config) {\n if (!model) {\n model = await tf.loadGraphModel(config.face.embedding.modelPath);\n if (config.debug) log(`load model: ${config.face.embedding.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return model;\n}\n\nexport function similarity(embedding1, embedding2, order = 2): number {\n if (!embedding1 || !embedding2) return 0;\n if (embedding1?.length === 0 || embedding2?.length === 0) return 0;\n if (embedding1?.length !== embedding2?.length) return 0;\n // general minkowski distance, euclidean distance is limited case where order is 2\n const distance = embedding1\n .map((val, i) => (Math.abs(embedding1[i] - embedding2[i]) ** order)) // distance squared\n .reduce((sum, now) => (sum + now), 0) // sum all distances\n ** (1 / order); // get root of\n const res = Math.max(Math.trunc(1000 * (1 - distance)) / 1000, 0);\n return res;\n}\n\nexport function match(embedding: Array, db: DB, threshold = 0) {\n let best = { similarity: 0, name: '', source: '', embedding: [] as number[] };\n if (!embedding || !db || !Array.isArray(embedding) || !Array.isArray(db)) return best;\n for (const f of db) {\n if (f.embedding && f.name) {\n const perc = similarity(embedding, f.embedding);\n if (perc > threshold && perc > best.similarity) best = { ...f, similarity: perc };\n }\n }\n return best;\n}\n\nexport function enhance(input): Tensor {\n const image = tf.tidy(() => {\n // input received from detector is already normalized to 0..1\n // input is also assumed to be straightened\n // const data = tf.image.resizeBilinear(input, [model.inputs[0].shape[2], model.inputs[0].shape[1]], false); // just resize to fit the embedding model\n // do a tight crop of image and resize it to fit the model\n const box = [[0.05, 0.15, 0.85, 0.85]]; // empyrical values for top, left, bottom, right\n const tensor = input.image || input.tensor;\n if (!(tensor instanceof tf.Tensor)) return null;\n const crop = (tensor.shape.length === 3)\n ? tf.image.cropAndResize(tf.expandDims(tensor, 0), box, [0], [model.inputs[0].shape[2], model.inputs[0].shape[1]]) // add batch dimension if missing\n : tf.image.cropAndResize(tensor, box, [0], [model.inputs[0].shape[2], model.inputs[0].shape[1]]);\n\n // convert to black&white to avoid colorization impact\n const rgb = [0.2989, 0.5870, 0.1140]; // factors for red/green/blue colors when converting to grayscale: https://www.mathworks.com/help/matlab/ref/rgb2gray.html\n const [red, green, blue] = tf.split(crop, 3, 3);\n const redNorm = tf.mul(red, rgb[0]);\n const greenNorm = tf.mul(green, rgb[1]);\n const blueNorm = tf.mul(blue, rgb[2]);\n const grayscale = tf.addN([redNorm, greenNorm, blueNorm]);\n const merge = tf.stack([grayscale, grayscale, grayscale], 3).squeeze(4);\n\n /*\n // optional increase image contrast\n // or do it per-channel so mean is done on each channel\n // or do it based on histogram\n const mean = merge.mean();\n const factor = 5;\n const contrast = merge.sub(mean).mul(factor).add(mean);\n */\n\n // normalize brightness from 0..1\n const darken = merge.sub(merge.min());\n const lighten = darken.div(darken.max());\n\n return lighten;\n });\n return image;\n}\n\nexport async function predict(input, config): Promise {\n if (!model) return [];\n return new Promise(async (resolve) => {\n // let data: Array<[]> = [];\n let data: Array = [];\n if (config.face.embedding.enabled) {\n const image = enhance(input);\n if (!config.profile) {\n data = tf.tidy(() => {\n /*\n // if needed convert from NHWC to NCHW\n const nchw = image.transpose([3, 0, 1, 2]);\n */\n\n const res = model.predict(image);\n\n /*\n // optionally do it twice with flipped image and average results\n const res1 = model.predict(image);\n const flipped = tf.image.flipLeftRight(image);\n const res2 = model.predict(flipped);\n const merge = tf.stack([res1, res2], 2).squeeze();\n const res = reshape.logSumExp(1);\n */\n\n /*\n // optional normalize outputs with l2 normalization\n const scaled = tf.tidy(() => {\n const l2 = res.norm('euclidean');\n const scale = res.div(l2);\n return scale;\n });\n */\n\n // optional reduce feature vector complexity\n const reshape = res.reshape([128, 2]); // split 256 vectors into 128 x 2\n const reduce = reshape.logSumExp(1); // reduce 2nd dimension by calculating logSumExp on it\n\n const output: Array = reduce.dataSync();\n return [...output]; // convert typed array to simple array\n });\n } else {\n const profileData = await tf.profile(() => model.predict({ img_inputs: image }));\n data = [...profileData.result.dataSync()];\n profileData.result.dispose();\n profile.run('emotion', profileData);\n }\n tf.dispose(image);\n }\n resolve(data);\n });\n}\n\n/*\ngit clone https://github.com/becauseofAI/MobileFace\ncd MobileFace/MobileFace_Identification\nmmconvert --srcFramework mxnet --inputWeight MobileFace_Identification_V3-0000.params --inputNetwork MobileFace_Identification_V3-symbol.json --inputShape 3,112,112 --dstFramework tensorflow --outputModel saved\nsaved_model_cli show --dir saved/\ntensorflowjs_converter --input_format tf_saved_model --output_format tfjs_graph_model --saved_model_tags train saved/ graph/\n~/dev/detector/signature.js graph/\n2021-03-12 08:25:12 DATA: created on: 2021-03-12T13:17:11.960Z\n2021-03-12 08:25:12 INFO: graph model: /home/vlado/dev/face/MobileFace/MobileFace_Identification/graph/model.json\n2021-03-12 08:25:12 INFO: size: { unreliable: true, numTensors: 75, numDataBuffers: 75, numBytes: 2183192 }\n2021-03-12 08:25:12 INFO: model inputs based on signature\n2021-03-12 08:25:12 INFO: model outputs based on signature\n2021-03-12 08:25:12 DATA: inputs: [ { name: 'data:0', dtype: 'DT_FLOAT', shape: [ -1, 112, 112, 3, [length]: 4 ] }, [length]: 1 ]\n2021-03-12 08:25:12 DATA: outputs: [ { id: 0, name: 'batchnorm0/add_1:0', dytpe: 'DT_FLOAT', shape: [ -1, 256, [length]: 2 ] }, [length]: 1 ]\n*/\n", "import { log } from '../helpers';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile';\n\nlet model;\nlet last = { age: 0 };\nlet skipped = Number.MAX_SAFE_INTEGER;\n\ntype Tensor = typeof tf.Tensor;\ntype DB = Array<{ name: string, source: string, embedding: number[] }>;\n\nexport async function load(config) {\n if (!model) {\n model = await tf.loadGraphModel(config.face.description.modelPath);\n if (config.debug) log(`load model: ${config.face.description.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return model;\n}\n\nexport function similarity(embedding1, embedding2, order = 2): number {\n if (!embedding1 || !embedding2) return 0;\n if (embedding1?.length === 0 || embedding2?.length === 0) return 0;\n if (embedding1?.length !== embedding2?.length) return 0;\n // general minkowski distance, euclidean distance is limited case where order is 2\n const distance = 4.0 * embedding1\n .map((val, i) => (Math.abs(embedding1[i] - embedding2[i]) ** order)) // distance squared\n .reduce((sum, now) => (sum + now), 0) // sum all distances\n ** (1 / order); // get root of\n const res = Math.max(0, 100 - distance) / 100.0;\n return res;\n}\n\nexport function match(embedding: Array, db: DB, threshold = 0) {\n let best = { similarity: 0, name: '', source: '', embedding: [] as number[] };\n if (!embedding || !db || !Array.isArray(embedding) || !Array.isArray(db)) return best;\n for (const f of db) {\n if (f.embedding && f.name) {\n const perc = similarity(embedding, f.embedding);\n if (perc > threshold && perc > best.similarity) best = { ...f, similarity: perc };\n }\n }\n return best;\n}\n\nexport function enhance(input): Tensor {\n const image = tf.tidy(() => {\n // input received from detector is already normalized to 0..1\n // input is also assumed to be straightened\n const tensor = input.image || input.tensor || input;\n if (!(tensor instanceof tf.Tensor)) return null;\n // do a tight crop of image and resize it to fit the model\n const box = [[0.05, 0.15, 0.85, 0.85]]; // empyrical values for top, left, bottom, right\n const crop = (tensor.shape.length === 3)\n ? tf.image.cropAndResize(tf.expandDims(tensor, 0), box, [0], [model.inputs[0].shape[2], model.inputs[0].shape[1]]) // add batch dimension if missing\n : tf.image.cropAndResize(tensor, box, [0], [model.inputs[0].shape[2], model.inputs[0].shape[1]]);\n // const crop = tf.image.resizeBilinear(tensor, [model.inputs[0].shape[2], model.inputs[0].shape[1]], false); // just resize to fit the embedding model\n\n /*\n // convert to black&white to avoid colorization impact\n const rgb = [0.2989, 0.5870, 0.1140]; // factors for red/green/blue colors when converting to grayscale: https://www.mathworks.com/help/matlab/ref/rgb2gray.html\n const [red, green, blue] = tf.split(crop, 3, 3);\n const redNorm = tf.mul(red, rgb[0]);\n const greenNorm = tf.mul(green, rgb[1]);\n const blueNorm = tf.mul(blue, rgb[2]);\n const grayscale = tf.addN([redNorm, greenNorm, blueNorm]);\n const merge = tf.stack([grayscale, grayscale, grayscale], 3).squeeze(4);\n */\n\n /*\n // optional increase image contrast\n // or do it per-channel so mean is done on each channel\n // or do it based on histogram\n const mean = merge.mean();\n const factor = 5;\n const contrast = merge.sub(mean).mul(factor).add(mean);\n */\n /*\n // normalize brightness from 0..1\n const darken = crop.sub(crop.min());\n const lighten = darken.div(darken.max());\n */\n const norm = crop.mul(255);\n\n return norm;\n });\n return image;\n}\n\nexport async function predict(image, config) {\n if (!model) return null;\n if ((skipped < config.face.description.skipFrames) && config.videoOptimized && last.age && (last.age > 0)) {\n skipped++;\n return last;\n }\n if (config.videoOptimized) skipped = 0;\n else skipped = Number.MAX_SAFE_INTEGER;\n return new Promise(async (resolve) => {\n // const resize = tf.image.resizeBilinear(image, [model.inputs[0].shape[2], model.inputs[0].shape[1]], false);\n // const enhanced = tf.mul(resize, [255.0]);\n // tf.dispose(resize);\n const enhanced = enhance(image);\n\n let resT;\n const obj = {\n age: 0,\n gender: 'unknown',\n genderConfidence: 0,\n descriptor: [] };\n\n if (!config.profile) {\n if (config.face.description.enabled) resT = await model.predict(enhanced);\n } else {\n const profileAge = config.face.description.enabled ? await tf.profile(() => model.predict(enhanced)) : {};\n resT = profileAge.result.clone();\n profileAge.result.dispose();\n profile.run('age', profileAge);\n }\n tf.dispose(enhanced);\n\n if (resT) {\n tf.tidy(() => {\n const gender = resT.find((t) => t.shape[1] === 1).dataSync();\n const confidence = Math.trunc(200 * Math.abs((gender[0] - 0.5))) / 100;\n if (confidence > config.face.gender.minConfidence) {\n obj.gender = gender[0] <= 0.5 ? 'female' : 'male';\n obj.genderConfidence = Math.min(0.99, confidence);\n }\n const age = resT.find((t) => t.shape[1] === 100).argMax(1).dataSync()[0];\n const all = resT.find((t) => t.shape[1] === 100).dataSync();\n obj.age = Math.round(all[age - 1] > all[age + 1] ? 10 * age - 100 * all[age - 1] : 10 * age + 100 * all[age + 1]) / 10;\n\n const desc = resT.find((t) => t.shape[1] === 1024);\n // const reshape = desc.reshape([128, 8]);\n // const reduce = reshape.logSumExp(1); // reduce 2nd dimension by calculating logSumExp on it\n\n obj.descriptor = [...desc.dataSync()];\n });\n resT.forEach((t) => tf.dispose(t));\n }\n\n last = obj;\n resolve(obj);\n });\n}\n", "import { log, now } from './helpers';\nimport * as tf from '../dist/tfjs.esm.js';\nimport * as age from './age/age';\nimport * as gender from './gender/gender';\nimport * as emotion from './emotion/emotion';\nimport * as embedding from './embedding/embedding';\nimport * as faceres from './faceres/faceres';\n\ntype Tensor = typeof tf.Tensor;\n\nconst calculateFaceAngle = (mesh): { roll: number | null, yaw: number | null, pitch: number | null } => {\n if (!mesh || mesh.length < 300) return { roll: null, yaw: null, pitch: null };\n const radians = (a1, a2, b1, b2) => Math.atan2(b2 - a2, b1 - a1);\n // eslint-disable-next-line no-unused-vars, @typescript-eslint/no-unused-vars\n const degrees = (theta) => Math.abs(((theta * 180) / Math.PI) % 360);\n const angle = {\n // values are in radians in range of -pi/2 to pi/2 which is -90 to +90 degrees\n // value of 0 means center\n // roll is face lean left/right\n roll: radians(mesh[33][0], mesh[33][1], mesh[263][0], mesh[263][1]), // looking at x,y of outside corners of leftEye and rightEye\n // yaw is face turn left/right\n yaw: radians(mesh[33][0], mesh[33][2], mesh[263][0], mesh[263][2]), // looking at x,z of outside corners of leftEye and rightEye\n // pitch is face move up/down\n pitch: radians(mesh[10][1], mesh[10][2], mesh[152][1], mesh[152][2]), // looking at y,z of top and bottom points of the face\n };\n return angle;\n};\n\nexport const detectFace = async (parent, input): Promise => {\n // run facemesh, includes blazeface and iris\n // eslint-disable-next-line no-async-promise-executor\n let timeStamp;\n let ageRes;\n let genderRes;\n let emotionRes;\n let embeddingRes;\n let descRes;\n const faceRes: Array<{\n confidence: number,\n boxConfidence: number,\n faceConfidence: number,\n box: [number, number, number, number],\n mesh: Array<[number, number, number]>\n meshRaw: Array<[number, number, number]>\n boxRaw: [number, number, number, number],\n annotations: Array<{ part: string, points: Array<[number, number, number]>[] }>,\n age: number,\n gender: string,\n genderConfidence: number,\n emotion: string,\n embedding: number[],\n iris: number,\n angle: { roll: number | null, yaw: number | null, pitch: number | null },\n tensor: Tensor,\n }> = [];\n parent.state = 'run:face';\n timeStamp = now();\n const faces = await parent.models.face?.estimateFaces(input, parent.config);\n parent.perf.face = Math.trunc(now() - timeStamp);\n if (!faces) return [];\n for (const face of faces) {\n parent.analyze('Get Face');\n\n // is something went wrong, skip the face\n if (!face.image || face.image.isDisposedInternal) {\n log('Face object is disposed:', face.image);\n continue;\n }\n\n const angle = calculateFaceAngle(face.mesh);\n\n // run age, inherits face from blazeface\n parent.analyze('Start Age:');\n if (parent.config.async) {\n ageRes = parent.config.face.age.enabled ? age.predict(face.image, parent.config) : {};\n } else {\n parent.state = 'run:age';\n timeStamp = now();\n ageRes = parent.config.face.age.enabled ? await age.predict(face.image, parent.config) : {};\n parent.perf.age = Math.trunc(now() - timeStamp);\n }\n\n // run gender, inherits face from blazeface\n parent.analyze('Start Gender:');\n if (parent.config.async) {\n genderRes = parent.config.face.gender.enabled ? gender.predict(face.image, parent.config) : {};\n } else {\n parent.state = 'run:gender';\n timeStamp = now();\n genderRes = parent.config.face.gender.enabled ? await gender.predict(face.image, parent.config) : {};\n parent.perf.gender = Math.trunc(now() - timeStamp);\n }\n\n // run emotion, inherits face from blazeface\n parent.analyze('Start Emotion:');\n if (parent.config.async) {\n emotionRes = parent.config.face.emotion.enabled ? emotion.predict(face.image, parent.config) : {};\n } else {\n parent.state = 'run:emotion';\n timeStamp = now();\n emotionRes = parent.config.face.emotion.enabled ? await emotion.predict(face.image, parent.config) : {};\n parent.perf.emotion = Math.trunc(now() - timeStamp);\n }\n parent.analyze('End Emotion:');\n\n // run emotion, inherits face from blazeface\n parent.analyze('Start Embedding:');\n if (parent.config.async) {\n embeddingRes = parent.config.face.embedding.enabled ? embedding.predict(face, parent.config) : [];\n } else {\n parent.state = 'run:embedding';\n timeStamp = now();\n embeddingRes = parent.config.face.embedding.enabled ? await embedding.predict(face, parent.config) : [];\n parent.perf.embedding = Math.trunc(now() - timeStamp);\n }\n parent.analyze('End Embedding:');\n\n // run emotion, inherits face from blazeface\n parent.analyze('Start Description:');\n if (parent.config.async) {\n descRes = parent.config.face.description.enabled ? faceres.predict(face, parent.config) : [];\n } else {\n parent.state = 'run:description';\n timeStamp = now();\n descRes = parent.config.face.description.enabled ? await faceres.predict(face.image, parent.config) : [];\n parent.perf.embedding = Math.trunc(now() - timeStamp);\n }\n parent.analyze('End Description:');\n\n // if async wait for results\n if (parent.config.async) {\n [ageRes, genderRes, emotionRes, embeddingRes, descRes] = await Promise.all([ageRes, genderRes, emotionRes, embeddingRes, descRes]);\n }\n\n parent.analyze('Finish Face:');\n\n // calculate iris distance\n // iris: array[ center, left, top, right, bottom]\n if (!parent.config.face.iris.enabled && face?.annotations?.leftEyeIris && face?.annotations?.rightEyeIris) {\n delete face.annotations.leftEyeIris;\n delete face.annotations.rightEyeIris;\n }\n const irisSize = (face.annotations?.leftEyeIris && face.annotations?.rightEyeIris)\n /* average human iris size is 11.7mm */\n ? 11.7 * Math.max(Math.abs(face.annotations.leftEyeIris[3][0] - face.annotations.leftEyeIris[1][0]), Math.abs(face.annotations.rightEyeIris[4][1] - face.annotations.rightEyeIris[2][1]))\n : 0;\n\n // combine results\n faceRes.push({\n ...face,\n age: descRes.age || ageRes.age,\n gender: descRes.gender || genderRes.gender,\n genderConfidence: descRes.genderConfidence || genderRes.confidence,\n embedding: descRes.descriptor || embeddingRes,\n emotion: emotionRes,\n iris: (irisSize !== 0) ? Math.trunc(irisSize) / 100 : 0,\n angle,\n tensor: parent.config.face.detector.return ? face.image?.squeeze() : null,\n });\n // dispose original face tensor\n face.image?.dispose();\n\n parent.analyze('End Face');\n }\n parent.analyze('End FaceMesh:');\n if (parent.config.async) {\n if (parent.perf.face) delete parent.perf.face;\n if (parent.perf.age) delete parent.perf.age;\n if (parent.perf.gender) delete parent.perf.gender;\n if (parent.perf.emotion) delete parent.perf.emotion;\n }\n return faceRes;\n};\n", "import { log } from '../helpers';\nimport * as tf from '../../dist/tfjs.esm.js';\n\nconst NUM_LANDMARKS = 6;\n\nfunction generateAnchors(inputSize) {\n const spec = { strides: [inputSize / 16, inputSize / 8], anchors: [2, 6] };\n const anchors: Array<[number, number]> = [];\n for (let i = 0; i < spec.strides.length; i++) {\n const stride = spec.strides[i];\n const gridRows = Math.floor((inputSize + stride - 1) / stride);\n const gridCols = Math.floor((inputSize + stride - 1) / stride);\n const anchorsNum = spec.anchors[i];\n for (let gridY = 0; gridY < gridRows; gridY++) {\n const anchorY = stride * (gridY + 0.5);\n for (let gridX = 0; gridX < gridCols; gridX++) {\n const anchorX = stride * (gridX + 0.5);\n for (let n = 0; n < anchorsNum; n++) {\n anchors.push([anchorX, anchorY]);\n }\n }\n }\n }\n return anchors;\n}\n\nexport const disposeBox = (box) => {\n box.startEndTensor.dispose();\n box.startPoint.dispose();\n box.endPoint.dispose();\n};\n\nconst createBox = (startEndTensor) => ({\n startEndTensor,\n startPoint: tf.slice(startEndTensor, [0, 0], [-1, 2]),\n endPoint: tf.slice(startEndTensor, [0, 2], [-1, 2]),\n});\n\nfunction decodeBounds(boxOutputs, anchors, inputSize) {\n const boxStarts = tf.slice(boxOutputs, [0, 1], [-1, 2]);\n const centers = tf.add(boxStarts, anchors);\n const boxSizes = tf.slice(boxOutputs, [0, 3], [-1, 2]);\n const boxSizesNormalized = tf.div(boxSizes, inputSize);\n const centersNormalized = tf.div(centers, inputSize);\n const halfBoxSize = tf.div(boxSizesNormalized, 2);\n const starts = tf.sub(centersNormalized, halfBoxSize);\n const ends = tf.add(centersNormalized, halfBoxSize);\n const startNormalized = tf.mul(starts, inputSize);\n const endNormalized = tf.mul(ends, inputSize);\n const concatAxis = 1;\n return tf.concat2d([startNormalized, endNormalized], concatAxis);\n}\n\nexport class BlazeFaceModel {\n model: any;\n anchorsData: any;\n anchors: any;\n inputSize: number;\n config: any;\n\n constructor(model, config) {\n this.model = model;\n this.anchorsData = generateAnchors(model.inputs[0].shape[1]);\n this.anchors = tf.tensor2d(this.anchorsData);\n this.inputSize = model.inputs[0].shape[2];\n this.config = config;\n }\n\n async getBoundingBoxes(inputImage) {\n // sanity check on input\n if ((!inputImage) || (inputImage.isDisposedInternal) || (inputImage.shape.length !== 4) || (inputImage.shape[1] < 1) || (inputImage.shape[2] < 1)) return null;\n const [batch, boxes, scores] = tf.tidy(() => {\n const resizedImage = inputImage.resizeBilinear([this.inputSize, this.inputSize]);\n // const normalizedImage = tf.mul(tf.sub(resizedImage.div(255), 0.5), 2);\n const normalizedImage = resizedImage.div(127.5).sub(0.5);\n const batchedPrediction = this.model.predict(normalizedImage);\n let batchOut;\n // are we using tfhub or pinto converted model?\n if (Array.isArray(batchedPrediction)) {\n const sorted = batchedPrediction.sort((a, b) => a.size - b.size);\n const concat384 = tf.concat([sorted[0], sorted[2]], 2); // dim: 384, 1 + 16\n const concat512 = tf.concat([sorted[1], sorted[3]], 2); // dim: 512, 1 + 16\n const concat = tf.concat([concat512, concat384], 1);\n batchOut = concat.squeeze(0);\n } else {\n batchOut = batchedPrediction.squeeze(); // when using tfhub model\n }\n const boxesOut = decodeBounds(batchOut, this.anchors, [this.inputSize, this.inputSize]);\n const logits = tf.slice(batchOut, [0, 0], [-1, 1]);\n const scoresOut = tf.sigmoid(logits).squeeze();\n return [batchOut, boxesOut, scoresOut];\n });\n const boxIndicesTensor = await tf.image.nonMaxSuppressionAsync(boxes, scores, this.config.face.detector.maxFaces, this.config.face.detector.iouThreshold, this.config.face.detector.scoreThreshold);\n const boxIndices = boxIndicesTensor.arraySync();\n boxIndicesTensor.dispose();\n const boundingBoxesMap = boxIndices.map((boxIndex) => tf.slice(boxes, [boxIndex, 0], [1, -1]));\n const boundingBoxes = boundingBoxesMap.map((boundingBox) => {\n const vals = boundingBox.arraySync();\n boundingBox.dispose();\n return vals;\n });\n\n const scoresVal = scores.dataSync();\n const annotatedBoxes: Array<{ box: any, landmarks: any, anchor: any, confidence: number }> = [];\n for (let i = 0; i < boundingBoxes.length; i++) {\n const boxIndex = boxIndices[i];\n const confidence = scoresVal[boxIndex];\n if (confidence > this.config.face.detector.minConfidence) {\n const box = createBox(boundingBoxes[i]);\n const anchor = this.anchorsData[boxIndex];\n const landmarks = tf.tidy(() => tf.slice(batch, [boxIndex, NUM_LANDMARKS - 1], [1, -1]).squeeze().reshape([NUM_LANDMARKS, -1]));\n annotatedBoxes.push({ box, landmarks, anchor, confidence });\n }\n }\n batch.dispose();\n boxes.dispose();\n scores.dispose();\n return {\n boxes: annotatedBoxes,\n scaleFactor: [inputImage.shape[2] / this.inputSize, inputImage.shape[1] / this.inputSize],\n };\n }\n}\n\nexport async function load(config) {\n const blazeface = await tf.loadGraphModel(config.face.detector.modelPath, { fromTFHub: config.face.detector.modelPath.includes('tfhub.dev') });\n const model = new BlazeFaceModel(blazeface, config);\n if (config.debug) log(`load model: ${config.face.detector.modelPath.match(/\\/(.*)\\./)[1]}`);\n return model;\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nexport function scaleBoxCoordinates(box, factor) {\n const startPoint = [box.startPoint[0] * factor[0], box.startPoint[1] * factor[1]];\n const endPoint = [box.endPoint[0] * factor[0], box.endPoint[1] * factor[1]];\n return { startPoint, endPoint };\n}\n\nexport function getBoxSize(box) {\n return [\n Math.abs(box.endPoint[0] - box.startPoint[0]),\n Math.abs(box.endPoint[1] - box.startPoint[1]),\n ];\n}\n\nexport function getBoxCenter(box) {\n return [\n box.startPoint[0] + (box.endPoint[0] - box.startPoint[0]) / 2,\n box.startPoint[1] + (box.endPoint[1] - box.startPoint[1]) / 2,\n ];\n}\n\nexport function cutBoxFromImageAndResize(box, image, cropSize) {\n const h = image.shape[1];\n const w = image.shape[2];\n const boxes = [[\n box.startPoint[1] / h,\n box.startPoint[0] / w,\n box.endPoint[1] / h,\n box.endPoint[0] / w,\n ]];\n return tf.image.cropAndResize(image, boxes, [0], cropSize);\n}\n\nexport function enlargeBox(box, factor = 1.5) {\n const center = getBoxCenter(box);\n const size = getBoxSize(box);\n const newHalfSize = [factor * size[0] / 2, factor * size[1] / 2];\n const startPoint = [center[0] - newHalfSize[0], center[1] - newHalfSize[1]];\n const endPoint = [center[0] + newHalfSize[0], center[1] + newHalfSize[1]];\n return { startPoint, endPoint, landmarks: box.landmarks };\n}\n\nexport function squarifyBox(box) {\n const centers = getBoxCenter(box);\n const size = getBoxSize(box);\n const maxEdge = Math.max(...size);\n const halfSize = maxEdge / 2;\n const startPoint = [centers[0] - halfSize, centers[1] - halfSize];\n const endPoint = [centers[0] + halfSize, centers[1] + halfSize];\n return { startPoint, endPoint, landmarks: box.landmarks };\n}\n", "export const IDENTITY_MATRIX = [[1, 0, 0], [0, 1, 0], [0, 0, 1]];\n/**\n * Normalizes the provided angle to the range -pi to pi.\n * @param angle The angle in radians to be normalized.\n */\nexport function normalizeRadians(angle) {\n return angle - 2 * Math.PI * Math.floor((angle + Math.PI) / (2 * Math.PI));\n}\n\n/**\n * Computes the angle of rotation between two anchor points.\n * @param point1 First anchor point\n * @param point2 Second anchor point\n */\nexport function computeRotation(point1, point2) {\n const radians = Math.PI / 2 - Math.atan2(-(point2[1] - point1[1]), point2[0] - point1[0]);\n return normalizeRadians(radians);\n}\n\nexport function radToDegrees(rad) {\n return rad * 180 / Math.PI;\n}\n\nexport function buildTranslationMatrix(x, y) {\n return [[1, 0, x], [0, 1, y], [0, 0, 1]];\n}\n\nexport function dot(v1, v2) {\n let product = 0;\n for (let i = 0; i < v1.length; i++) {\n product += v1[i] * v2[i];\n }\n return product;\n}\n\nexport function getColumnFrom2DArr(arr, columnIndex) {\n const column: Array = [];\n for (let i = 0; i < arr.length; i++) {\n column.push(arr[i][columnIndex]);\n }\n return column;\n}\n\nexport function multiplyTransformMatrices(mat1, mat2) {\n const product: Array = [];\n const size = mat1.length;\n for (let row = 0; row < size; row++) {\n product.push([]);\n for (let col = 0; col < size; col++) {\n product[row].push(dot(mat1[row], getColumnFrom2DArr(mat2, col)));\n }\n }\n return product;\n}\n\nexport function buildRotationMatrix(rotation, center) {\n const cosA = Math.cos(rotation);\n const sinA = Math.sin(rotation);\n const rotationMatrix = [[cosA, -sinA, 0], [sinA, cosA, 0], [0, 0, 1]];\n const translationMatrix = buildTranslationMatrix(center[0], center[1]);\n const translationTimesRotation = multiplyTransformMatrices(translationMatrix, rotationMatrix);\n const negativeTranslationMatrix = buildTranslationMatrix(-center[0], -center[1]);\n return multiplyTransformMatrices(translationTimesRotation, negativeTranslationMatrix);\n}\n\nexport function invertTransformMatrix(matrix) {\n const rotationComponent = [[matrix[0][0], matrix[1][0]], [matrix[0][1], matrix[1][1]]];\n const translationComponent = [matrix[0][2], matrix[1][2]];\n const invertedTranslation = [\n -dot(rotationComponent[0], translationComponent),\n -dot(rotationComponent[1], translationComponent),\n ];\n return [\n rotationComponent[0].concat(invertedTranslation[0]),\n rotationComponent[1].concat(invertedTranslation[1]),\n [0, 0, 1],\n ];\n}\n\nexport function rotatePoint(homogeneousCoordinate, rotationMatrix) {\n return [\n dot(homogeneousCoordinate, rotationMatrix[0]),\n dot(homogeneousCoordinate, rotationMatrix[1]),\n ];\n}\n\nexport function xyDistanceBetweenPoints(a, b) {\n return Math.sqrt(((a[0] - b[0]) ** 2) + ((a[1] - b[1]) ** 2));\n}\n", "export const MESH_ANNOTATIONS = {\n silhouette: [\n 10, 338, 297, 332, 284, 251, 389, 356, 454, 323, 361, 288,\n 397, 365, 379, 378, 400, 377, 152, 148, 176, 149, 150, 136,\n 172, 58, 132, 93, 234, 127, 162, 21, 54, 103, 67, 109,\n ],\n lipsUpperOuter: [61, 185, 40, 39, 37, 0, 267, 269, 270, 409, 291],\n lipsLowerOuter: [146, 91, 181, 84, 17, 314, 405, 321, 375, 291],\n lipsUpperInner: [78, 191, 80, 81, 82, 13, 312, 311, 310, 415, 308],\n lipsLowerInner: [78, 95, 88, 178, 87, 14, 317, 402, 318, 324, 308],\n rightEyeUpper0: [246, 161, 160, 159, 158, 157, 173],\n rightEyeLower0: [33, 7, 163, 144, 145, 153, 154, 155, 133],\n rightEyeUpper1: [247, 30, 29, 27, 28, 56, 190],\n rightEyeLower1: [130, 25, 110, 24, 23, 22, 26, 112, 243],\n rightEyeUpper2: [113, 225, 224, 223, 222, 221, 189],\n rightEyeLower2: [226, 31, 228, 229, 230, 231, 232, 233, 244],\n rightEyeLower3: [143, 111, 117, 118, 119, 120, 121, 128, 245],\n rightEyebrowUpper: [156, 70, 63, 105, 66, 107, 55, 193],\n rightEyebrowLower: [35, 124, 46, 53, 52, 65],\n rightEyeIris: [473, 474, 475, 476, 477],\n leftEyeUpper0: [466, 388, 387, 386, 385, 384, 398],\n leftEyeLower0: [263, 249, 390, 373, 374, 380, 381, 382, 362],\n leftEyeUpper1: [467, 260, 259, 257, 258, 286, 414],\n leftEyeLower1: [359, 255, 339, 254, 253, 252, 256, 341, 463],\n leftEyeUpper2: [342, 445, 444, 443, 442, 441, 413],\n leftEyeLower2: [446, 261, 448, 449, 450, 451, 452, 453, 464],\n leftEyeLower3: [372, 340, 346, 347, 348, 349, 350, 357, 465],\n leftEyebrowUpper: [383, 300, 293, 334, 296, 336, 285, 417],\n leftEyebrowLower: [265, 353, 276, 283, 282, 295],\n leftEyeIris: [468, 469, 470, 471, 472],\n midwayBetweenEyes: [168],\n noseTip: [1],\n noseBottom: [2],\n noseRightCorner: [98],\n noseLeftCorner: [327],\n rightCheek: [205],\n leftCheek: [425],\n};\n\nexport const MESH_TO_IRIS_INDICES_MAP = [ // A mapping from facemesh model keypoints to iris model keypoints.\n { key: 'EyeUpper0', indices: [9, 10, 11, 12, 13, 14, 15] },\n { key: 'EyeUpper1', indices: [25, 26, 27, 28, 29, 30, 31] },\n { key: 'EyeUpper2', indices: [41, 42, 43, 44, 45, 46, 47] },\n { key: 'EyeLower0', indices: [0, 1, 2, 3, 4, 5, 6, 7, 8] },\n { key: 'EyeLower1', indices: [16, 17, 18, 19, 20, 21, 22, 23, 24] },\n { key: 'EyeLower2', indices: [32, 33, 34, 35, 36, 37, 38, 39, 40] },\n { key: 'EyeLower3', indices: [54, 55, 56, 57, 58, 59, 60, 61, 62] },\n // { key: 'EyebrowUpper', indices: [63, 64, 65, 66, 67, 68, 69, 70] },\n // { key: 'EyebrowLower', indices: [48, 49, 50, 51, 52, 53] },\n];\n\nexport const UV468 = [\n [0.499976992607117, 0.652534008026123],\n [0.500025987625122, 0.547487020492554],\n [0.499974012374878, 0.602371990680695],\n [0.482113003730774, 0.471979022026062],\n [0.500150978565216, 0.527155995368958],\n [0.499909996986389, 0.498252987861633],\n [0.499523013830185, 0.40106201171875],\n [0.289712011814117, 0.380764007568359],\n [0.499954998493195, 0.312398016452789],\n [0.499987006187439, 0.269918978214264],\n [0.500023007392883, 0.107050001621246],\n [0.500023007392883, 0.666234016418457],\n [0.5000159740448, 0.679224014282227],\n [0.500023007392883, 0.692348003387451],\n [0.499976992607117, 0.695277988910675],\n [0.499976992607117, 0.70593398809433],\n [0.499976992607117, 0.719385027885437],\n [0.499976992607117, 0.737019002437592],\n [0.499967992305756, 0.781370997428894],\n [0.499816000461578, 0.562981009483337],\n [0.473773002624512, 0.573909997940063],\n [0.104906998574734, 0.254140973091125],\n [0.365929991006851, 0.409575998783112],\n [0.338757991790771, 0.41302502155304],\n [0.311120003461838, 0.409460008144379],\n [0.274657994508743, 0.389131009578705],\n [0.393361985683441, 0.403706014156342],\n [0.345234006643295, 0.344011008739471],\n [0.370094001293182, 0.346076011657715],\n [0.319321990013123, 0.347265005111694],\n [0.297903001308441, 0.353591024875641],\n [0.24779200553894, 0.410809993743896],\n [0.396889001131058, 0.842755019664764],\n [0.280097991228104, 0.375599980354309],\n [0.106310002505779, 0.399955987930298],\n [0.2099249958992, 0.391353011131287],\n [0.355807989835739, 0.534406006336212],\n [0.471751004457474, 0.65040397644043],\n [0.474155008792877, 0.680191993713379],\n [0.439785003662109, 0.657229006290436],\n [0.414617002010345, 0.66654098033905],\n [0.450374007225037, 0.680860996246338],\n [0.428770989179611, 0.682690978050232],\n [0.374971002340317, 0.727805018424988],\n [0.486716985702515, 0.547628998756409],\n [0.485300987958908, 0.527395009994507],\n [0.257764995098114, 0.314490020275116],\n [0.401223003864288, 0.455172002315521],\n [0.429818987846375, 0.548614978790283],\n [0.421351999044418, 0.533740997314453],\n [0.276895999908447, 0.532056987285614],\n [0.483370006084442, 0.499586999416351],\n [0.33721199631691, 0.282882988452911],\n [0.296391993761063, 0.293242990970612],\n [0.169294998049736, 0.193813979625702],\n [0.447580009698868, 0.302609980106354],\n [0.392390012741089, 0.353887975215912],\n [0.354490011930466, 0.696784019470215],\n [0.067304998636246, 0.730105042457581],\n [0.442739009857178, 0.572826027870178],\n [0.457098007202148, 0.584792017936707],\n [0.381974011659622, 0.694710969924927],\n [0.392388999462128, 0.694203019142151],\n [0.277076005935669, 0.271932005882263],\n [0.422551989555359, 0.563233017921448],\n [0.385919004678726, 0.281364023685455],\n [0.383103013038635, 0.255840003490448],\n [0.331431001424789, 0.119714021682739],\n [0.229923993349075, 0.232002973556519],\n [0.364500999450684, 0.189113974571228],\n [0.229622006416321, 0.299540996551514],\n [0.173287004232407, 0.278747975826263],\n [0.472878992557526, 0.666198015213013],\n [0.446828007698059, 0.668527007102966],\n [0.422762006521225, 0.673889994621277],\n [0.445307999849319, 0.580065965652466],\n [0.388103008270264, 0.693961024284363],\n [0.403039008378983, 0.706539988517761],\n [0.403629004955292, 0.693953037261963],\n [0.460041999816895, 0.557139039039612],\n [0.431158006191254, 0.692366003990173],\n [0.452181994915009, 0.692366003990173],\n [0.475387006998062, 0.692366003990173],\n [0.465828001499176, 0.779190003871918],\n [0.472328990697861, 0.736225962638855],\n [0.473087012767792, 0.717857003211975],\n [0.473122000694275, 0.704625964164734],\n [0.473033010959625, 0.695277988910675],\n [0.427942007780075, 0.695277988910675],\n [0.426479011774063, 0.703539967536926],\n [0.423162013292313, 0.711845993995667],\n [0.4183090031147, 0.720062971115112],\n [0.390094995498657, 0.639572978019714],\n [0.013953999616206, 0.560034036636353],\n [0.499913990497589, 0.58014702796936],\n [0.413199990987778, 0.69539999961853],\n [0.409626007080078, 0.701822996139526],\n [0.468080013990402, 0.601534962654114],\n [0.422728985548019, 0.585985004901886],\n [0.463079988956451, 0.593783974647522],\n [0.37211999297142, 0.47341400384903],\n [0.334562003612518, 0.496073007583618],\n [0.411671012639999, 0.546965003013611],\n [0.242175996303558, 0.14767599105835],\n [0.290776997804642, 0.201445996761322],\n [0.327338010072708, 0.256527006626129],\n [0.399509996175766, 0.748921036720276],\n [0.441727995872498, 0.261676013469696],\n [0.429764986038208, 0.187834024429321],\n [0.412198007106781, 0.108901023864746],\n [0.288955003023148, 0.398952007293701],\n [0.218936994671822, 0.435410976409912],\n [0.41278201341629, 0.398970007896423],\n [0.257135003805161, 0.355440020561218],\n [0.427684992551804, 0.437960982322693],\n [0.448339998722076, 0.536936044692993],\n [0.178560003638268, 0.45755398273468],\n [0.247308000922203, 0.457193970680237],\n [0.286267012357712, 0.467674970626831],\n [0.332827985286713, 0.460712015628815],\n [0.368755996227264, 0.447206974029541],\n [0.398963987827301, 0.432654976844788],\n [0.476410001516342, 0.405806005001068],\n [0.189241006970406, 0.523923993110657],\n [0.228962004184723, 0.348950982093811],\n [0.490725994110107, 0.562400996685028],\n [0.404670000076294, 0.485132992267609],\n [0.019469000399113, 0.401564002037048],\n [0.426243007183075, 0.420431017875671],\n [0.396993011236191, 0.548797011375427],\n [0.266469985246658, 0.376977026462555],\n [0.439121007919312, 0.51895797252655],\n [0.032313998788595, 0.644356966018677],\n [0.419054001569748, 0.387154996395111],\n [0.462783008813858, 0.505746960639954],\n [0.238978996872902, 0.779744982719421],\n [0.198220998048782, 0.831938028335571],\n [0.107550002634525, 0.540755033493042],\n [0.183610007166862, 0.740257024765015],\n [0.134409993886948, 0.333683013916016],\n [0.385764002799988, 0.883153975009918],\n [0.490967005491257, 0.579378008842468],\n [0.382384985685349, 0.508572995662689],\n [0.174399003386497, 0.397670984268188],\n [0.318785011768341, 0.39623498916626],\n [0.343364000320435, 0.400596976280212],\n [0.396100014448166, 0.710216999053955],\n [0.187885001301765, 0.588537991046906],\n [0.430987000465393, 0.944064974784851],\n [0.318993002176285, 0.898285031318665],\n [0.266247987747192, 0.869701027870178],\n [0.500023007392883, 0.190576016902924],\n [0.499976992607117, 0.954452991485596],\n [0.366169989109039, 0.398822009563446],\n [0.393207013607025, 0.39553701877594],\n [0.410373002290726, 0.391080021858215],\n [0.194993004202843, 0.342101991176605],\n [0.388664990663528, 0.362284004688263],\n [0.365961998701096, 0.355970978736877],\n [0.343364000320435, 0.355356991291046],\n [0.318785011768341, 0.35834002494812],\n [0.301414996385574, 0.363156020641327],\n [0.058132998645306, 0.319076001644135],\n [0.301414996385574, 0.387449026107788],\n [0.499987989664078, 0.618434011936188],\n [0.415838003158569, 0.624195992946625],\n [0.445681989192963, 0.566076993942261],\n [0.465844005346298, 0.620640993118286],\n [0.49992299079895, 0.351523995399475],\n [0.288718998432159, 0.819945991039276],\n [0.335278987884521, 0.852819979190826],\n [0.440512001514435, 0.902418971061707],\n [0.128294005990028, 0.791940987110138],\n [0.408771991729736, 0.373893976211548],\n [0.455606997013092, 0.451801002025604],\n [0.499877005815506, 0.908990025520325],\n [0.375436991453171, 0.924192011356354],\n [0.11421000212431, 0.615022003650665],\n [0.448662012815475, 0.695277988910675],\n [0.4480200111866, 0.704632043838501],\n [0.447111994028091, 0.715808033943176],\n [0.444831997156143, 0.730794012546539],\n [0.430011987686157, 0.766808986663818],\n [0.406787008047104, 0.685672998428345],\n [0.400738000869751, 0.681069016456604],\n [0.392399996519089, 0.677703022956848],\n [0.367855995893478, 0.663918972015381],\n [0.247923001646996, 0.601333022117615],\n [0.452769994735718, 0.420849978923798],\n [0.43639200925827, 0.359887003898621],\n [0.416164010763168, 0.368713974952698],\n [0.413385987281799, 0.692366003990173],\n [0.228018000721931, 0.683571994304657],\n [0.468268007040024, 0.352671027183533],\n [0.411361992359161, 0.804327011108398],\n [0.499989002943039, 0.469825029373169],\n [0.479153990745544, 0.442654013633728],\n [0.499974012374878, 0.439637005329132],\n [0.432112008333206, 0.493588984012604],\n [0.499886006116867, 0.866917014122009],\n [0.49991300702095, 0.821729004383087],\n [0.456548988819122, 0.819200992584229],\n [0.344549000263214, 0.745438992977142],\n [0.37890899181366, 0.574010014533997],\n [0.374292999505997, 0.780184984207153],\n [0.319687992334366, 0.570737957954407],\n [0.357154995203018, 0.604269981384277],\n [0.295284003019333, 0.621580958366394],\n [0.447750002145767, 0.862477004528046],\n [0.410986006259918, 0.508723020553589],\n [0.31395098567009, 0.775308012962341],\n [0.354128003120422, 0.812552988529205],\n [0.324548006057739, 0.703992962837219],\n [0.189096003770828, 0.646299958229065],\n [0.279776990413666, 0.71465802192688],\n [0.1338230073452, 0.682700991630554],\n [0.336768001317978, 0.644733011722565],\n [0.429883986711502, 0.466521978378296],\n [0.455527991056442, 0.548622965812683],\n [0.437114000320435, 0.558896005153656],\n [0.467287987470627, 0.529924988746643],\n [0.414712011814117, 0.335219979286194],\n [0.37704598903656, 0.322777986526489],\n [0.344107985496521, 0.320150971412659],\n [0.312875986099243, 0.32233202457428],\n [0.283526003360748, 0.333190023899078],\n [0.241245999932289, 0.382785975933075],\n [0.102986000478268, 0.468762993812561],\n [0.267612010240555, 0.424560010433197],\n [0.297879010438919, 0.433175981044769],\n [0.333433985710144, 0.433878004550934],\n [0.366427004337311, 0.426115989685059],\n [0.396012008190155, 0.416696012020111],\n [0.420121014118195, 0.41022801399231],\n [0.007561000064015, 0.480777025222778],\n [0.432949006557465, 0.569517970085144],\n [0.458638995885849, 0.479089021682739],\n [0.473466008901596, 0.545744001865387],\n [0.476087987422943, 0.563830018043518],\n [0.468472003936768, 0.555056989192963],\n [0.433990985155106, 0.582361996173859],\n [0.483518004417419, 0.562983989715576],\n [0.482482999563217, 0.57784903049469],\n [0.42645001411438, 0.389798998832703],\n [0.438998997211456, 0.39649498462677],\n [0.450067013502121, 0.400434017181396],\n [0.289712011814117, 0.368252992630005],\n [0.276670008897781, 0.363372981548309],\n [0.517862021923065, 0.471948027610779],\n [0.710287988185883, 0.380764007568359],\n [0.526226997375488, 0.573909997940063],\n [0.895093023777008, 0.254140973091125],\n [0.634069979190826, 0.409575998783112],\n [0.661242008209229, 0.41302502155304],\n [0.688880026340485, 0.409460008144379],\n [0.725341975688934, 0.389131009578705],\n [0.606630027294159, 0.40370500087738],\n [0.654766023159027, 0.344011008739471],\n [0.629905998706818, 0.346076011657715],\n [0.680678009986877, 0.347265005111694],\n [0.702096998691559, 0.353591024875641],\n [0.75221198797226, 0.410804986953735],\n [0.602918028831482, 0.842862963676453],\n [0.719901978969574, 0.375599980354309],\n [0.893692970275879, 0.399959981441498],\n [0.790081977844238, 0.391354024410248],\n [0.643998026847839, 0.534487962722778],\n [0.528249025344849, 0.65040397644043],\n [0.525849997997284, 0.680191040039062],\n [0.560214996337891, 0.657229006290436],\n [0.585384011268616, 0.66654098033905],\n [0.549625992774963, 0.680860996246338],\n [0.57122802734375, 0.682691991329193],\n [0.624852001667023, 0.72809898853302],\n [0.513050019741058, 0.547281980514526],\n [0.51509702205658, 0.527251958847046],\n [0.742246985435486, 0.314507007598877],\n [0.598631024360657, 0.454979002475739],\n [0.570338010787964, 0.548575043678284],\n [0.578631997108459, 0.533622980117798],\n [0.723087012767792, 0.532054007053375],\n [0.516445994377136, 0.499638974666595],\n [0.662801027297974, 0.282917976379395],\n [0.70362401008606, 0.293271005153656],\n [0.830704987049103, 0.193813979625702],\n [0.552385985851288, 0.302568018436432],\n [0.607609987258911, 0.353887975215912],\n [0.645429015159607, 0.696707010269165],\n [0.932694971561432, 0.730105042457581],\n [0.557260990142822, 0.572826027870178],\n [0.542901992797852, 0.584792017936707],\n [0.6180260181427, 0.694710969924927],\n [0.607590973377228, 0.694203019142151],\n [0.722943007946014, 0.271963000297546],\n [0.577413976192474, 0.563166975975037],\n [0.614082992076874, 0.281386971473694],\n [0.616907000541687, 0.255886018276215],\n [0.668509006500244, 0.119913995265961],\n [0.770092010498047, 0.232020974159241],\n [0.635536015033722, 0.189248979091644],\n [0.77039098739624, 0.299556016921997],\n [0.826722025871277, 0.278755009174347],\n [0.527121007442474, 0.666198015213013],\n [0.553171992301941, 0.668527007102966],\n [0.577238023281097, 0.673889994621277],\n [0.554691970348358, 0.580065965652466],\n [0.611896991729736, 0.693961024284363],\n [0.59696102142334, 0.706539988517761],\n [0.596370995044708, 0.693953037261963],\n [0.539958000183105, 0.557139039039612],\n [0.568841993808746, 0.692366003990173],\n [0.547818005084991, 0.692366003990173],\n [0.52461302280426, 0.692366003990173],\n [0.534089982509613, 0.779141008853912],\n [0.527670979499817, 0.736225962638855],\n [0.526912987232208, 0.717857003211975],\n [0.526877999305725, 0.704625964164734],\n [0.526966989040375, 0.695277988910675],\n [0.572058022022247, 0.695277988910675],\n [0.573521018028259, 0.703539967536926],\n [0.57683801651001, 0.711845993995667],\n [0.581691026687622, 0.720062971115112],\n [0.609944999217987, 0.639909982681274],\n [0.986046016216278, 0.560034036636353],\n [0.5867999792099, 0.69539999961853],\n [0.590372025966644, 0.701822996139526],\n [0.531915009021759, 0.601536989212036],\n [0.577268004417419, 0.585934996604919],\n [0.536915004253387, 0.593786001205444],\n [0.627542972564697, 0.473352015018463],\n [0.665585994720459, 0.495950996875763],\n [0.588353991508484, 0.546862006187439],\n [0.757824003696442, 0.14767599105835],\n [0.709249973297119, 0.201507985591888],\n [0.672684013843536, 0.256581008434296],\n [0.600408971309662, 0.74900496006012],\n [0.55826598405838, 0.261672019958496],\n [0.570303976535797, 0.187870979309082],\n [0.588165998458862, 0.109044015407562],\n [0.711045026779175, 0.398952007293701],\n [0.781069993972778, 0.435405015945435],\n [0.587247014045715, 0.398931980133057],\n [0.742869973182678, 0.355445981025696],\n [0.572156012058258, 0.437651991844177],\n [0.55186802148819, 0.536570012569427],\n [0.821442008018494, 0.457556009292603],\n [0.752701997756958, 0.457181990146637],\n [0.71375697851181, 0.467626988887787],\n [0.66711300611496, 0.460672974586487],\n [0.631101012229919, 0.447153985500336],\n [0.6008620262146, 0.432473003864288],\n [0.523481011390686, 0.405627012252808],\n [0.810747981071472, 0.523926019668579],\n [0.771045982837677, 0.348959028720856],\n [0.509127020835876, 0.562718033790588],\n [0.595292985439301, 0.485023975372314],\n [0.980530977249146, 0.401564002037048],\n [0.573499977588654, 0.420000016689301],\n [0.602994978427887, 0.548687994480133],\n [0.733529984951019, 0.376977026462555],\n [0.560611009597778, 0.519016981124878],\n [0.967685997486115, 0.644356966018677],\n [0.580985009670258, 0.387160003185272],\n [0.537728011608124, 0.505385041236877],\n [0.760966002941132, 0.779752969741821],\n [0.801778972148895, 0.831938028335571],\n [0.892440974712372, 0.54076099395752],\n [0.816350996494293, 0.740260004997253],\n [0.865594983100891, 0.333687007427216],\n [0.614073991775513, 0.883246004581451],\n [0.508952975273132, 0.579437971115112],\n [0.617941975593567, 0.508316040039062],\n [0.825608015060425, 0.397674977779388],\n [0.681214988231659, 0.39623498916626],\n [0.656635999679565, 0.400596976280212],\n [0.603900015354156, 0.710216999053955],\n [0.81208598613739, 0.588539004325867],\n [0.56801301240921, 0.944564998149872],\n [0.681007981300354, 0.898285031318665],\n [0.733752012252808, 0.869701027870178],\n [0.633830010890961, 0.398822009563446],\n [0.606792986392975, 0.39553701877594],\n [0.589659988880157, 0.391062021255493],\n [0.805015981197357, 0.342108011245728],\n [0.611334979534149, 0.362284004688263],\n [0.634037971496582, 0.355970978736877],\n [0.656635999679565, 0.355356991291046],\n [0.681214988231659, 0.35834002494812],\n [0.698584973812103, 0.363156020641327],\n [0.941866993904114, 0.319076001644135],\n [0.698584973812103, 0.387449026107788],\n [0.584177017211914, 0.624107003211975],\n [0.554318010807037, 0.566076993942261],\n [0.534153997898102, 0.62064003944397],\n [0.711217999458313, 0.819975018501282],\n [0.664629995822906, 0.852871000766754],\n [0.559099972248077, 0.902631998062134],\n [0.871706008911133, 0.791940987110138],\n [0.591234028339386, 0.373893976211548],\n [0.544341027736664, 0.451583981513977],\n [0.624562978744507, 0.924192011356354],\n [0.88577002286911, 0.615028977394104],\n [0.551338016986847, 0.695277988910675],\n [0.551980018615723, 0.704632043838501],\n [0.552887976169586, 0.715808033943176],\n [0.555167973041534, 0.730794012546539],\n [0.569944024085999, 0.767035007476807],\n [0.593203008174896, 0.685675978660583],\n [0.599261999130249, 0.681069016456604],\n [0.607599973678589, 0.677703022956848],\n [0.631937980651855, 0.663500010967255],\n [0.752032995223999, 0.601315021514893],\n [0.547226011753082, 0.420395016670227],\n [0.563543975353241, 0.359827995300293],\n [0.583841025829315, 0.368713974952698],\n [0.586614012718201, 0.692366003990173],\n [0.771915018558502, 0.683578014373779],\n [0.531597018241882, 0.352482974529266],\n [0.588370978832245, 0.804440975189209],\n [0.52079701423645, 0.442565023899078],\n [0.567984998226166, 0.493479013442993],\n [0.543282985687256, 0.819254994392395],\n [0.655317008495331, 0.745514988899231],\n [0.621008992195129, 0.574018001556396],\n [0.625559985637665, 0.78031200170517],\n [0.680198013782501, 0.570719003677368],\n [0.64276397228241, 0.604337990283966],\n [0.704662978649139, 0.621529996395111],\n [0.552012026309967, 0.862591981887817],\n [0.589071989059448, 0.508637011051178],\n [0.685944974422455, 0.775357007980347],\n [0.645735025405884, 0.812640011310577],\n [0.675342977046967, 0.703978002071381],\n [0.810858011245728, 0.646304965019226],\n [0.72012197971344, 0.714666962623596],\n [0.866151988506317, 0.682704985141754],\n [0.663187026977539, 0.644596993923187],\n [0.570082008838654, 0.466325998306274],\n [0.544561982154846, 0.548375964164734],\n [0.562758982181549, 0.558784961700439],\n [0.531987011432648, 0.530140042304993],\n [0.585271000862122, 0.335177004337311],\n [0.622952997684479, 0.32277899980545],\n [0.655896008014679, 0.320163011550903],\n [0.687132000923157, 0.322345972061157],\n [0.716481983661652, 0.333200991153717],\n [0.758756995201111, 0.382786989212036],\n [0.897013008594513, 0.468769013881683],\n [0.732392013072968, 0.424547016620636],\n [0.70211398601532, 0.433162987232208],\n [0.66652500629425, 0.433866024017334],\n [0.633504986763, 0.426087975502014],\n [0.603875994682312, 0.416586995124817],\n [0.579657971858978, 0.409945011138916],\n [0.992439985275269, 0.480777025222778],\n [0.567192018032074, 0.569419980049133],\n [0.54136598110199, 0.478899002075195],\n [0.526564002037048, 0.546118021011353],\n [0.523913025856018, 0.563830018043518],\n [0.531529009342194, 0.555056989192963],\n [0.566035985946655, 0.582329034805298],\n [0.51631098985672, 0.563053965568542],\n [0.5174720287323, 0.577877044677734],\n [0.573594987392426, 0.389806985855103],\n [0.560697972774506, 0.395331978797913],\n [0.549755990505219, 0.399751007556915],\n [0.710287988185883, 0.368252992630005],\n [0.723330020904541, 0.363372981548309],\n];\n\nexport const TRI468 = [\n 127, 34, 139, 11, 0, 37, 232, 231, 120, 72, 37, 39, 128, 121, 47, 232, 121, 128, 104, 69, 67, 175, 171, 148, 157, 154, 155, 118, 50, 101, 73, 39, 40, 9,\n 151, 108, 48, 115, 131, 194, 204, 211, 74, 40, 185, 80, 42, 183, 40, 92, 186, 230, 229, 118, 202, 212, 214, 83, 18, 17, 76, 61, 146, 160, 29, 30, 56,\n 157, 173, 106, 204, 194, 135, 214, 192, 203, 165, 98, 21, 71, 68, 51, 45, 4, 144, 24, 23, 77, 146, 91, 205, 50, 187, 201, 200, 18, 91, 106, 182, 90, 91,\n 181, 85, 84, 17, 206, 203, 36, 148, 171, 140, 92, 40, 39, 193, 189, 244, 159, 158, 28, 247, 246, 161, 236, 3, 196, 54, 68, 104, 193, 168, 8, 117,\n 228, 31, 189, 193, 55, 98, 97, 99, 126, 47, 100, 166, 79, 218, 155, 154, 26, 209, 49, 131, 135, 136, 150, 47, 126, 217, 223, 52, 53, 45, 51, 134, 211,\n 170, 140, 67, 69, 108, 43, 106, 91, 230, 119, 120, 226, 130, 247, 63, 53, 52, 238, 20, 242, 46, 70, 156, 78, 62, 96, 46, 53, 63, 143, 34, 227, 173,\n 155, 133, 123, 117, 111, 44, 125, 19, 236, 134, 51, 216, 206, 205, 154, 153, 22, 39, 37, 167, 200, 201, 208, 36, 142, 100, 57, 212, 202, 20, 60, 99, 28,\n 158, 157, 35, 226, 113, 160, 159, 27, 204, 202, 210, 113, 225, 46, 43, 202, 204, 62, 76, 77, 137, 123, 116, 41, 38, 72, 203, 129, 142, 64, 98, 240, 49,\n 102, 64, 41, 73, 74, 212, 216, 207, 42, 74, 184, 169, 170, 211, 170, 149, 176, 105, 66, 69, 122, 6, 168, 123, 147, 187, 96, 77, 90, 65, 55, 107, 89,\n 90, 180, 101, 100, 120, 63, 105, 104, 93, 137, 227, 15, 86, 85, 129, 102, 49, 14, 87, 86, 55, 8, 9, 100, 47, 121, 145, 23, 22, 88, 89, 179, 6, 122,\n 196, 88, 95, 96, 138, 172, 136, 215, 58, 172, 115, 48, 219, 42, 80, 81, 195, 3, 51, 43, 146, 61, 171, 175, 199, 81, 82, 38, 53, 46, 225, 144, 163, 110,\n 246, 33, 7, 52, 65, 66, 229, 228, 117, 34, 127, 234, 107, 108, 69, 109, 108, 151, 48, 64, 235, 62, 78, 191, 129, 209, 126, 111, 35, 143, 163, 161, 246,\n 117, 123, 50, 222, 65, 52, 19, 125, 141, 221, 55, 65, 3, 195, 197, 25, 7, 33, 220, 237, 44, 70, 71, 139, 122, 193, 245, 247, 130, 33, 71, 21, 162,\n 153, 158, 159, 170, 169, 150, 188, 174, 196, 216, 186, 92, 144, 160, 161, 2, 97, 167, 141, 125, 241, 164, 167, 37, 72, 38, 12, 145, 159, 160, 38, 82, 13,\n 63, 68, 71, 226, 35, 111, 158, 153, 154, 101, 50, 205, 206, 92, 165, 209, 198, 217, 165, 167, 97, 220, 115, 218, 133, 112, 243, 239, 238, 241, 214,\n 135, 169, 190, 173, 133, 171, 208, 32, 125, 44, 237, 86, 87, 178, 85, 86, 179, 84, 85, 180, 83, 84, 181, 201, 83, 182, 137, 93, 132, 76, 62, 183, 61,\n 76, 184, 57, 61, 185, 212, 57, 186, 214, 207, 187, 34, 143, 156, 79, 239, 237, 123, 137, 177, 44, 1, 4, 201, 194, 32, 64, 102, 129, 213, 215, 138, 59,\n 166, 219, 242, 99, 97, 2, 94, 141, 75, 59, 235, 24, 110, 228, 25, 130, 226, 23, 24, 229, 22, 23, 230, 26, 22, 231, 112, 26, 232, 189, 190, 243, 221, 56,\n 190, 28, 56, 221, 27, 28, 222, 29, 27, 223, 30, 29, 224, 247, 30, 225, 238, 79, 20, 166, 59, 75, 60, 75, 240, 147, 177, 215, 20, 79, 166, 187, 147, 213,\n 112, 233, 244, 233, 128, 245, 128, 114, 188, 114, 217, 174, 131, 115, 220, 217, 198, 236, 198, 131, 134, 177, 132, 58, 143, 35, 124, 110, 163, 7, 228,\n 110, 25, 356, 389, 368, 11, 302, 267, 452, 350, 349, 302, 303, 269, 357, 343, 277, 452, 453, 357, 333, 332, 297, 175, 152, 377, 384, 398, 382, 347,\n 348, 330, 303, 304, 270, 9, 336, 337, 278, 279, 360, 418, 262, 431, 304, 408, 409, 310, 415, 407, 270, 409, 410, 450, 348, 347, 422, 430, 434, 313,\n 314, 17, 306, 307, 375, 387, 388, 260, 286, 414, 398, 335, 406, 418, 364, 367, 416, 423, 358, 327, 251, 284, 298, 281, 5, 4, 373, 374, 253, 307, 320,\n 321, 425, 427, 411, 421, 313, 18, 321, 405, 406, 320, 404, 405, 315, 16, 17, 426, 425, 266, 377, 400, 369, 322, 391, 269, 417, 465, 464, 386, 257, 258,\n 466, 260, 388, 456, 399, 419, 284, 332, 333, 417, 285, 8, 346, 340, 261, 413, 441, 285, 327, 460, 328, 355, 371, 329, 392, 439, 438, 382, 341, 256,\n 429, 420, 360, 364, 394, 379, 277, 343, 437, 443, 444, 283, 275, 440, 363, 431, 262, 369, 297, 338, 337, 273, 375, 321, 450, 451, 349, 446, 342, 467,\n 293, 334, 282, 458, 461, 462, 276, 353, 383, 308, 324, 325, 276, 300, 293, 372, 345, 447, 382, 398, 362, 352, 345, 340, 274, 1, 19, 456, 248, 281, 436,\n 427, 425, 381, 256, 252, 269, 391, 393, 200, 199, 428, 266, 330, 329, 287, 273, 422, 250, 462, 328, 258, 286, 384, 265, 353, 342, 387, 259, 257, 424,\n 431, 430, 342, 353, 276, 273, 335, 424, 292, 325, 307, 366, 447, 345, 271, 303, 302, 423, 266, 371, 294, 455, 460, 279, 278, 294, 271, 272, 304, 432,\n 434, 427, 272, 407, 408, 394, 430, 431, 395, 369, 400, 334, 333, 299, 351, 417, 168, 352, 280, 411, 325, 319, 320, 295, 296, 336, 319, 403, 404, 330,\n 348, 349, 293, 298, 333, 323, 454, 447, 15, 16, 315, 358, 429, 279, 14, 15, 316, 285, 336, 9, 329, 349, 350, 374, 380, 252, 318, 402, 403, 6, 197, 419,\n 318, 319, 325, 367, 364, 365, 435, 367, 397, 344, 438, 439, 272, 271, 311, 195, 5, 281, 273, 287, 291, 396, 428, 199, 311, 271, 268, 283, 444, 445,\n 373, 254, 339, 263, 466, 249, 282, 334, 296, 449, 347, 346, 264, 447, 454, 336, 296, 299, 338, 10, 151, 278, 439, 455, 292, 407, 415, 358, 371, 355,\n 340, 345, 372, 390, 249, 466, 346, 347, 280, 442, 443, 282, 19, 94, 370, 441, 442, 295, 248, 419, 197, 263, 255, 359, 440, 275, 274, 300, 383, 368,\n 351, 412, 465, 263, 467, 466, 301, 368, 389, 380, 374, 386, 395, 378, 379, 412, 351, 419, 436, 426, 322, 373, 390, 388, 2, 164, 393, 370, 462, 461,\n 164, 0, 267, 302, 11, 12, 374, 373, 387, 268, 12, 13, 293, 300, 301, 446, 261, 340, 385, 384, 381, 330, 266, 425, 426, 423, 391, 429, 355, 437, 391,\n 327, 326, 440, 457, 438, 341, 382, 362, 459, 457, 461, 434, 430, 394, 414, 463, 362, 396, 369, 262, 354, 461, 457, 316, 403, 402, 315, 404, 403, 314,\n 405, 404, 313, 406, 405, 421, 418, 406, 366, 401, 361, 306, 408, 407, 291, 409, 408, 287, 410, 409, 432, 436, 410, 434, 416, 411, 264, 368, 383, 309,\n 438, 457, 352, 376, 401, 274, 275, 4, 421, 428, 262, 294, 327, 358, 433, 416, 367, 289, 455, 439, 462, 370, 326, 2, 326, 370, 305, 460, 455, 254,\n 449, 448, 255, 261, 446, 253, 450, 449, 252, 451, 450, 256, 452, 451, 341, 453, 452, 413, 464, 463, 441, 413, 414, 258, 442, 441, 257, 443, 442, 259,\n 444, 443, 260, 445, 444, 467, 342, 445, 459, 458, 250, 289, 392, 290, 290, 328, 460, 376, 433, 435, 250, 290, 392, 411, 416, 433, 341, 463, 464, 453,\n 464, 465, 357, 465, 412, 343, 412, 399, 360, 363, 440, 437, 399, 456, 420, 456, 363, 401, 435, 288, 372, 383, 353, 339, 255, 249, 448, 261, 255, 133,\n 243, 190, 133, 155, 112, 33, 246, 247, 33, 130, 25, 398, 384, 286, 362, 398, 414, 362, 463, 341, 263, 359, 467, 263, 249, 255, 466, 467, 260, 75, 60,\n 166, 238, 239, 79, 162, 127, 139, 72, 11, 37, 121, 232, 120, 73, 72, 39, 114, 128, 47, 233, 232, 128, 103, 104, 67, 152, 175, 148, 173, 157, 155,\n 119, 118, 101, 74, 73, 40, 107, 9, 108, 49, 48, 131, 32, 194, 211, 184, 74, 185, 191, 80, 183, 185, 40, 186, 119, 230, 118, 210, 202, 214, 84, 83, 17,\n 77, 76, 146, 161, 160, 30, 190, 56, 173, 182, 106, 194, 138, 135, 192, 129, 203, 98, 54, 21, 68, 5, 51, 4, 145, 144, 23, 90, 77, 91, 207, 205, 187, 83,\n 201, 18, 181, 91, 182, 180, 90, 181, 16, 85, 17, 205, 206, 36, 176, 148, 140, 165, 92, 39, 245, 193, 244, 27, 159, 28, 30, 247, 161, 174, 236, 196,\n 103, 54, 104, 55, 193, 8, 111, 117, 31, 221, 189, 55, 240, 98, 99, 142, 126, 100, 219, 166, 218, 112, 155, 26, 198, 209, 131, 169, 135, 150, 114, 47,\n 217, 224, 223, 53, 220, 45, 134, 32, 211, 140, 109, 67, 108, 146, 43, 91, 231, 230, 120, 113, 226, 247, 105, 63, 52, 241, 238, 242, 124, 46, 156, 95,\n 78, 96, 70, 46, 63, 116, 143, 227, 116, 123, 111, 1, 44, 19, 3, 236, 51, 207, 216, 205, 26, 154, 22, 165, 39, 167, 199, 200, 208, 101, 36, 100, 43,\n 57, 202, 242, 20, 99, 56, 28, 157, 124, 35, 113, 29, 160, 27, 211, 204, 210, 124, 113, 46, 106, 43, 204, 96, 62, 77, 227, 137, 116, 73, 41, 72, 36, 203,\n 142, 235, 64, 240, 48, 49, 64, 42, 41, 74, 214, 212, 207, 183, 42, 184, 210, 169, 211, 140, 170, 176, 104, 105, 69, 193, 122, 168, 50, 123, 187, 89, 96,\n 90, 66, 65, 107, 179, 89, 180, 119, 101, 120, 68, 63, 104, 234, 93, 227, 16, 15, 85, 209, 129, 49, 15, 14, 86, 107, 55, 9, 120, 100, 121, 153, 145, 22,\n 178, 88, 179, 197, 6, 196, 89, 88, 96, 135, 138, 136, 138, 215, 172, 218, 115, 219, 41, 42, 81, 5, 195, 51, 57, 43, 61, 208, 171, 199, 41, 81, 38,\n 224, 53, 225, 24, 144, 110, 105, 52, 66, 118, 229, 117, 227, 34, 234, 66, 107, 69, 10, 109, 151, 219, 48, 235, 183, 62, 191, 142, 129, 126, 116, 111,\n 143, 7, 163, 246, 118, 117, 50, 223, 222, 52, 94, 19, 141, 222, 221, 65, 196, 3, 197, 45, 220, 44, 156, 70, 139, 188, 122, 245, 139, 71, 162, 145,\n 153, 159, 149, 170, 150, 122, 188, 196, 206, 216, 92, 163, 144, 161, 164, 2, 167, 242, 141, 241, 0, 164, 37, 11, 72, 12, 144, 145, 160, 12, 38, 13, 70,\n 63, 71, 31, 226, 111, 157, 158, 154, 36, 101, 205, 203, 206, 165, 126, 209, 217, 98, 165, 97, 237, 220, 218, 237, 239, 241, 210, 214, 169, 140, 171, 32,\n 241, 125, 237, 179, 86, 178, 180, 85, 179, 181, 84, 180, 182, 83, 181, 194, 201, 182, 177, 137, 132, 184, 76, 183, 185, 61, 184, 186, 57, 185, 216, 212,\n 186, 192, 214, 187, 139, 34, 156, 218, 79, 237, 147, 123, 177, 45, 44, 4, 208, 201, 32, 98, 64, 129, 192, 213, 138, 235, 59, 219, 141, 242, 97, 97, 2,\n 141, 240, 75, 235, 229, 24, 228, 31, 25, 226, 230, 23, 229, 231, 22, 230, 232, 26, 231, 233, 112, 232, 244, 189, 243, 189, 221, 190, 222, 28, 221,\n 223, 27, 222, 224, 29, 223, 225, 30, 224, 113, 247, 225, 99, 60, 240, 213, 147, 215, 60, 20, 166, 192, 187, 213, 243, 112, 244, 244, 233, 245, 245,\n 128, 188, 188, 114, 174, 134, 131, 220, 174, 217, 236, 236, 198, 134, 215, 177, 58, 156, 143, 124, 25, 110, 7, 31, 228, 25, 264, 356, 368, 0, 11, 267,\n 451, 452, 349, 267, 302, 269, 350, 357, 277, 350, 452, 357, 299, 333, 297, 396, 175, 377, 381, 384, 382, 280, 347, 330, 269, 303, 270, 151, 9, 337,\n 344, 278, 360, 424, 418, 431, 270, 304, 409, 272, 310, 407, 322, 270, 410, 449, 450, 347, 432, 422, 434, 18, 313, 17, 291, 306, 375, 259, 387, 260,\n 424, 335, 418, 434, 364, 416, 391, 423, 327, 301, 251, 298, 275, 281, 4, 254, 373, 253, 375, 307, 321, 280, 425, 411, 200, 421, 18, 335, 321, 406,\n 321, 320, 405, 314, 315, 17, 423, 426, 266, 396, 377, 369, 270, 322, 269, 413, 417, 464, 385, 386, 258, 248, 456, 419, 298, 284, 333, 168, 417, 8,\n 448, 346, 261, 417, 413, 285, 326, 327, 328, 277, 355, 329, 309, 392, 438, 381, 382, 256, 279, 429, 360, 365, 364, 379, 355, 277, 437, 282, 443, 283,\n 281, 275, 363, 395, 431, 369, 299, 297, 337, 335, 273, 321, 348, 450, 349, 359, 446, 467, 283, 293, 282, 250, 458, 462, 300, 276, 383, 292, 308, 325,\n 283, 276, 293, 264, 372, 447, 346, 352, 340, 354, 274, 19, 363, 456, 281, 426, 436, 425, 380, 381, 252, 267, 269, 393, 421, 200, 428, 371, 266, 329,\n 432, 287, 422, 290, 250, 328, 385, 258, 384, 446, 265, 342, 386, 387, 257, 422, 424, 430, 445, 342, 276, 422, 273, 424, 306, 292, 307, 352, 366, 345,\n 268, 271, 302, 358, 423, 371, 327, 294, 460, 331, 279, 294, 303, 271, 304, 436, 432, 427, 304, 272, 408, 395, 394, 431, 378, 395, 400, 296, 334, 299,\n 6, 351, 168, 376, 352, 411, 307, 325, 320, 285, 295, 336, 320, 319, 404, 329, 330, 349, 334, 293, 333, 366, 323, 447, 316, 15, 315, 331, 358, 279,\n 317, 14, 316, 8, 285, 9, 277, 329, 350, 253, 374, 252, 319, 318, 403, 351, 6, 419, 324, 318, 325, 397, 367, 365, 288, 435, 397, 278, 344, 439, 310,\n 272, 311, 248, 195, 281, 375, 273, 291, 175, 396, 199, 312, 311, 268, 276, 283, 445, 390, 373, 339, 295, 282, 296, 448, 449, 346, 356, 264, 454, 337,\n 336, 299, 337, 338, 151, 294, 278, 455, 308, 292, 415, 429, 358, 355, 265, 340, 372, 388, 390, 466, 352, 346, 280, 295, 442, 282, 354, 19, 370, 285,\n 441, 295, 195, 248, 197, 457, 440, 274, 301, 300, 368, 417, 351, 465, 251, 301, 389, 385, 380, 386, 394, 395, 379, 399, 412, 419, 410, 436, 322, 387,\n 373, 388, 326, 2, 393, 354, 370, 461, 393, 164, 267, 268, 302, 12, 386, 374, 387, 312, 268, 13, 298, 293, 301, 265, 446, 340, 380, 385, 381, 280, 330,\n 425, 322, 426, 391, 420, 429, 437, 393, 391, 326, 344, 440, 438, 458, 459, 461, 364, 434, 394, 428, 396, 262, 274, 354, 457, 317, 316, 402, 316, 315,\n 403, 315, 314, 404, 314, 313, 405, 313, 421, 406, 323, 366, 361, 292, 306, 407, 306, 291, 408, 291, 287, 409, 287, 432, 410, 427, 434, 411, 372, 264,\n 383, 459, 309, 457, 366, 352, 401, 1, 274, 4, 418, 421, 262, 331, 294, 358, 435, 433, 367, 392, 289, 439, 328, 462, 326, 94, 2, 370, 289, 305, 455, 339,\n 254, 448, 359, 255, 446, 254, 253, 449, 253, 252, 450, 252, 256, 451, 256, 341, 452, 414, 413, 463, 286, 441, 414, 286, 258, 441, 258, 257, 442, 257,\n 259, 443, 259, 260, 444, 260, 467, 445, 309, 459, 250, 305, 289, 290, 305, 290, 460, 401, 376, 435, 309, 250, 392, 376, 411, 433, 453, 341, 464, 357,\n 453, 465, 343, 357, 412, 437, 343, 399, 344, 360, 440, 420, 437, 456, 360, 420, 363, 361, 401, 288, 265, 372, 353, 390, 339, 249, 339, 448, 255];\n\nexport const TRI68 = [0, 1, 36, 0, 36, 17, 1, 2, 41, 1, 41, 36, 2, 3, 31, 2, 31, 41, 3, 4, 48, 3, 48, 31, 4, 5, 48, 5, 6, 48, 6, 7, 59, 6, 59, 48, 7, 8, 58, 7, 58, 59,\n 8, 9, 56, 8, 56, 57, 8, 57, 58, 9, 10, 55, 9, 55, 56, 10, 11, 54, 10, 54, 55, 11, 12, 54, 12, 13, 54, 13, 14, 35, 13, 35, 54, 14, 15, 46, 14, 46, 35, 15, 16,\n 45, 15, 45, 46, 16, 26, 45, 17, 36, 18, 18, 37, 19, 18, 36, 37, 19, 38, 20, 19, 37, 38, 20, 39, 21, 20, 38, 39, 21, 39, 27, 22, 42, 23, 22, 27, 42, 23, 43, 24,\n 23, 42, 43, 24, 44, 25, 24, 43, 44, 25, 45, 26, 25, 44, 45, 27, 39, 28, 27, 28, 42, 28, 39, 29, 28, 29, 42, 29, 31, 30, 29, 30, 35, 29, 40, 31, 29, 35, 47, 29,\n 39, 40, 29, 47, 42, 30, 31, 32, 30, 32, 33, 30, 33, 34, 30, 34, 35, 31, 50, 32, 31, 40, 41, 31, 48, 49, 31, 49, 50, 32, 51, 33, 32, 50, 51, 33, 51, 34, 34, 52,\n 35, 34, 51, 52, 35, 46, 47, 35, 52, 53, 35, 53, 54, 36, 41, 37, 37, 40, 38, 37, 41, 40, 38, 40, 39, 42, 47, 43, 43, 47, 44, 44, 46, 45, 44, 47, 46, 48, 60, 49,\n 48, 59, 60, 49, 61, 50, 49, 60, 61, 50, 62, 51, 50, 61, 62, 51, 62, 52, 52, 63, 53, 52, 62, 63, 53, 64, 54, 53, 63, 64, 54, 64, 55, 55, 65, 56, 55, 64, 65, 56,\n 66, 57, 56, 65, 66, 57, 66, 58, 58, 67, 59, 58, 66, 67, 59, 67, 60, 60, 67, 61, 61, 66, 62, 61, 67, 66, 62, 66, 63, 63, 65, 64, 63, 66, 65, 21, 27, 22];\n\nexport const TRI33 = [\n /* eyes */ 0, 8, 7, 7, 8, 1, 2, 10, 9, 9, 10, 3,\n /* brows */ 17, 0, 18, 18, 0, 7, 18, 7, 19, 19, 7, 1, 19, 1, 11, 19, 11, 20, 21, 3, 22, 21, 9, 3, 20, 9, 21, 20, 2, 9, 20, 11, 2,\n /* 4head */ 23, 17, 18, 25, 21, 22, 24, 19, 20, 24, 18, 19, 24, 20, 21, 24, 23, 18, 24, 21, 25,\n /* nose */ 11, 12, 4, 11, 4, 13, 1, 12, 11, 11, 13, 2, 12, 14, 4, 4, 14, 13,\n /* up-lip */ 14, 5, 15, 14, 15, 6, 12, 5, 14, 14, 6, 13,\n /* cheeks */ 8, 12, 1, 2, 13, 10, 8, 26, 12, 10, 13, 27, 26, 5, 12, 13, 6, 27, 0, 26, 8, 10, 27, 3,\n /* chin */ 5, 32, 16, 16, 32, 6, 5, 30, 32, 6, 32, 31,\n /* cont */ 26, 30, 5, 27, 6, 31, 0, 28, 26, 3, 27, 29, 17, 28, 0, 3, 29, 22, 23, 28, 17, 22, 29, 25, 28, 30, 26, 27, 31, 29,\n];\n\nexport const TRI7 = [0, 4, 1, 2, 4, 3, 4, 5, 6];\n\nexport const VTX68 = [\n /* cont */ 127, 234, 132, 58, 172, 150, 149, 148, 152, 377, 378, 379, 397, 288, 361, 454, 356,\n /* brows */ 70, 63, 105, 66, 107, 336, 296, 334, 293, 300,\n /* nose */ 168, 6, 195, 4, 98, 97, 2, 326, 327,\n /* eyes */ 33, 160, 158, 133, 153, 144, 362, 385, 387, 263, 373, 380,\n /* lip */ 57, 40, 37, 0, 267, 270, 287, 321, 314, 17, 84, 91,\n /* mouth */ 78, 81, 13, 311, 308, 402, 14, 178,\n];\n\nexport const VTX33 = [33, 133, 362, 263, 1, 62, 308, 159, 145, 386, 374, 6, 102, 331, 2, 13, 14, 70, 105, 107, 336, 334, 300, 54, 10, 284, 50, 280, 234, 454, 58, 288, 152];\n\nexport const VTX7 = [33, 133, 362, 263, 1, 78, 308];\n\nexport const UV68 = VTX68.map((x) => UV468[x]);\n\nexport const UV33 = VTX33.map((x) => UV468[x]);\n\nexport const UV7 = VTX7.map((x) => UV468[x]);\n", "/* eslint-disable class-methods-use-this */\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as bounding from './box';\nimport * as util from './util';\nimport * as coords from './coords';\n\nconst leftOutline = coords.MESH_ANNOTATIONS['leftEyeLower0'];\nconst rightOutline = coords.MESH_ANNOTATIONS['rightEyeLower0'];\n\nconst eyeLandmarks = {\n leftBounds: [leftOutline[0], leftOutline[leftOutline.length - 1]],\n rightBounds: [rightOutline[0], rightOutline[rightOutline.length - 1]],\n};\n\nconst meshLandmarks = {\n count: 468,\n mouth: 13,\n symmetryLine: [13, coords.MESH_ANNOTATIONS['midwayBetweenEyes'][0]],\n};\n\nconst blazeFaceLandmarks = {\n leftEye: 0,\n rightEye: 1,\n nose: 2,\n mouth: 3,\n leftEar: 4,\n rightEar: 5,\n symmetryLine: [3, 2],\n};\n\nconst irisLandmarks = {\n upperCenter: 3,\n lowerCenter: 4,\n index: 71,\n numCoordinates: 76,\n};\n\n// Replace the raw coordinates returned by facemesh with refined iris model coordinates\n// Update the z coordinate to be an average of the original and the new.\nfunction replaceRawCoordinates(rawCoords, newCoords, prefix, keys) {\n for (let i = 0; i < coords.MESH_TO_IRIS_INDICES_MAP.length; i++) {\n const { key, indices } = coords.MESH_TO_IRIS_INDICES_MAP[i];\n const originalIndices = coords.MESH_ANNOTATIONS[`${prefix}${key}`];\n // @ts-ignore\n if (!keys || keys.includes(key)) {\n for (let j = 0; j < indices.length; j++) {\n const index = indices[j];\n rawCoords[originalIndices[j]] = [\n newCoords[index][0], newCoords[index][1],\n (newCoords[index][2] + rawCoords[originalIndices[j]][2]) / 2,\n ];\n }\n }\n }\n}\n// The Pipeline coordinates between the bounding box and skeleton models.\nexport class Pipeline {\n storedBoxes: any;\n boundingBoxDetector: any;\n meshDetector: any;\n irisModel: any;\n boxSize: number;\n meshSize: number;\n irisSize: number;\n irisEnlarge: number;\n skipped: number;\n detectedFaces: number;\n\n constructor(boundingBoxDetector, meshDetector, irisModel) {\n // An array of facial bounding boxes.\n this.storedBoxes = [];\n this.boundingBoxDetector = boundingBoxDetector;\n this.meshDetector = meshDetector;\n this.irisModel = irisModel;\n this.boxSize = boundingBoxDetector?.model?.inputs[0].shape[2] || 0;\n this.meshSize = meshDetector?.inputs[0].shape[2] || boundingBoxDetector?.model?.inputs[0].shape[2];\n this.irisSize = irisModel?.inputs[0].shape[1] || 0;\n this.irisEnlarge = 2.3;\n this.skipped = 0;\n this.detectedFaces = 0;\n }\n\n transformRawCoords(rawCoords, box, angle, rotationMatrix) {\n const boxSize = bounding.getBoxSize({ startPoint: box.startPoint, endPoint: box.endPoint });\n const coordsScaled = rawCoords.map((coord) => ([\n boxSize[0] / this.meshSize * (coord[0] - this.meshSize / 2),\n boxSize[1] / this.meshSize * (coord[1] - this.meshSize / 2),\n coord[2],\n ]));\n const coordsRotationMatrix = (angle !== 0) ? util.buildRotationMatrix(angle, [0, 0]) : util.IDENTITY_MATRIX;\n const coordsRotated = (angle !== 0) ? coordsScaled.map((coord) => ([...util.rotatePoint(coord, coordsRotationMatrix), coord[2]])) : coordsScaled;\n const inverseRotationMatrix = (angle !== 0) ? util.invertTransformMatrix(rotationMatrix) : util.IDENTITY_MATRIX;\n const boxCenter = [...bounding.getBoxCenter({ startPoint: box.startPoint, endPoint: box.endPoint }), 1];\n return coordsRotated.map((coord) => ([\n coord[0] + util.dot(boxCenter, inverseRotationMatrix[0]),\n coord[1] + util.dot(boxCenter, inverseRotationMatrix[1]),\n coord[2],\n ]));\n }\n\n getLeftToRightEyeDepthDifference(rawCoords) {\n const leftEyeZ = rawCoords[eyeLandmarks.leftBounds[0]][2];\n const rightEyeZ = rawCoords[eyeLandmarks.rightBounds[0]][2];\n return leftEyeZ - rightEyeZ;\n }\n\n // Returns a box describing a cropped region around the eye fit for passing to the iris model.\n getEyeBox(rawCoords, face, eyeInnerCornerIndex, eyeOuterCornerIndex, flip = false) {\n const box = bounding.squarifyBox(bounding.enlargeBox(this.calculateLandmarksBoundingBox([rawCoords[eyeInnerCornerIndex], rawCoords[eyeOuterCornerIndex]]), this.irisEnlarge));\n const boxSize = bounding.getBoxSize(box);\n let crop = tf.image.cropAndResize(face, [[\n box.startPoint[1] / this.meshSize,\n box.startPoint[0] / this.meshSize, box.endPoint[1] / this.meshSize,\n box.endPoint[0] / this.meshSize,\n ]], [0], [this.irisSize, this.irisSize]);\n if (flip && tf.ENV.flags.IS_BROWSER) {\n crop = tf.image.flipLeftRight(crop); // flipLeftRight is not defined for tfjs-node\n }\n return { box, boxSize, crop };\n }\n\n // Given a cropped image of an eye, returns the coordinates of the contours surrounding the eye and the iris.\n getEyeCoords(eyeData, eyeBox, eyeBoxSize, flip = false) {\n const eyeRawCoords: Array = [];\n for (let i = 0; i < irisLandmarks.numCoordinates; i++) {\n const x = eyeData[i * 3];\n const y = eyeData[i * 3 + 1];\n const z = eyeData[i * 3 + 2];\n eyeRawCoords.push([\n (flip ? (1 - (x / this.irisSize)) : (x / this.irisSize)) * eyeBoxSize[0] + eyeBox.startPoint[0],\n (y / this.irisSize) * eyeBoxSize[1] + eyeBox.startPoint[1], z,\n ]);\n }\n return { rawCoords: eyeRawCoords, iris: eyeRawCoords.slice(irisLandmarks.index) };\n }\n\n // The z-coordinates returned for the iris are unreliable, so we take the z values from the surrounding keypoints.\n getAdjustedIrisCoords(rawCoords, irisCoords, direction) {\n const upperCenterZ = rawCoords[coords.MESH_ANNOTATIONS[`${direction}EyeUpper0`][irisLandmarks.upperCenter]][2];\n const lowerCenterZ = rawCoords[coords.MESH_ANNOTATIONS[`${direction}EyeLower0`][irisLandmarks.lowerCenter]][2];\n const averageZ = (upperCenterZ + lowerCenterZ) / 2;\n // Iris indices: 0: center | 1: right | 2: above | 3: left | 4: below\n return irisCoords.map((coord, i) => {\n let z = averageZ;\n if (i === 2) {\n z = upperCenterZ;\n } else if (i === 4) {\n z = lowerCenterZ;\n }\n return [coord[0], coord[1], z];\n });\n }\n\n async predict(input, config) {\n let useFreshBox = false;\n // run new detector every skipFrames unless we only want box to start with\n let detector;\n if ((this.skipped === 0) || (this.skipped > config.face.detector.skipFrames) || !config.face.mesh.enabled || !config.videoOptimized) {\n detector = await this.boundingBoxDetector.getBoundingBoxes(input);\n this.skipped = 0;\n }\n if (config.videoOptimized) this.skipped++;\n\n // if detector result count doesn't match current working set, use it to reset current working set\n if (!config.videoOptimized || (detector && detector.boxes && (!config.face.mesh.enabled || (detector.boxes.length !== this.detectedFaces) && (this.detectedFaces !== config.face.detector.maxFaces)))) {\n this.storedBoxes = [];\n this.detectedFaces = 0;\n for (const possible of detector.boxes) {\n this.storedBoxes.push({ startPoint: possible.box.startPoint.dataSync(), endPoint: possible.box.endPoint.dataSync(), landmarks: possible.landmarks, confidence: possible.confidence });\n }\n if (this.storedBoxes.length > 0) useFreshBox = true;\n }\n\n if (config.face.detector.skipInitial && this.detectedFaces === 0) this.skipped = 0;\n\n if (useFreshBox) {\n if (!detector || !detector.boxes || (detector.boxes.length === 0)) {\n this.storedBoxes = [];\n this.detectedFaces = 0;\n return null;\n }\n for (let i = 0; i < this.storedBoxes.length; i++) {\n const scaledBox = bounding.scaleBoxCoordinates({ startPoint: this.storedBoxes[i].startPoint, endPoint: this.storedBoxes[i].endPoint }, detector.scaleFactor);\n const enlargedBox = bounding.enlargeBox(scaledBox);\n const squarifiedBox = bounding.squarifyBox(enlargedBox);\n const landmarks = this.storedBoxes[i].landmarks.arraySync();\n const confidence = this.storedBoxes[i].confidence;\n this.storedBoxes[i] = { ...squarifiedBox, confidence, landmarks };\n }\n }\n if (detector && detector.boxes) {\n detector.boxes.forEach((prediction) => {\n prediction.box.startPoint.dispose();\n prediction.box.endPoint.dispose();\n prediction.landmarks.dispose();\n });\n }\n\n let results = tf.tidy(() => this.storedBoxes.map((box, i) => {\n const boxConfidence = box.confidence;\n\n // The facial bounding box landmarks could come either from blazeface (if we are using a fresh box), or from the mesh model (if we are reusing an old box).\n let face;\n let angle = 0;\n let rotationMatrix;\n\n if (config.face.detector.rotation && config.face.mesh.enabled && tf.ENV.flags.IS_BROWSER) {\n const [indexOfMouth, indexOfForehead] = (box.landmarks.length >= meshLandmarks.count) ? meshLandmarks.symmetryLine : blazeFaceLandmarks.symmetryLine;\n angle = util.computeRotation(box.landmarks[indexOfMouth], box.landmarks[indexOfForehead]);\n const faceCenter = bounding.getBoxCenter({ startPoint: box.startPoint, endPoint: box.endPoint });\n const faceCenterNormalized = [faceCenter[0] / input.shape[2], faceCenter[1] / input.shape[1]];\n const rotatedImage = tf.image.rotateWithOffset(input, angle, 0, faceCenterNormalized); // rotateWithOffset is not defined for tfjs-node\n rotationMatrix = util.buildRotationMatrix(-angle, faceCenter);\n if (config.face.mesh.enabled) face = bounding.cutBoxFromImageAndResize({ startPoint: box.startPoint, endPoint: box.endPoint }, rotatedImage, [this.meshSize, this.meshSize]).div(255);\n else face = bounding.cutBoxFromImageAndResize({ startPoint: box.startPoint, endPoint: box.endPoint }, rotatedImage, [this.boxSize, this.boxSize]).div(255);\n } else {\n rotationMatrix = util.IDENTITY_MATRIX;\n const clonedImage = input.clone();\n if (config.face.mesh.enabled) face = bounding.cutBoxFromImageAndResize({ startPoint: box.startPoint, endPoint: box.endPoint }, clonedImage, [this.meshSize, this.meshSize]).div(255);\n else face = bounding.cutBoxFromImageAndResize({ startPoint: box.startPoint, endPoint: box.endPoint }, clonedImage, [this.boxSize, this.boxSize]).div(255);\n }\n\n // if we're not going to produce mesh, don't spend time with further processing\n if (!config.face.mesh.enabled) {\n const prediction = {\n coords: null,\n box,\n faceConfidence: null,\n boxConfidence,\n confidence: box.confidence,\n image: face,\n };\n return prediction;\n }\n\n const [, confidence, contourCoords] = this.meshDetector.predict(face); // The first returned tensor represents facial contours which are already included in the coordinates.\n const faceConfidence = confidence.dataSync()[0];\n if (faceConfidence < config.face.detector.minConfidence) return null; // if below confidence just exit\n const coordsReshaped = tf.reshape(contourCoords, [-1, 3]);\n let rawCoords = coordsReshaped.arraySync();\n\n if (config.face.iris.enabled) {\n const { box: leftEyeBox, boxSize: leftEyeBoxSize, crop: leftEyeCrop } = this.getEyeBox(rawCoords, face, eyeLandmarks.leftBounds[0], eyeLandmarks.leftBounds[1], true);\n const { box: rightEyeBox, boxSize: rightEyeBoxSize, crop: rightEyeCrop } = this.getEyeBox(rawCoords, face, eyeLandmarks.rightBounds[0], eyeLandmarks.rightBounds[1]);\n const eyePredictions = this.irisModel.predict(tf.concat([leftEyeCrop, rightEyeCrop]));\n const eyePredictionsData = eyePredictions.dataSync();\n const leftEyeData = eyePredictionsData.slice(0, irisLandmarks.numCoordinates * 3);\n const { rawCoords: leftEyeRawCoords, iris: leftIrisRawCoords } = this.getEyeCoords(leftEyeData, leftEyeBox, leftEyeBoxSize, true);\n const rightEyeData = eyePredictionsData.slice(irisLandmarks.numCoordinates * 3);\n const { rawCoords: rightEyeRawCoords, iris: rightIrisRawCoords } = this.getEyeCoords(rightEyeData, rightEyeBox, rightEyeBoxSize);\n const leftToRightEyeDepthDifference = this.getLeftToRightEyeDepthDifference(rawCoords);\n if (Math.abs(leftToRightEyeDepthDifference) < 30) { // User is looking straight ahead.\n replaceRawCoordinates(rawCoords, leftEyeRawCoords, 'left', null);\n replaceRawCoordinates(rawCoords, rightEyeRawCoords, 'right', null);\n // If the user is looking to the left or to the right, the iris coordinates tend to diverge too much from the mesh coordinates for them to be merged\n // So we only update a single contour line above and below the eye.\n } else if (leftToRightEyeDepthDifference < 1) { // User is looking towards the right.\n replaceRawCoordinates(rawCoords, leftEyeRawCoords, 'left', ['EyeUpper0', 'EyeLower0']);\n } else { // User is looking towards the left.\n replaceRawCoordinates(rawCoords, rightEyeRawCoords, 'right', ['EyeUpper0', 'EyeLower0']);\n }\n const adjustedLeftIrisCoords = this.getAdjustedIrisCoords(rawCoords, leftIrisRawCoords, 'left');\n const adjustedRightIrisCoords = this.getAdjustedIrisCoords(rawCoords, rightIrisRawCoords, 'right');\n rawCoords = rawCoords.concat(adjustedLeftIrisCoords).concat(adjustedRightIrisCoords);\n }\n\n // override box from detection with one calculated from mesh\n const transformedCoordsData = this.transformRawCoords(rawCoords, box, angle, rotationMatrix);\n box = bounding.enlargeBox(this.calculateLandmarksBoundingBox(transformedCoordsData), 1.5); // redefine box with mesh calculated one\n const transformedCoords = tf.tensor2d(transformedCoordsData);\n\n // do rotation one more time with mesh keypoints if we want to return perfect image\n if (config.face.detector.rotation && config.face.mesh.enabled && (config.face.description.enabled || config.face.embedding.enabled) && tf.ENV.flags.IS_BROWSER) {\n const [indexOfMouth, indexOfForehead] = (box.landmarks.length >= meshLandmarks.count) ? meshLandmarks.symmetryLine : blazeFaceLandmarks.symmetryLine;\n angle = util.computeRotation(box.landmarks[indexOfMouth], box.landmarks[indexOfForehead]);\n const faceCenter = bounding.getBoxCenter({ startPoint: box.startPoint, endPoint: box.endPoint });\n const faceCenterNormalized = [faceCenter[0] / input.shape[2], faceCenter[1] / input.shape[1]];\n const rotatedImage = tf.image.rotateWithOffset(input, angle, 0, faceCenterNormalized); // rotateWithOffset is not defined for tfjs-node\n rotationMatrix = util.buildRotationMatrix(-angle, faceCenter);\n face = bounding.cutBoxFromImageAndResize({ startPoint: box.startPoint, endPoint: box.endPoint }, rotatedImage, [this.meshSize, this.meshSize]).div(255);\n }\n\n const prediction = {\n coords: transformedCoords,\n box,\n faceConfidence,\n boxConfidence,\n image: face,\n rawCoords,\n };\n\n // updated stored cache values\n const squarifiedLandmarksBox = bounding.squarifyBox(box);\n this.storedBoxes[i] = { ...squarifiedLandmarksBox, landmarks: transformedCoordsData, confidence: box.confidence, faceConfidence };\n\n return prediction;\n }));\n\n results = results.filter((a) => a !== null);\n // remove cache entries for detected boxes on low confidence\n if (config.face.mesh.enabled) this.storedBoxes = this.storedBoxes.filter((a) => a.faceConfidence > config.face.detector.minConfidence);\n this.detectedFaces = results.length;\n\n return results;\n }\n\n calculateLandmarksBoundingBox(landmarks) {\n const xs = landmarks.map((d) => d[0]);\n const ys = landmarks.map((d) => d[1]);\n const startPoint = [Math.min(...xs), Math.min(...ys)];\n const endPoint = [Math.max(...xs), Math.max(...ys)];\n return { startPoint, endPoint, landmarks };\n }\n}\n", "import { log, now, mergeDeep } from './helpers';\nimport * as sysinfo from './sysinfo';\nimport * as tf from '../dist/tfjs.esm.js';\nimport * as backend from './tfjs/backend';\nimport * as faceall from './faceall';\nimport * as facemesh from './blazeface/facemesh';\nimport * as age from './age/age';\nimport * as gender from './gender/gender';\nimport * as faceres from './faceres/faceres';\nimport * as emotion from './emotion/emotion';\nimport * as embedding from './embedding/embedding';\nimport * as posenet from './posenet/posenet';\nimport * as handpose from './handpose/handpose';\nimport * as blazepose from './blazepose/blazepose';\nimport * as nanodet from './nanodet/nanodet';\nimport * as gesture from './gesture/gesture';\nimport * as image from './image/image';\nimport * as draw from './draw/draw';\nimport * as profile from './profile';\nimport { Config, defaults } from './config';\nimport { Result } from './result';\nimport * as sample from './sample';\nimport * as app from '../package.json';\n\n/** Generic Tensor object type */\nexport type Tensor = typeof tf.Tensor;\nexport type { Config } from './config';\nexport type { Result } from './result';\n/** Defines all possible input types for **Human** detection */\nexport type Input = Tensor | ImageData | ImageBitmap | HTMLVideoElement | HTMLCanvasElement | OffscreenCanvas;\n/** Error message */\nexport type Error = { error: string };\n/** Instance of TensorFlow/JS */\nexport type TensorFlow = typeof tf;\n/** Generic Model object type, holds instance of individual models */\ntype Model = Object;\n\n/**\n * **Human** library main class\n *\n * All methods and properties are available only as members of Human class\n *\n * - Configuration object definition: {@link Config}\n * - Results object definition: {@link Result}\n * - Possible inputs: {@link Input}\n */\nexport class Human {\n version: string;\n config: Config;\n state: string;\n image: { tensor: Tensor, canvas: OffscreenCanvas | HTMLCanvasElement };\n // classes\n tf: TensorFlow;\n draw: {\n drawOptions?: typeof draw.drawOptions,\n gesture: typeof draw.gesture,\n face: typeof draw.face,\n body: typeof draw.body,\n hand: typeof draw.hand,\n canvas: typeof draw.canvas,\n all: typeof draw.all,\n };\n // models\n models: {\n face: facemesh.MediaPipeFaceMesh | null,\n posenet: posenet.PoseNet | null,\n blazepose: Model | null,\n handpose: handpose.HandPose | null,\n iris: Model | null,\n age: Model | null,\n gender: Model | null,\n emotion: Model | null,\n embedding: Model | null,\n nanodet: Model | null,\n faceres: Model | null,\n };\n classes: {\n facemesh: typeof facemesh;\n age: typeof age;\n gender: typeof gender;\n emotion: typeof emotion;\n body: typeof posenet | typeof blazepose;\n hand: typeof handpose;\n nanodet: typeof nanodet;\n faceres: typeof faceres;\n };\n sysinfo: { platform: string, agent: string };\n perf: any;\n #numTensors: number;\n #analyzeMemoryLeaks: boolean;\n #checkSanity: boolean;\n #firstRun: boolean;\n // definition end\n\n constructor(userConfig: Config | Object = {}) {\n this.tf = tf;\n this.draw = draw;\n this.version = app.version;\n this.config = mergeDeep(defaults, userConfig);\n this.state = 'idle';\n this.#numTensors = 0;\n this.#analyzeMemoryLeaks = false;\n this.#checkSanity = false;\n this.#firstRun = true;\n this.perf = {};\n // object that contains all initialized models\n this.models = {\n face: null,\n posenet: null,\n blazepose: null,\n handpose: null,\n iris: null,\n age: null,\n gender: null,\n emotion: null,\n embedding: null,\n nanodet: null,\n faceres: null,\n };\n // export access to image processing\n // @ts-ignore\n this.image = (input: Input) => image.process(input, this.config);\n // export raw access to underlying models\n this.classes = {\n facemesh,\n age,\n gender,\n emotion,\n faceres,\n body: this.config.body.modelPath.includes('posenet') ? posenet : blazepose,\n hand: handpose,\n nanodet,\n };\n // include platform info\n this.sysinfo = sysinfo.info();\n }\n\n profileData(): { newBytes, newTensors, peakBytes, numKernelOps, timeKernelOps, slowestKernelOps, largestKernelOps } | {} {\n if (this.config.profile) return profile.data;\n return {};\n }\n\n // helper function: measure tensor leak\n /** @hidden */\n analyze = (...msg) => {\n if (!this.#analyzeMemoryLeaks) return;\n const current = this.tf.engine().state.numTensors;\n const previous = this.#numTensors;\n this.#numTensors = current;\n const leaked = current - previous;\n if (leaked !== 0) log(...msg, leaked);\n }\n\n // quick sanity check on inputs\n /** @hidden */\n #sanity = (input): null | string => {\n if (!this.#checkSanity) return null;\n if (!input) return 'input is not defined';\n if (this.tf.ENV.flags.IS_NODE && !(input instanceof tf.Tensor)) return 'input must be a tensor';\n try {\n this.tf.getBackend();\n } catch {\n return 'backend not loaded';\n }\n return null;\n }\n\n similarity(embedding1: Array, embedding2: Array): number {\n if (this.config.face.description.enabled) return faceres.similarity(embedding1, embedding2);\n if (this.config.face.embedding.enabled) return embedding.similarity(embedding1, embedding2);\n return 0;\n }\n\n // eslint-disable-next-line class-methods-use-this\n enhance(input: Tensor): Tensor | null {\n return faceres.enhance(input);\n }\n\n // eslint-disable-next-line class-methods-use-this\n match(faceEmbedding: Array, db: Array<{ name: string, source: string, embedding: number[] }>, threshold = 0): { name: string, source: string, similarity: number, embedding: number[] } {\n return faceres.match(faceEmbedding, db, threshold);\n }\n\n // preload models, not explicitly required as it's done automatically on first use\n async load(userConfig: Config | Object = {}) {\n this.state = 'load';\n const timeStamp = now();\n if (userConfig) this.config = mergeDeep(this.config, userConfig);\n\n if (this.#firstRun) {\n if (this.config.debug) log(`version: ${this.version}`);\n if (this.config.debug) log(`tfjs version: ${this.tf.version_core}`);\n if (this.config.debug) log('platform:', this.sysinfo.platform);\n if (this.config.debug) log('agent:', this.sysinfo.agent);\n\n await this.#checkBackend(true);\n if (this.tf.ENV.flags.IS_BROWSER) {\n if (this.config.debug) log('configuration:', this.config);\n if (this.config.debug) log('tf flags:', this.tf.ENV.flags);\n }\n }\n if (this.config.async) {\n [\n this.models.face,\n this.models.age,\n this.models.gender,\n this.models.emotion,\n this.models.embedding,\n this.models.handpose,\n this.models.posenet,\n this.models.blazepose,\n this.models.nanodet,\n this.models.faceres,\n ] = await Promise.all([\n this.models.face || (this.config.face.enabled ? facemesh.load(this.config) : null),\n this.models.age || ((this.config.face.enabled && this.config.face.age.enabled) ? age.load(this.config) : null),\n this.models.gender || ((this.config.face.enabled && this.config.face.gender.enabled) ? gender.load(this.config) : null),\n this.models.emotion || ((this.config.face.enabled && this.config.face.emotion.enabled) ? emotion.load(this.config) : null),\n this.models.embedding || ((this.config.face.enabled && this.config.face.embedding.enabled) ? embedding.load(this.config) : null),\n this.models.handpose || (this.config.hand.enabled ? handpose.load(this.config) : null),\n this.models.posenet || (this.config.body.enabled && this.config.body.modelPath.includes('posenet') ? posenet.load(this.config) : null),\n this.models.posenet || (this.config.body.enabled && this.config.body.modelPath.includes('blazepose') ? blazepose.load(this.config) : null),\n this.models.nanodet || (this.config.object.enabled ? nanodet.load(this.config) : null),\n this.models.faceres || ((this.config.face.enabled && this.config.face.description.enabled) ? faceres.load(this.config) : null),\n ]);\n } else {\n if (this.config.face.enabled && !this.models.face) this.models.face = await facemesh.load(this.config);\n if (this.config.face.enabled && this.config.face.age.enabled && !this.models.age) this.models.age = await age.load(this.config);\n if (this.config.face.enabled && this.config.face.gender.enabled && !this.models.gender) this.models.gender = await gender.load(this.config);\n if (this.config.face.enabled && this.config.face.emotion.enabled && !this.models.emotion) this.models.emotion = await emotion.load(this.config);\n if (this.config.face.enabled && this.config.face.embedding.enabled && !this.models.embedding) this.models.embedding = await embedding.load(this.config);\n if (this.config.hand.enabled && !this.models.handpose) this.models.handpose = await handpose.load(this.config);\n if (this.config.body.enabled && !this.models.posenet && this.config.body.modelPath.includes('posenet')) this.models.posenet = await posenet.load(this.config);\n if (this.config.body.enabled && !this.models.blazepose && this.config.body.modelPath.includes('blazepose')) this.models.blazepose = await blazepose.load(this.config);\n if (this.config.object.enabled && !this.models.nanodet) this.models.nanodet = await nanodet.load(this.config);\n if (this.config.face.enabled && this.config.face.description.enabled && !this.models.faceres) this.models.faceres = await faceres.load(this.config);\n }\n\n if (this.#firstRun) {\n if (this.config.debug) log('tf engine state:', this.tf.engine().state.numBytes, 'bytes', this.tf.engine().state.numTensors, 'tensors');\n this.#firstRun = false;\n }\n\n const current = Math.trunc(now() - timeStamp);\n if (current > (this.perf.load || 0)) this.perf.load = current;\n }\n\n // check if backend needs initialization if it changed\n /** @hidden */\n #checkBackend = async (force = false) => {\n if (this.config.backend && (this.config.backend !== '') && force || (this.tf.getBackend() !== this.config.backend)) {\n const timeStamp = now();\n this.state = 'backend';\n /* force backend reload\n if (this.config.backend in tf.engine().registry) {\n const backendFactory = tf.findBackendFactory(this.config.backend);\n tf.removeBackend(this.config.backend);\n tf.registerBackend(this.config.backend, backendFactory);\n } else {\n log('Backend not registred:', this.config.backend);\n }\n */\n\n if (this.config.backend && this.config.backend !== '') {\n if (this.tf.ENV.flags.IS_BROWSER && this.config.backend === 'tensorflow') this.config.backend = 'webgl';\n if (this.tf.ENV.flags.IS_NODE && (this.config.backend === 'webgl' || this.config.backend === 'wasm')) this.config.backend = 'tensorflow';\n if (this.config.debug) log('setting backend:', this.config.backend);\n\n if (this.config.backend === 'wasm') {\n if (this.config.debug) log('wasm path:', this.config.wasmPath);\n this.tf.setWasmPaths(this.config.wasmPath);\n const simd = await this.tf.env().getAsync('WASM_HAS_SIMD_SUPPORT');\n const mt = await this.tf.env().getAsync('WASM_HAS_MULTITHREAD_SUPPORT');\n if (this.config.debug) log(`wasm execution: ${simd ? 'SIMD' : 'no SIMD'} ${mt ? 'multithreaded' : 'singlethreaded'}`);\n if (!simd) log('warning: wasm simd support is not enabled');\n }\n\n if (this.config.backend === 'humangl') backend.register();\n try {\n await this.tf.setBackend(this.config.backend);\n } catch (err) {\n log('error: cannot set backend:', this.config.backend, err);\n }\n }\n this.tf.enableProdMode();\n /* debug mode is really too mcuh\n tf.enableDebugMode();\n */\n if (this.tf.getBackend() === 'webgl') {\n if (this.config.deallocate) {\n log('changing webgl: WEBGL_DELETE_TEXTURE_THRESHOLD:', this.config.deallocate);\n this.tf.ENV.set('WEBGL_DELETE_TEXTURE_THRESHOLD', this.config.deallocate ? 0 : -1);\n }\n // this.tf.ENV.set('WEBGL_FORCE_F16_TEXTURES', true);\n // this.tf.ENV.set('WEBGL_PACK_DEPTHWISECONV', true);\n const gl = await this.tf.backend().getGPGPUContext().gl;\n if (this.config.debug) log(`gl version:${gl.getParameter(gl.VERSION)} renderer:${gl.getParameter(gl.RENDERER)}`);\n }\n await this.tf.ready();\n this.perf.backend = Math.trunc(now() - timeStamp);\n }\n }\n\n // main detect function\n async detect(input: Input, userConfig: Config | Object = {}): Promise {\n // detection happens inside a promise\n return new Promise(async (resolve) => {\n this.state = 'config';\n let timeStamp;\n\n // update configuration\n this.config = mergeDeep(this.config, userConfig);\n\n // sanity checks\n this.state = 'check';\n const error = this.#sanity(input);\n if (error) {\n log(error, input);\n resolve({ error });\n }\n\n const timeStart = now();\n\n // configure backend\n await this.#checkBackend();\n\n // load models if enabled\n await this.load();\n\n if (this.config.scoped) this.tf.engine().startScope();\n this.analyze('Start Scope:');\n\n timeStamp = now();\n const process = image.process(input, this.config);\n if (!process || !process.tensor) {\n log('could not convert input to tensor');\n resolve({ error: 'could not convert input to tensor' });\n return;\n }\n this.perf.image = Math.trunc(now() - timeStamp);\n this.analyze('Get Image:');\n\n // prepare where to store model results\n let bodyRes;\n let handRes;\n let faceRes;\n let objectRes;\n let current;\n\n // run face detection followed by all models that rely on face bounding box: face mesh, age, gender, emotion\n if (this.config.async) {\n faceRes = this.config.face.enabled ? faceall.detectFace(this, process.tensor) : [];\n if (this.perf.face) delete this.perf.face;\n } else {\n this.state = 'run:face';\n timeStamp = now();\n faceRes = this.config.face.enabled ? await faceall.detectFace(this, process.tensor) : [];\n current = Math.trunc(now() - timeStamp);\n if (current > 0) this.perf.face = current;\n }\n\n // run body: can be posenet or blazepose\n this.analyze('Start Body:');\n if (this.config.async) {\n if (this.config.body.modelPath.includes('posenet')) bodyRes = this.config.body.enabled ? this.models.posenet?.estimatePoses(process.tensor, this.config) : [];\n else bodyRes = this.config.body.enabled ? blazepose.predict(process.tensor, this.config) : [];\n if (this.perf.body) delete this.perf.body;\n } else {\n this.state = 'run:body';\n timeStamp = now();\n if (this.config.body.modelPath.includes('posenet')) bodyRes = this.config.body.enabled ? await this.models.posenet?.estimatePoses(process.tensor, this.config) : [];\n else bodyRes = this.config.body.enabled ? await blazepose.predict(process.tensor, this.config) : [];\n current = Math.trunc(now() - timeStamp);\n if (current > 0) this.perf.body = current;\n }\n this.analyze('End Body:');\n\n // run handpose\n this.analyze('Start Hand:');\n if (this.config.async) {\n handRes = this.config.hand.enabled ? this.models.handpose?.estimateHands(process.tensor, this.config) : [];\n if (this.perf.hand) delete this.perf.hand;\n } else {\n this.state = 'run:hand';\n timeStamp = now();\n handRes = this.config.hand.enabled ? await this.models.handpose?.estimateHands(process.tensor, this.config) : [];\n current = Math.trunc(now() - timeStamp);\n if (current > 0) this.perf.hand = current;\n }\n this.analyze('End Hand:');\n\n // run nanodet\n this.analyze('Start Object:');\n if (this.config.async) {\n objectRes = this.config.object.enabled ? nanodet.predict(process.tensor, this.config) : [];\n if (this.perf.object) delete this.perf.object;\n } else {\n this.state = 'run:object';\n timeStamp = now();\n objectRes = this.config.object.enabled ? await nanodet.predict(process.tensor, this.config) : [];\n current = Math.trunc(now() - timeStamp);\n if (current > 0) this.perf.object = current;\n }\n this.analyze('End Object:');\n\n // if async wait for results\n if (this.config.async) {\n [faceRes, bodyRes, handRes, objectRes] = await Promise.all([faceRes, bodyRes, handRes, objectRes]);\n }\n process.tensor.dispose();\n\n if (this.config.scoped) this.tf.engine().endScope();\n this.analyze('End Scope:');\n\n let gestureRes = [];\n if (this.config.gesture.enabled) {\n timeStamp = now();\n // @ts-ignore\n gestureRes = [...gesture.face(faceRes), ...gesture.body(bodyRes), ...gesture.hand(handRes), ...gesture.iris(faceRes)];\n if (!this.config.async) this.perf.gesture = Math.trunc(now() - timeStamp);\n else if (this.perf.gesture) delete this.perf.gesture;\n }\n\n this.perf.total = Math.trunc(now() - timeStart);\n this.state = 'idle';\n const result = {\n face: faceRes,\n body: bodyRes,\n hand: handRes,\n gesture: gestureRes,\n object: objectRes,\n performance: this.perf,\n canvas: process.canvas,\n };\n // log('Result:', result);\n resolve(result);\n });\n }\n\n /** @hidden */\n #warmupBitmap = async () => {\n const b64toBlob = (base64, type = 'application/octet-stream') => fetch(`data:${type};base64,${base64}`).then((res) => res.blob());\n let blob;\n let res;\n switch (this.config.warmup) {\n case 'face': blob = await b64toBlob(sample.face); break;\n case 'full': blob = await b64toBlob(sample.body); break;\n default: blob = null;\n }\n if (blob) {\n const bitmap = await createImageBitmap(blob);\n res = await this.detect(bitmap, this.config);\n bitmap.close();\n }\n return res;\n }\n\n /** @hidden */\n #warmupCanvas = async () => new Promise((resolve) => {\n let src;\n let size = 0;\n switch (this.config.warmup) {\n case 'face':\n size = 256;\n src = 'data:image/jpeg;base64,' + sample.face;\n break;\n case 'full':\n case 'body':\n size = 1200;\n src = 'data:image/jpeg;base64,' + sample.body;\n break;\n default:\n src = null;\n }\n // src = encodeURI('../assets/human-sample-upper.jpg');\n const img = new Image();\n img.onload = async () => {\n const canvas = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(size, size) : document.createElement('canvas');\n canvas.width = img.naturalWidth;\n canvas.height = img.naturalHeight;\n const ctx = canvas.getContext('2d');\n ctx?.drawImage(img, 0, 0);\n // const data = ctx?.getImageData(0, 0, canvas.height, canvas.width);\n const res = await this.detect(canvas, this.config);\n resolve(res);\n };\n if (src) img.src = src;\n else resolve(null);\n });\n\n /** @hidden */\n #warmupNode = async () => {\n const atob = (str) => Buffer.from(str, 'base64');\n const img = this.config.warmup === 'face' ? atob(sample.face) : atob(sample.body);\n // @ts-ignore\n const data = tf.node.decodeJpeg(img); // tf.node is only defined when compiling for nodejs\n const expanded = data.expandDims(0);\n this.tf.dispose(data);\n // log('Input:', expanded);\n const res = await this.detect(expanded, this.config);\n this.tf.dispose(expanded);\n return res;\n }\n\n async warmup(userConfig: Config | Object = {}): Promise {\n const t0 = now();\n if (userConfig) this.config = mergeDeep(this.config, userConfig);\n const save = this.config.videoOptimized;\n this.config.videoOptimized = false;\n let res;\n if (typeof createImageBitmap === 'function') res = await this.#warmupBitmap();\n else if (typeof Image !== 'undefined') res = await this.#warmupCanvas();\n else res = await this.#warmupNode();\n this.config.videoOptimized = save;\n const t1 = now();\n if (this.config.debug) log('Warmup', this.config.warmup, Math.round(t1 - t0), 'ms', res);\n return res;\n }\n}\n\n/**\n * Class Human is also available as default export\n */\nexport { Human as default };\n", "import { log } from '../helpers';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as modelBase from './modelBase';\nimport * as decodeMultiple from './decodeMultiple';\nimport * as decodePose from './decodePose';\nimport * as util from './util';\n\nasync function estimateMultiple(input, res, config, inputSize) {\n return new Promise(async (resolve) => {\n const allTensorBuffers = await util.toTensorBuffers3D([res.heatmapScores, res.offsets, res.displacementFwd, res.displacementBwd]);\n const scoresBuffer = allTensorBuffers[0];\n const offsetsBuffer = allTensorBuffers[1];\n const displacementsFwdBuffer = allTensorBuffers[2];\n const displacementsBwdBuffer = allTensorBuffers[3];\n const poses = await decodeMultiple.decodeMultiplePoses(scoresBuffer, offsetsBuffer, displacementsFwdBuffer, displacementsBwdBuffer, config.body.nmsRadius, config.body.maxDetections, config.body.scoreThreshold);\n const scaled = util.scaleAndFlipPoses(poses, [input.shape[1], input.shape[2]], [inputSize, inputSize]);\n resolve(scaled);\n });\n}\n\nasync function estimateSingle(input, res, config, inputSize) {\n return new Promise(async (resolve) => {\n const pose = await decodePose.decodeSinglePose(res.heatmapScores, res.offsets, config.body.scoreThreshold);\n const scaled = util.scaleAndFlipPoses([pose], [input.shape[1], input.shape[2]], [inputSize, inputSize]);\n resolve(scaled);\n });\n}\n\nexport class PoseNet {\n baseModel: any;\n inputSize: number\n constructor(model) {\n this.baseModel = model;\n this.inputSize = model.model.inputs[0].shape[1];\n if (this.inputSize < 128) this.inputSize = 257;\n }\n\n async estimatePoses(input, config) {\n const resized = util.resizeTo(input, [this.inputSize, this.inputSize]);\n const res = this.baseModel.predict(resized, config);\n\n const poses = (config.body.maxDetections < 2)\n ? await estimateSingle(input, res, config, this.inputSize)\n : await estimateMultiple(input, res, config, this.inputSize);\n\n res.heatmapScores.dispose();\n res.offsets.dispose();\n res.displacementFwd.dispose();\n res.displacementBwd.dispose();\n resized.dispose();\n\n return poses;\n }\n\n dispose() {\n this.baseModel.dispose();\n }\n}\n\nexport async function load(config) {\n const model = await tf.loadGraphModel(config.body.modelPath);\n const mobilenet = new modelBase.BaseModel(model);\n if (config.debug) log(`load model: ${config.body.modelPath.match(/\\/(.*)\\./)[1]}`);\n return new PoseNet(mobilenet);\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nfunction nameOutputResultsMobileNet(results) {\n const [offsets, heatmap, displacementFwd, displacementBwd] = results;\n return { offsets, heatmap, displacementFwd, displacementBwd };\n}\n\nexport class BaseModel {\n model: any;\n constructor(model) {\n this.model = model;\n }\n\n predict(input) {\n return tf.tidy(() => {\n const asFloat = input.toFloat().div(127.5).sub(1.0);\n const asBatch = asFloat.expandDims(0);\n const results = this.model.predict(asBatch);\n const results3d = results.map((y) => y.squeeze([0]));\n const namedResults = nameOutputResultsMobileNet(results3d);\n return {\n heatmapScores: namedResults.heatmap.sigmoid(),\n offsets: namedResults.offsets,\n displacementFwd: namedResults.displacementFwd,\n displacementBwd: namedResults.displacementBwd,\n };\n });\n }\n\n dispose() {\n this.model.dispose();\n }\n}\n", "// algorithm based on Coursera Lecture from Algorithms, Part 1: https://www.coursera.org/learn/algorithms-part1/lecture/ZjoSM/heapsort\nfunction half(k) {\n return Math.floor(k / 2);\n}\nexport class MaxHeap {\n priorityQueue: any;\n numberOfElements: number;\n getElementValue: any;\n\n constructor(maxSize, getElementValue) {\n this.priorityQueue = new Array(maxSize);\n this.numberOfElements = -1;\n this.getElementValue = getElementValue;\n }\n\n enqueue(x) {\n this.priorityQueue[++this.numberOfElements] = x;\n this.swim(this.numberOfElements);\n }\n\n dequeue() {\n const max = this.priorityQueue[0];\n this.exchange(0, this.numberOfElements--);\n this.sink(0);\n this.priorityQueue[this.numberOfElements + 1] = null;\n return max;\n }\n\n empty() {\n return this.numberOfElements === -1;\n }\n\n size() {\n return this.numberOfElements + 1;\n }\n\n all() {\n return this.priorityQueue.slice(0, this.numberOfElements + 1);\n }\n\n max() {\n return this.priorityQueue[0];\n }\n\n swim(k) {\n while (k > 0 && this.less(half(k), k)) {\n this.exchange(k, half(k));\n k = half(k);\n }\n }\n\n sink(k) {\n while (2 * k <= this.numberOfElements) {\n let j = 2 * k;\n if (j < this.numberOfElements && this.less(j, j + 1)) j++;\n if (!this.less(k, j)) break;\n this.exchange(k, j);\n k = j;\n }\n }\n\n getValueAt(i) {\n return this.getElementValue(this.priorityQueue[i]);\n }\n\n less(i, j) {\n return this.getValueAt(i) < this.getValueAt(j);\n }\n\n exchange(i, j) {\n const t = this.priorityQueue[i];\n this.priorityQueue[i] = this.priorityQueue[j];\n this.priorityQueue[j] = t;\n }\n}\n", "import * as heapSort from './heapSort';\n\nfunction scoreIsMaximumInLocalWindow(keypointId, score, heatmapY, heatmapX, localMaximumRadius, scores) {\n const [height, width] = scores.shape;\n let localMaximum = true;\n const yStart = Math.max(heatmapY - localMaximumRadius, 0);\n const yEnd = Math.min(heatmapY + localMaximumRadius + 1, height);\n for (let yCurrent = yStart; yCurrent < yEnd; ++yCurrent) {\n const xStart = Math.max(heatmapX - localMaximumRadius, 0);\n const xEnd = Math.min(heatmapX + localMaximumRadius + 1, width);\n for (let xCurrent = xStart; xCurrent < xEnd; ++xCurrent) {\n if (scores.get(yCurrent, xCurrent, keypointId) > score) {\n localMaximum = false;\n break;\n }\n }\n if (!localMaximum) break;\n }\n return localMaximum;\n}\n\nexport function buildPartWithScoreQueue(scoreThreshold, localMaximumRadius, scores) {\n const [height, width, numKeypoints] = scores.shape;\n const queue = new heapSort.MaxHeap(height * width * numKeypoints, ({ score }) => score);\n for (let heatmapY = 0; heatmapY < height; ++heatmapY) {\n for (let heatmapX = 0; heatmapX < width; ++heatmapX) {\n for (let keypointId = 0; keypointId < numKeypoints; ++keypointId) {\n const score = scores.get(heatmapY, heatmapX, keypointId);\n // Only consider parts with score greater or equal to threshold as root candidates.\n if (score < scoreThreshold) continue;\n // Only consider keypoints whose score is maximum in a local window.\n if (scoreIsMaximumInLocalWindow(keypointId, score, heatmapY, heatmapX, localMaximumRadius, scores)) {\n queue.enqueue({ score, part: { heatmapY, heatmapX, id: keypointId } });\n }\n }\n }\n }\n return queue;\n}\n", "import * as keypoints from './keypoints';\nimport * as vectors from './vectors';\nimport * as decoders from './decoders';\n\nconst parentChildrenTuples = keypoints.poseChain.map(([parentJoinName, childJoinName]) => ([keypoints.partIds[parentJoinName], keypoints.partIds[childJoinName]]));\nconst parentToChildEdges = parentChildrenTuples.map(([, childJointId]) => childJointId);\nconst childToParentEdges = parentChildrenTuples.map(([parentJointId]) => parentJointId);\n\nconst defaultOutputStride = 16;\n\nfunction getDisplacement(edgeId, point, displacements) {\n const numEdges = displacements.shape[2] / 2;\n return {\n y: displacements.get(point.y, point.x, edgeId),\n x: displacements.get(point.y, point.x, numEdges + edgeId),\n };\n}\n\nfunction getStridedIndexNearPoint(point, outputStride, height, width) {\n return {\n y: vectors.clamp(Math.round(point.y / outputStride), 0, height - 1),\n x: vectors.clamp(Math.round(point.x / outputStride), 0, width - 1),\n };\n}\n\nfunction traverseToTargetKeypoint(edgeId, sourceKeypoint, targetKeypointId, scoresBuffer, offsets, outputStride, displacements, offsetRefineStep = 2) {\n const [height, width] = scoresBuffer.shape;\n // Nearest neighbor interpolation for the source->target displacements.\n const sourceKeypointIndices = getStridedIndexNearPoint(sourceKeypoint.position, outputStride, height, width);\n const displacement = getDisplacement(edgeId, sourceKeypointIndices, displacements);\n const displacedPoint = vectors.addVectors(sourceKeypoint.position, displacement);\n let targetKeypoint = displacedPoint;\n for (let i = 0; i < offsetRefineStep; i++) {\n const targetKeypointIndices = getStridedIndexNearPoint(targetKeypoint, outputStride, height, width);\n const offsetPoint = vectors.getOffsetPoint(targetKeypointIndices.y, targetKeypointIndices.x, targetKeypointId, offsets);\n targetKeypoint = vectors.addVectors({\n x: targetKeypointIndices.x * outputStride,\n y: targetKeypointIndices.y * outputStride,\n }, { x: offsetPoint.x, y: offsetPoint.y });\n }\n const targetKeyPointIndices = getStridedIndexNearPoint(targetKeypoint, outputStride, height, width);\n const score = scoresBuffer.get(targetKeyPointIndices.y, targetKeyPointIndices.x, targetKeypointId);\n return { position: targetKeypoint, part: keypoints.partNames[targetKeypointId], score };\n}\n\nexport function decodePose(root, scores, offsets, outputStride, displacementsFwd, displacementsBwd) {\n const numParts = scores.shape[2];\n const numEdges = parentToChildEdges.length;\n const instanceKeypoints = new Array(numParts);\n // Start a new detection instance at the position of the root.\n const { part: rootPart, score: rootScore } = root;\n const rootPoint = vectors.getImageCoords(rootPart, outputStride, offsets);\n instanceKeypoints[rootPart.id] = {\n score: rootScore,\n part: keypoints.partNames[rootPart.id],\n position: rootPoint,\n };\n // Decode the part positions upwards in the tree, following the backward displacements.\n for (let edge = numEdges - 1; edge >= 0; --edge) {\n const sourceKeypointId = parentToChildEdges[edge];\n const targetKeypointId = childToParentEdges[edge];\n if (instanceKeypoints[sourceKeypointId] && !instanceKeypoints[targetKeypointId]) {\n instanceKeypoints[targetKeypointId] = traverseToTargetKeypoint(edge, instanceKeypoints[sourceKeypointId], targetKeypointId, scores, offsets, outputStride, displacementsBwd);\n }\n }\n // Decode the part positions downwards in the tree, following the forward displacements.\n for (let edge = 0; edge < numEdges; ++edge) {\n const sourceKeypointId = childToParentEdges[edge];\n const targetKeypointId = parentToChildEdges[edge];\n if (instanceKeypoints[sourceKeypointId] && !instanceKeypoints[targetKeypointId]) {\n instanceKeypoints[targetKeypointId] = traverseToTargetKeypoint(edge, instanceKeypoints[sourceKeypointId], targetKeypointId, scores, offsets, outputStride, displacementsFwd);\n }\n }\n return instanceKeypoints;\n}\n\nexport async function decodeSinglePose(heatmapScores, offsets, minScore) {\n let totalScore = 0.0;\n const heatmapValues = decoders.argmax2d(heatmapScores);\n const allTensorBuffers = await Promise.all([heatmapScores.buffer(), offsets.buffer(), heatmapValues.buffer()]);\n const scoresBuffer = allTensorBuffers[0];\n const offsetsBuffer = allTensorBuffers[1];\n const heatmapValuesBuffer = allTensorBuffers[2];\n const offsetPoints = decoders.getOffsetPoints(heatmapValuesBuffer, defaultOutputStride, offsetsBuffer);\n const offsetPointsBuffer = await offsetPoints.buffer();\n const keypointConfidence = Array.from(decoders.getPointsConfidence(scoresBuffer, heatmapValuesBuffer));\n const instanceKeypoints = keypointConfidence.map((score, i) => {\n totalScore += score;\n return {\n position: {\n y: offsetPointsBuffer.get(i, 0),\n x: offsetPointsBuffer.get(i, 1),\n },\n part: keypoints.partNames[i],\n score,\n };\n });\n const filteredKeypoints = instanceKeypoints.filter((kpt) => kpt.score > minScore);\n heatmapValues.dispose();\n offsetPoints.dispose();\n return { keypoints: filteredKeypoints, score: totalScore / instanceKeypoints.length };\n}\n", "import * as kpt from './keypoints';\n\nexport function getOffsetPoint(y, x, keypoint, offsets) {\n return {\n y: offsets.get(y, x, keypoint),\n x: offsets.get(y, x, keypoint + kpt.NUM_KEYPOINTS),\n };\n}\n\nexport function getImageCoords(part, outputStride, offsets) {\n const { heatmapY, heatmapX, id: keypoint } = part;\n const { y, x } = getOffsetPoint(heatmapY, heatmapX, keypoint, offsets);\n return {\n x: part.heatmapX * outputStride + x,\n y: part.heatmapY * outputStride + y,\n };\n}\n\nexport function fillArray(element, size) {\n const result = new Array(size);\n for (let i = 0; i < size; i++) {\n result[i] = element;\n }\n return result;\n}\n\nexport function clamp(a, min, max) {\n if (a < min) return min;\n if (a > max) return max;\n return a;\n}\n\nexport function squaredDistance(y1, x1, y2, x2) {\n const dy = y2 - y1;\n const dx = x2 - x1;\n return dy * dy + dx * dx;\n}\n\nexport function addVectors(a, b) {\n return { x: a.x + b.x, y: a.y + b.y };\n}\n\nexport function clampVector(a, min, max) {\n return { y: clamp(a.y, min, max), x: clamp(a.x, min, max) };\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\nimport * as kpt from './keypoints';\n\nexport function getPointsConfidence(heatmapScores, heatMapCoords) {\n const numKeypoints = heatMapCoords.shape[0];\n const result = new Float32Array(numKeypoints);\n for (let keypoint = 0; keypoint < numKeypoints; keypoint++) {\n const y = heatMapCoords.get(keypoint, 0);\n const x = heatMapCoords.get(keypoint, 1);\n result[keypoint] = heatmapScores.get(y, x, keypoint);\n }\n return result;\n}\n\nfunction getOffsetPoint(y, x, keypoint, offsetsBuffer) {\n return {\n y: offsetsBuffer.get(y, x, keypoint),\n x: offsetsBuffer.get(y, x, keypoint + kpt.NUM_KEYPOINTS),\n };\n}\n\nexport function getOffsetVectors(heatMapCoordsBuffer, offsetsBuffer) {\n const result: Array = [];\n for (let keypoint = 0; keypoint < kpt.NUM_KEYPOINTS; keypoint++) {\n const heatmapY = heatMapCoordsBuffer.get(keypoint, 0).valueOf();\n const heatmapX = heatMapCoordsBuffer.get(keypoint, 1).valueOf();\n const { x, y } = getOffsetPoint(heatmapY, heatmapX, keypoint, offsetsBuffer);\n result.push(y);\n result.push(x);\n }\n return tf.tensor2d(result, [kpt.NUM_KEYPOINTS, 2]);\n}\n\nexport function getOffsetPoints(heatMapCoordsBuffer, outputStride, offsetsBuffer) {\n return tf.tidy(() => heatMapCoordsBuffer.toTensor().mul(tf.scalar(outputStride, 'int32')).toFloat().add(getOffsetVectors(heatMapCoordsBuffer, offsetsBuffer)));\n}\n\nfunction mod(a, b) {\n return tf.tidy(() => {\n const floored = a.div(tf.scalar(b, 'int32'));\n return a.sub(floored.mul(tf.scalar(b, 'int32')));\n });\n}\n\nexport function argmax2d(inputs) {\n const [height, width, depth] = inputs.shape;\n return tf.tidy(() => {\n const reshaped = inputs.reshape([height * width, depth]);\n const coords = reshaped.argMax(0);\n const yCoords = coords.div(tf.scalar(width, 'int32')).expandDims(1);\n const xCoords = mod(coords, width).expandDims(1);\n return tf.concat([yCoords, xCoords], 1);\n });\n}\n", "import * as buildParts from './buildParts';\nimport * as decodePose from './decodePose';\nimport * as vectors from './vectors';\n\nconst kLocalMaximumRadius = 1;\nconst defaultOutputStride = 16;\n\nfunction withinNmsRadiusOfCorrespondingPoint(poses, squaredNmsRadius, { x, y }, keypointId) {\n return poses.some(({ keypoints }) => {\n const correspondingKeypoint = keypoints[keypointId].position;\n return vectors.squaredDistance(y, x, correspondingKeypoint.y, correspondingKeypoint.x) <= squaredNmsRadius;\n });\n}\n\nfunction getInstanceScore(existingPoses, squaredNmsRadius, instanceKeypoints) {\n const notOverlappedKeypointScores = instanceKeypoints.reduce((result, { position, score }, keypointId) => {\n if (!withinNmsRadiusOfCorrespondingPoint(existingPoses, squaredNmsRadius, position, keypointId)) result += score;\n return result;\n }, 0.0);\n return notOverlappedKeypointScores / instanceKeypoints.length;\n}\n\nexport function decodeMultiplePoses(scoresBuffer, offsetsBuffer, displacementsFwdBuffer, displacementsBwdBuffer, nmsRadius, maxDetections, scoreThreshold) {\n const poses: Array<{ keypoints: any, score: number }> = [];\n const queue = buildParts.buildPartWithScoreQueue(scoreThreshold, kLocalMaximumRadius, scoresBuffer);\n const squaredNmsRadius = nmsRadius ^ 2;\n // Generate at most maxDetections object instances per image in decreasing root part score order.\n while (poses.length < maxDetections && !queue.empty()) {\n // The top element in the queue is the next root candidate.\n const root = queue.dequeue();\n // Part-based non-maximum suppression: We reject a root candidate if it is within a disk of `nmsRadius` pixels from the corresponding part of a previously detected instance.\n const rootImageCoords = vectors.getImageCoords(root.part, defaultOutputStride, offsetsBuffer);\n if (withinNmsRadiusOfCorrespondingPoint(poses, squaredNmsRadius, rootImageCoords, root.part.id)) continue;\n // Else start a new detection instance at the position of the root.\n const keypoints = decodePose.decodePose(root, scoresBuffer, offsetsBuffer, defaultOutputStride, displacementsFwdBuffer, displacementsBwdBuffer);\n const score = getInstanceScore(poses, squaredNmsRadius, keypoints);\n if (score > scoreThreshold) poses.push({ keypoints, score });\n }\n return poses;\n}\n", "import * as kpt from './keypoints';\n\nexport function eitherPointDoesntMeetConfidence(a, b, minConfidence) {\n return (a < minConfidence || b < minConfidence);\n}\n\nexport function getAdjacentKeyPoints(keypoints, minConfidence) {\n return kpt.connectedPartIndices.reduce((result, [leftJoint, rightJoint]) => {\n if (eitherPointDoesntMeetConfidence(keypoints[leftJoint].score, keypoints[rightJoint].score, minConfidence)) {\n return result;\n }\n result.push([keypoints[leftJoint], keypoints[rightJoint]]);\n return result;\n }, []);\n}\n\nconst { NEGATIVE_INFINITY, POSITIVE_INFINITY } = Number;\nexport function getBoundingBox(keypoints) {\n return keypoints.reduce(({ maxX, maxY, minX, minY }, { position: { x, y } }) => ({\n maxX: Math.max(maxX, x),\n maxY: Math.max(maxY, y),\n minX: Math.min(minX, x),\n minY: Math.min(minY, y),\n }), {\n maxX: NEGATIVE_INFINITY,\n maxY: NEGATIVE_INFINITY,\n minX: POSITIVE_INFINITY,\n minY: POSITIVE_INFINITY,\n });\n}\n\nexport function getBoundingBoxPoints(keypoints) {\n const { minX, minY, maxX, maxY } = getBoundingBox(keypoints);\n return [{ x: minX, y: minY }, { x: maxX, y: minY }, { x: maxX, y: maxY }, { x: minX, y: maxY }];\n}\n\nexport async function toTensorBuffers3D(tensors) {\n return Promise.all(tensors.map((tensor) => tensor.buffer()));\n}\n\nexport function scalePose(pose, scaleY, scaleX) {\n return {\n score: pose.score,\n keypoints: pose.keypoints.map(({ score, part, position }) => ({\n score,\n part,\n position: { x: Math.trunc(position.x * scaleX), y: Math.trunc(position.y * scaleY) },\n })),\n };\n}\n\nexport function resizeTo(image, [targetH, targetW]) {\n const input = image.squeeze(0);\n const resized = input.resizeBilinear([targetH, targetW]);\n input.dispose();\n return resized;\n}\n\nexport function scaleAndFlipPoses(poses, [height, width], [inputResolutionHeight, inputResolutionWidth]) {\n const scaledPoses = poses.map((pose) => scalePose(pose, height / inputResolutionHeight, width / inputResolutionWidth));\n return scaledPoses;\n}\n", "// https://storage.googleapis.com/tfjs-models/demos/handpose/index.html\n\nimport { log } from '../helpers';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as handdetector from './handdetector';\nimport * as handpipeline from './handpipeline';\nimport * as anchors from './anchors';\n\nconst MESH_ANNOTATIONS = {\n thumb: [1, 2, 3, 4],\n indexFinger: [5, 6, 7, 8],\n middleFinger: [9, 10, 11, 12],\n ringFinger: [13, 14, 15, 16],\n pinky: [17, 18, 19, 20],\n palmBase: [0],\n};\n\nexport class HandPose {\n handPipeline: any;\n\n constructor(handPipeline) {\n this.handPipeline = handPipeline;\n }\n\n static getAnnotations() {\n return MESH_ANNOTATIONS;\n }\n\n async estimateHands(input, config) {\n const predictions = await this.handPipeline.estimateHands(input, config);\n if (!predictions) return [];\n const hands: Array<{ confidence: number, box: any, boxRaw: any, landmarks: any, annotations: any }> = [];\n for (const prediction of predictions) {\n const annotations = {};\n if (prediction.landmarks) {\n for (const key of Object.keys(MESH_ANNOTATIONS)) {\n annotations[key] = MESH_ANNOTATIONS[key].map((index) => prediction.landmarks[index]);\n }\n }\n const box = prediction.box ? [\n Math.max(0, prediction.box.topLeft[0]),\n Math.max(0, prediction.box.topLeft[1]),\n Math.min(input.shape[2], prediction.box.bottomRight[0]) - Math.max(0, prediction.box.topLeft[0]),\n Math.min(input.shape[1], prediction.box.bottomRight[1]) - Math.max(0, prediction.box.topLeft[1]),\n ] : [];\n const boxRaw = [\n (prediction.box.topLeft[0]) / input.shape[2],\n (prediction.box.topLeft[1]) / input.shape[1],\n (prediction.box.bottomRight[0] - prediction.box.topLeft[0]) / input.shape[2],\n (prediction.box.bottomRight[1] - prediction.box.topLeft[1]) / input.shape[1],\n ];\n hands.push({ confidence: prediction.confidence, box, boxRaw, landmarks: prediction.landmarks, annotations });\n }\n return hands;\n }\n}\n\nexport async function load(config) {\n const [handDetectorModel, handPoseModel] = await Promise.all([\n config.hand.enabled ? tf.loadGraphModel(config.hand.detector.modelPath, { fromTFHub: config.hand.detector.modelPath.includes('tfhub.dev') }) : null,\n config.hand.landmarks ? tf.loadGraphModel(config.hand.skeleton.modelPath, { fromTFHub: config.hand.skeleton.modelPath.includes('tfhub.dev') }) : null,\n ]);\n const handDetector = new handdetector.HandDetector(handDetectorModel, handDetectorModel?.inputs[0].shape[2], anchors.anchors);\n const handPipeline = new handpipeline.HandPipeline(handDetector, handPoseModel, handPoseModel?.inputs[0].shape[2]);\n const handPose = new HandPose(handPipeline);\n if (config.hand.enabled && config.debug) log(`load model: ${config.hand.detector.modelPath.match(/\\/(.*)\\./)[1]}`);\n if (config.hand.landmarks && config.debug) log(`load model: ${config.hand.skeleton.modelPath.match(/\\/(.*)\\./)[1]}`);\n return handPose;\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nexport function getBoxSize(box) {\n return [\n Math.abs(box.endPoint[0] - box.startPoint[0]),\n Math.abs(box.endPoint[1] - box.startPoint[1]),\n ];\n}\n\nexport function getBoxCenter(box) {\n return [\n box.startPoint[0] + (box.endPoint[0] - box.startPoint[0]) / 2,\n box.startPoint[1] + (box.endPoint[1] - box.startPoint[1]) / 2,\n ];\n}\n\nexport function cutBoxFromImageAndResize(box, image, cropSize) {\n const h = image.shape[1];\n const w = image.shape[2];\n const boxes = [[\n box.startPoint[1] / h,\n box.startPoint[0] / w,\n box.endPoint[1] / h,\n box.endPoint[0] / w,\n ]];\n return tf.image.cropAndResize(image, boxes, [0], cropSize);\n}\n\nexport function scaleBoxCoordinates(box, factor) {\n const startPoint = [box.startPoint[0] * factor[0], box.startPoint[1] * factor[1]];\n const endPoint = [box.endPoint[0] * factor[0], box.endPoint[1] * factor[1]];\n const palmLandmarks = box.palmLandmarks.map((coord) => {\n const scaledCoord = [coord[0] * factor[0], coord[1] * factor[1]];\n return scaledCoord;\n });\n return { startPoint, endPoint, palmLandmarks, confidence: box.confidence };\n}\n\nexport function enlargeBox(box, factor = 1.5) {\n const center = getBoxCenter(box);\n const size = getBoxSize(box);\n const newHalfSize = [factor * size[0] / 2, factor * size[1] / 2];\n const startPoint = [center[0] - newHalfSize[0], center[1] - newHalfSize[1]];\n const endPoint = [center[0] + newHalfSize[0], center[1] + newHalfSize[1]];\n return { startPoint, endPoint, palmLandmarks: box.palmLandmarks };\n}\n\nexport function squarifyBox(box) {\n const centers = getBoxCenter(box);\n const size = getBoxSize(box);\n const maxEdge = Math.max(...size);\n const halfSize = maxEdge / 2;\n const startPoint = [centers[0] - halfSize, centers[1] - halfSize];\n const endPoint = [centers[0] + halfSize, centers[1] + halfSize];\n return { startPoint, endPoint, palmLandmarks: box.palmLandmarks };\n}\n\nexport function shiftBox(box, shiftFactor) {\n const boxSize = [\n box.endPoint[0] - box.startPoint[0],\n box.endPoint[1] - box.startPoint[1],\n ];\n const shiftVector = [boxSize[0] * shiftFactor[0], boxSize[1] * shiftFactor[1]];\n const startPoint = [box.startPoint[0] + shiftVector[0], box.startPoint[1] + shiftVector[1]];\n const endPoint = [box.endPoint[0] + shiftVector[0], box.endPoint[1] + shiftVector[1]];\n return { startPoint, endPoint, palmLandmarks: box.palmLandmarks };\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\nimport * as box from './box';\n\nexport class HandDetector {\n model: any;\n anchors: any;\n anchorsTensor: any;\n inputSize: number;\n inputSizeTensor: any;\n doubleInputSizeTensor: any;\n\n constructor(model, inputSize, anchorsAnnotated) {\n this.model = model;\n this.anchors = anchorsAnnotated.map((anchor) => [anchor.x_center, anchor.y_center]);\n this.anchorsTensor = tf.tensor2d(this.anchors);\n this.inputSize = inputSize;\n this.inputSizeTensor = tf.tensor1d([inputSize, inputSize]);\n this.doubleInputSizeTensor = tf.tensor1d([inputSize * 2, inputSize * 2]);\n }\n\n normalizeBoxes(boxes) {\n return tf.tidy(() => {\n const boxOffsets = tf.slice(boxes, [0, 0], [-1, 2]);\n const boxSizes = tf.slice(boxes, [0, 2], [-1, 2]);\n const boxCenterPoints = tf.add(tf.div(boxOffsets, this.inputSizeTensor), this.anchorsTensor);\n const halfBoxSizes = tf.div(boxSizes, this.doubleInputSizeTensor);\n const startPoints = tf.mul(tf.sub(boxCenterPoints, halfBoxSizes), this.inputSizeTensor);\n const endPoints = tf.mul(tf.add(boxCenterPoints, halfBoxSizes), this.inputSizeTensor);\n return tf.concat2d([startPoints, endPoints], 1);\n });\n }\n\n normalizeLandmarks(rawPalmLandmarks, index) {\n return tf.tidy(() => {\n const landmarks = tf.add(tf.div(rawPalmLandmarks.reshape([-1, 7, 2]), this.inputSizeTensor), this.anchors[index]);\n return tf.mul(landmarks, this.inputSizeTensor);\n });\n }\n\n async getBoxes(input, config) {\n const batched = this.model.predict(input);\n const predictions = batched.squeeze();\n batched.dispose();\n const scoresT = tf.tidy(() => tf.sigmoid(tf.slice(predictions, [0, 0], [-1, 1])).squeeze());\n const scores = scoresT.dataSync();\n const rawBoxes = tf.slice(predictions, [0, 1], [-1, 4]);\n const boxes = this.normalizeBoxes(rawBoxes);\n rawBoxes.dispose();\n const filteredT = await tf.image.nonMaxSuppressionAsync(boxes, scores, config.hand.maxHands, config.hand.iouThreshold, config.hand.scoreThreshold);\n const filtered = filteredT.arraySync();\n\n scoresT.dispose();\n filteredT.dispose();\n const hands: Array<{ box: any, palmLandmarks: any, confidence: number }> = [];\n for (const index of filtered) {\n if (scores[index] >= config.hand.minConfidence) {\n const matchingBox = tf.slice(boxes, [index, 0], [1, -1]);\n const rawPalmLandmarks = tf.slice(predictions, [index, 5], [1, 14]);\n const palmLandmarks = tf.tidy(() => this.normalizeLandmarks(rawPalmLandmarks, index).reshape([-1, 2]));\n rawPalmLandmarks.dispose();\n hands.push({ box: matchingBox, palmLandmarks, confidence: scores[index] });\n }\n }\n predictions.dispose();\n boxes.dispose();\n return hands;\n }\n\n async estimateHandBounds(input, config) {\n const inputHeight = input.shape[1];\n const inputWidth = input.shape[2];\n const image = tf.tidy(() => input.resizeBilinear([this.inputSize, this.inputSize]).div(127.5).sub(1));\n const predictions = await this.getBoxes(image, config);\n image.dispose();\n const hands: Array<{}> = [];\n if (!predictions || predictions.length === 0) return hands;\n for (const prediction of predictions) {\n const boxes = prediction.box.dataSync();\n const startPoint = boxes.slice(0, 2);\n const endPoint = boxes.slice(2, 4);\n const palmLandmarks = prediction.palmLandmarks.arraySync();\n prediction.box.dispose();\n prediction.palmLandmarks.dispose();\n hands.push(box.scaleBoxCoordinates({ startPoint, endPoint, palmLandmarks, confidence: prediction.confidence }, [inputWidth / this.inputSize, inputHeight / this.inputSize]));\n }\n return hands;\n }\n}\n", "export function normalizeRadians(angle) {\n return angle - 2 * Math.PI * Math.floor((angle + Math.PI) / (2 * Math.PI));\n}\n\nexport function computeRotation(point1, point2) {\n const radians = Math.PI / 2 - Math.atan2(-(point2[1] - point1[1]), point2[0] - point1[0]);\n return normalizeRadians(radians);\n}\n\nexport const buildTranslationMatrix = (x, y) => [[1, 0, x], [0, 1, y], [0, 0, 1]];\n\nexport function dot(v1, v2) {\n let product = 0;\n for (let i = 0; i < v1.length; i++) {\n product += v1[i] * v2[i];\n }\n return product;\n}\n\nexport function getColumnFrom2DArr(arr, columnIndex) {\n const column: Array = [];\n for (let i = 0; i < arr.length; i++) {\n column.push(arr[i][columnIndex]);\n }\n return column;\n}\n\nexport function multiplyTransformMatrices(mat1, mat2) {\n const product: Array = [];\n const size = mat1.length;\n for (let row = 0; row < size; row++) {\n product.push([]);\n for (let col = 0; col < size; col++) {\n product[row].push(dot(mat1[row], getColumnFrom2DArr(mat2, col)));\n }\n }\n return product;\n}\n\nexport function buildRotationMatrix(rotation, center) {\n const cosA = Math.cos(rotation);\n const sinA = Math.sin(rotation);\n const rotationMatrix = [[cosA, -sinA, 0], [sinA, cosA, 0], [0, 0, 1]];\n const translationMatrix = buildTranslationMatrix(center[0], center[1]);\n const translationTimesRotation = multiplyTransformMatrices(translationMatrix, rotationMatrix);\n const negativeTranslationMatrix = buildTranslationMatrix(-center[0], -center[1]);\n return multiplyTransformMatrices(translationTimesRotation, negativeTranslationMatrix);\n}\n\nexport function invertTransformMatrix(matrix) {\n const rotationComponent = [[matrix[0][0], matrix[1][0]], [matrix[0][1], matrix[1][1]]];\n const translationComponent = [matrix[0][2], matrix[1][2]];\n const invertedTranslation = [\n -dot(rotationComponent[0], translationComponent),\n -dot(rotationComponent[1], translationComponent),\n ];\n return [\n rotationComponent[0].concat(invertedTranslation[0]),\n rotationComponent[1].concat(invertedTranslation[1]),\n [0, 0, 1],\n ];\n}\n\nexport function rotatePoint(homogeneousCoordinate, rotationMatrix) {\n return [\n dot(homogeneousCoordinate, rotationMatrix[0]),\n dot(homogeneousCoordinate, rotationMatrix[1]),\n ];\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\nimport * as box from './box';\nimport * as util from './util';\n\n// const PALM_BOX_SHIFT_VECTOR = [0, -0.4];\nconst PALM_BOX_ENLARGE_FACTOR = 5; // default 3\n// const HAND_BOX_SHIFT_VECTOR = [0, -0.1]; // move detected hand box by x,y to ease landmark detection\nconst HAND_BOX_ENLARGE_FACTOR = 1.65; // default 1.65\nconst PALM_LANDMARK_IDS = [0, 5, 9, 13, 17, 1, 2];\nconst PALM_LANDMARKS_INDEX_OF_PALM_BASE = 0;\nconst PALM_LANDMARKS_INDEX_OF_MIDDLE_FINGER_BASE = 2;\n\nexport class HandPipeline {\n handDetector: any;\n landmarkDetector: any;\n inputSize: number;\n storedBoxes: any;\n skipped: number;\n detectedHands: number;\n\n constructor(handDetector, landmarkDetector, inputSize) {\n this.handDetector = handDetector;\n this.landmarkDetector = landmarkDetector;\n this.inputSize = inputSize;\n this.storedBoxes = [];\n this.skipped = 0;\n this.detectedHands = 0;\n }\n\n getBoxForPalmLandmarks(palmLandmarks, rotationMatrix) {\n const rotatedPalmLandmarks = palmLandmarks.map((coord) => util.rotatePoint([...coord, 1], rotationMatrix));\n const boxAroundPalm = this.calculateLandmarksBoundingBox(rotatedPalmLandmarks);\n // return box.enlargeBox(box.squarifyBox(box.shiftBox(boxAroundPalm, PALM_BOX_SHIFT_VECTOR)), PALM_BOX_ENLARGE_FACTOR);\n return box.enlargeBox(box.squarifyBox(boxAroundPalm), PALM_BOX_ENLARGE_FACTOR);\n }\n\n getBoxForHandLandmarks(landmarks) {\n const boundingBox = this.calculateLandmarksBoundingBox(landmarks);\n // const boxAroundHand = box.enlargeBox(box.squarifyBox(box.shiftBox(boundingBox, HAND_BOX_SHIFT_VECTOR)), HAND_BOX_ENLARGE_FACTOR);\n const boxAroundHand = box.enlargeBox(box.squarifyBox(boundingBox), HAND_BOX_ENLARGE_FACTOR);\n boxAroundHand.palmLandmarks = [];\n for (let i = 0; i < PALM_LANDMARK_IDS.length; i++) {\n boxAroundHand.palmLandmarks.push(landmarks[PALM_LANDMARK_IDS[i]].slice(0, 2));\n }\n return boxAroundHand;\n }\n\n transformRawCoords(rawCoords, box2, angle, rotationMatrix) {\n const boxSize = box.getBoxSize(box2);\n const scaleFactor = [boxSize[0] / this.inputSize, boxSize[1] / this.inputSize, (boxSize[0] + boxSize[1]) / this.inputSize / 2];\n const coordsScaled = rawCoords.map((coord) => [\n scaleFactor[0] * (coord[0] - this.inputSize / 2),\n scaleFactor[1] * (coord[1] - this.inputSize / 2),\n scaleFactor[2] * coord[2],\n ]);\n const coordsRotationMatrix = util.buildRotationMatrix(angle, [0, 0]);\n const coordsRotated = coordsScaled.map((coord) => {\n const rotated = util.rotatePoint(coord, coordsRotationMatrix);\n return [...rotated, coord[2]];\n });\n const inverseRotationMatrix = util.invertTransformMatrix(rotationMatrix);\n const boxCenter = [...box.getBoxCenter(box2), 1];\n const originalBoxCenter = [\n util.dot(boxCenter, inverseRotationMatrix[0]),\n util.dot(boxCenter, inverseRotationMatrix[1]),\n ];\n return coordsRotated.map((coord) => [\n coord[0] + originalBoxCenter[0],\n coord[1] + originalBoxCenter[1],\n coord[2],\n ]);\n }\n\n async estimateHands(image, config) {\n let useFreshBox = false;\n\n // run new detector every skipFrames unless we only want box to start with\n let boxes;\n if ((this.skipped === 0) || (this.skipped > config.hand.skipFrames) || !config.hand.landmarks || !config.videoOptimized) {\n boxes = await this.handDetector.estimateHandBounds(image, config);\n this.skipped = 0;\n }\n if (config.videoOptimized) this.skipped++;\n\n // if detector result count doesn't match current working set, use it to reset current working set\n if (boxes && (boxes.length > 0) && ((boxes.length !== this.detectedHands) && (this.detectedHands !== config.hand.maxHands) || !config.hand.landmarks)) {\n this.detectedHands = 0;\n this.storedBoxes = [...boxes];\n // for (const possible of boxes) this.storedBoxes.push(possible);\n if (this.storedBoxes.length > 0) useFreshBox = true;\n }\n const hands: Array<{}> = [];\n\n if (config.hand.skipInitial && this.detectedHands === 0) this.skipped = 0;\n\n // go through working set of boxes\n for (let i = 0; i < this.storedBoxes.length; i++) {\n const currentBox = this.storedBoxes[i];\n if (!currentBox) continue;\n if (config.hand.landmarks) {\n const angle = config.hand.rotation ? util.computeRotation(currentBox.palmLandmarks[PALM_LANDMARKS_INDEX_OF_PALM_BASE], currentBox.palmLandmarks[PALM_LANDMARKS_INDEX_OF_MIDDLE_FINGER_BASE]) : 0;\n const palmCenter = box.getBoxCenter(currentBox);\n const palmCenterNormalized = [palmCenter[0] / image.shape[2], palmCenter[1] / image.shape[1]];\n const rotatedImage = config.hand.rotation ? tf.image.rotateWithOffset(image, angle, 0, palmCenterNormalized) : image.clone();\n const rotationMatrix = util.buildRotationMatrix(-angle, palmCenter);\n const newBox = useFreshBox ? this.getBoxForPalmLandmarks(currentBox.palmLandmarks, rotationMatrix) : currentBox;\n const croppedInput = box.cutBoxFromImageAndResize(newBox, rotatedImage, [this.inputSize, this.inputSize]);\n const handImage = croppedInput.div(255);\n croppedInput.dispose();\n rotatedImage.dispose();\n const [confidenceT, keypoints] = await this.landmarkDetector.predict(handImage);\n handImage.dispose();\n const confidence = confidenceT.dataSync()[0];\n confidenceT.dispose();\n if (confidence >= config.hand.minConfidence) {\n const keypointsReshaped = tf.reshape(keypoints, [-1, 3]);\n const rawCoords = keypointsReshaped.arraySync();\n keypoints.dispose();\n keypointsReshaped.dispose();\n const coords = this.transformRawCoords(rawCoords, newBox, angle, rotationMatrix);\n const nextBoundingBox = this.getBoxForHandLandmarks(coords);\n this.storedBoxes[i] = nextBoundingBox;\n const result = {\n landmarks: coords,\n confidence,\n box: { topLeft: nextBoundingBox.startPoint, bottomRight: nextBoundingBox.endPoint },\n };\n hands.push(result);\n } else {\n this.storedBoxes[i] = null;\n }\n keypoints.dispose();\n } else {\n // const enlarged = box.enlargeBox(box.squarifyBox(box.shiftBox(currentBox, HAND_BOX_SHIFT_VECTOR)), HAND_BOX_ENLARGE_FACTOR);\n const enlarged = box.enlargeBox(box.squarifyBox(currentBox), HAND_BOX_ENLARGE_FACTOR);\n const result = {\n confidence: currentBox.confidence,\n box: { topLeft: enlarged.startPoint, bottomRight: enlarged.endPoint },\n };\n hands.push(result);\n }\n }\n this.storedBoxes = this.storedBoxes.filter((a) => a !== null);\n this.detectedHands = hands.length;\n return hands;\n }\n\n // eslint-disable-next-line class-methods-use-this\n calculateLandmarksBoundingBox(landmarks) {\n const xs = landmarks.map((d) => d[0]);\n const ys = landmarks.map((d) => d[1]);\n const startPoint = [Math.min(...xs), Math.min(...ys)];\n const endPoint = [Math.max(...xs), Math.max(...ys)];\n return { startPoint, endPoint };\n }\n}\n", "export const anchors = [\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n];\n", "import { log } from '../helpers';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile';\nimport * as annotations from './annotations';\n\nlet model;\n\nexport async function load(config) {\n if (!model) {\n model = await tf.loadGraphModel(config.body.modelPath);\n model.width = parseInt(model.signature.inputs['input_1:0'].tensorShape.dim[2].size);\n model.height = parseInt(model.signature.inputs['input_1:0'].tensorShape.dim[1].size);\n if (config.debug) log(`load model: ${config.body.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return model;\n}\n\nexport async function predict(image, config) {\n if (!model) return null;\n if (!config.body.enabled) return null;\n const imgSize = { width: image.shape[2], height: image.shape[1] };\n const resize = tf.image.resizeBilinear(image, [model.width, model.height], false);\n const normalize = tf.div(resize, [255.0]);\n resize.dispose();\n let points;\n if (!config.profile) { // run through profiler or just execute\n const resT = await model.predict(normalize);\n // const segmentationT = resT.find((t) => (t.size === 16384))?.squeeze();\n // const segmentation = segmentationT.arraySync(); // array 128 x 128\n // segmentationT.dispose();\n points = resT.find((t) => (t.size === 195 || t.size === 155)).dataSync(); // order of output tensors may change between models, full has 195 and upper has 155 items\n resT.forEach((t) => t.dispose());\n } else {\n const profileData = await tf.profile(() => model.predict(normalize));\n points = profileData.result.find((t) => (t.size === 195 || t.size === 155)).dataSync();\n profileData.result.forEach((t) => t.dispose());\n profile.run('blazepose', profileData);\n }\n normalize.dispose();\n const keypoints: Array<{ id, part, position: { x, y, z }, score, presence }> = [];\n const labels = points.length === 195 ? annotations.full : annotations.upper; // full model has 39 keypoints, upper has 31 keypoints\n const depth = 5; // each points has x,y,z,visibility,presence\n for (let i = 0; i < points.length / depth; i++) {\n keypoints.push({\n id: i,\n part: labels[i],\n position: {\n x: Math.trunc(imgSize.width * points[depth * i + 0] / 255), // return normalized x value istead of 0..255\n y: Math.trunc(imgSize.height * points[depth * i + 1] / 255), // return normalized y value istead of 0..255\n z: Math.trunc(points[depth * i + 2]) + 0, // fix negative zero\n },\n score: (100 - Math.trunc(100 / (1 + Math.exp(points[depth * i + 3])))) / 100, // reverse sigmoid value\n presence: (100 - Math.trunc(100 / (1 + Math.exp(points[depth * i + 4])))) / 100, // reverse sigmoid value\n });\n }\n return [{ keypoints }];\n}\n", "export const full = [\n 'nose',\n 'leftEyeInside',\n 'leftEye',\n 'leftEyeOutside',\n 'rightEyeInside',\n 'rightEye',\n 'rightEyeOutside',\n 'leftEar',\n 'rightEar',\n 'leftMouth',\n 'rightMouth',\n 'leftShoulder',\n 'rightShoulder',\n 'leftElbow',\n 'rightElbow',\n 'leftWrist',\n 'rightWrist',\n 'leftPalm',\n 'rightPalm',\n 'leftIndex',\n 'rightIndex',\n 'leftPinky',\n 'rightPinky',\n 'leftHip',\n 'rightHip',\n 'leftKnee',\n 'rightKnee',\n 'leftAnkle',\n 'rightAnkle',\n 'leftHeel',\n 'rightHeel',\n 'leftFoot',\n 'rightFoot',\n 'midHip',\n 'forehead',\n 'leftThumb',\n 'leftHand',\n 'rightThumb',\n 'rightHand',\n];\n\nexport const upper = [\n 'nose',\n 'leftEyeInside',\n 'leftEye',\n 'leftEyeOutside',\n 'rightEyeInside',\n 'rightEye',\n 'rightEyeOutside',\n 'leftEar',\n 'rightEar',\n 'leftMouth',\n 'rightMouth',\n 'leftShoulder',\n 'rightShoulder',\n 'leftElbow',\n 'rightElbow',\n 'left:15',\n 'right:16',\n 'left:17',\n 'right:18',\n 'left:19',\n 'right:20',\n 'left:21',\n 'right:22',\n 'leftChest',\n 'rightChest',\n 'neck',\n 'forehead',\n 'left:27',\n 'right:28',\n 'left:29',\n 'right:30',\n];\n", "import { log } from '../helpers';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile';\nimport { labels } from './labels';\n\nlet model;\nlet last: Array<{}> = [];\nlet skipped = Number.MAX_SAFE_INTEGER;\n\nconst scaleBox = 2.5; // increase box size\nconst activateScore = false;\n\nexport async function load(config) {\n if (!model) {\n model = await tf.loadGraphModel(config.object.modelPath);\n // @ts-ignore\n model.inputSize = parseInt(Object.values(model.modelSignature['inputs'])[0].tensorShape.dim[2].size);\n if (config.debug) log(`load model: ${config.object.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return model;\n}\n\nasync function process(res, inputSize, outputShape, config) {\n let id = 0;\n let results: Array<{ score: number, strideSize: number, class: number, label: string, center: number[], centerRaw: number[], box: number[], boxRaw: number[] }> = [];\n for (const strideSize of [1, 2, 4]) { // try each stride size as it detects large/medium/small objects\n // find scores, boxes, classes\n tf.tidy(() => { // wrap in tidy to automatically deallocate temp tensors\n const baseSize = strideSize * 13; // 13x13=169, 26x26=676, 52x52=2704\n // find boxes and scores output depending on stride\n const scoresT = res.find((a) => (a.shape[1] === (baseSize ** 2) && a.shape[2] === 80))?.squeeze();\n const featuresT = res.find((a) => (a.shape[1] === (baseSize ** 2) && a.shape[2] < 80))?.squeeze();\n const boxesMax = featuresT.reshape([-1, 4, featuresT.shape[1] / 4]); // reshape [output] to [4, output / 4] where number is number of different features inside each stride\n const boxIdx = boxesMax.argMax(2).arraySync(); // what we need is indexes of features with highest scores, not values itself\n const scores = activateScore ? scoresT.exp(1).arraySync() : scoresT.arraySync(); // optionally use exponential scores or just as-is\n for (let i = 0; i < scoresT.shape[0]; i++) { // total strides (x * y matrix)\n for (let j = 0; j < scoresT.shape[1]; j++) { // one score for each class\n const score = scores[i][j] - (activateScore ? 1 : 0); // get score for current position\n if (score > config.object.minConfidence) {\n const cx = (0.5 + Math.trunc(i % baseSize)) / baseSize; // center.x normalized to range 0..1\n const cy = (0.5 + Math.trunc(i / baseSize)) / baseSize; // center.y normalized to range 0..1\n const boxOffset = boxIdx[i].map((a) => a * (baseSize / strideSize / inputSize)); // just grab indexes of features with highest scores\n let boxRaw = [ // results normalized to range 0..1\n cx - (scaleBox / strideSize * boxOffset[0]),\n cy - (scaleBox / strideSize * boxOffset[1]),\n cx + (scaleBox / strideSize * boxOffset[2]),\n cy + (scaleBox / strideSize * boxOffset[3]),\n ];\n boxRaw = boxRaw.map((a) => Math.max(0, Math.min(a, 1))); // fix out-of-bounds coords\n const box = [ // results normalized to input image pixels\n boxRaw[0] * outputShape[0],\n boxRaw[1] * outputShape[1],\n boxRaw[2] * outputShape[0],\n boxRaw[3] * outputShape[1],\n ];\n const result = {\n id: id++,\n strideSize,\n score,\n class: j + 1,\n label: labels[j].label,\n center: [Math.trunc(outputShape[0] * cx), Math.trunc(outputShape[1] * cy)],\n centerRaw: [cx, cy],\n box: box.map((a) => Math.trunc(a)),\n boxRaw,\n };\n results.push(result);\n }\n }\n }\n });\n }\n // deallocate tensors\n res.forEach((t) => tf.dispose(t));\n\n // normally nms is run on raw results, but since boxes need to be calculated this way we skip calulcation of\n // unnecessary boxes and run nms only on good candidates (basically it just does IOU analysis as scores are already filtered)\n const nmsBoxes = results.map((a) => a.boxRaw);\n const nmsScores = results.map((a) => a.score);\n const nms = await tf.image.nonMaxSuppressionAsync(nmsBoxes, nmsScores, config.object.maxResults, config.object.iouThreshold, config.object.minConfidence);\n const nmsIdx = nms.dataSync();\n tf.dispose(nms);\n\n // filter & sort results\n results = results\n .filter((a, idx) => nmsIdx.includes(idx))\n // @ts-ignore\n .sort((a, b) => (b.score - a.score));\n\n return results;\n}\n\nexport async function predict(image, config) {\n if (!model) return null;\n // console.log(skipped, config.object.skipFrames, config.videoOptimized, ((skipped < config.object.skipFrames) && config.videoOptimized && (last.length > 0)));\n if ((skipped < config.object.skipFrames) && config.videoOptimized && (last.length > 0)) {\n skipped++;\n return last;\n }\n if (config.videoOptimized) skipped = 0;\n else skipped = Number.MAX_SAFE_INTEGER;\n return new Promise(async (resolve) => {\n const outputSize = [image.shape[2], image.shape[1]];\n const resize = tf.image.resizeBilinear(image, [model.inputSize, model.inputSize], false);\n const norm = resize.div(255);\n resize.dispose();\n const transpose = norm.transpose([0, 3, 1, 2]);\n norm.dispose();\n\n let objectT;\n if (!config.profile) {\n if (config.object.enabled) objectT = await model.predict(transpose);\n } else {\n const profileObject = config.object.enabled ? await tf.profile(() => model.predict(transpose)) : {};\n objectT = profileObject.result.clone();\n profileObject.result.dispose();\n profile.run('object', profileObject);\n }\n transpose.dispose();\n\n const obj = await process(objectT, model.inputSize, outputSize, config);\n last = obj;\n resolve(obj);\n });\n}\n", "export const labels = [\n { class: 1, label: 'person' },\n { class: 2, label: 'bicycle' },\n { class: 3, label: 'car' },\n { class: 4, label: 'motorcycle' },\n { class: 5, label: 'airplane' },\n { class: 6, label: 'bus' },\n { class: 7, label: 'train' },\n { class: 8, label: 'truck' },\n { class: 9, label: 'boat' },\n { class: 10, label: 'traffic light' },\n { class: 11, label: 'fire hydrant' },\n { class: 12, label: 'stop sign' },\n { class: 13, label: 'parking meter' },\n { class: 14, label: 'bench' },\n { class: 15, label: 'bird' },\n { class: 16, label: 'cat' },\n { class: 17, label: 'dog' },\n { class: 18, label: 'horse' },\n { class: 19, label: 'sheep' },\n { class: 20, label: 'cow' },\n { class: 21, label: 'elephant' },\n { class: 22, label: 'bear' },\n { class: 23, label: 'zebra' },\n { class: 24, label: 'giraffe' },\n { class: 25, label: 'backpack' },\n { class: 26, label: 'umbrella' },\n { class: 27, label: 'handbag' },\n { class: 28, label: 'tie' },\n { class: 29, label: 'suitcase' },\n { class: 30, label: 'frisbee' },\n { class: 31, label: 'skis' },\n { class: 32, label: 'snowboard' },\n { class: 33, label: 'sports ball' },\n { class: 34, label: 'kite' },\n { class: 35, label: 'baseball bat' },\n { class: 36, label: 'baseball glove' },\n { class: 37, label: 'skateboard' },\n { class: 38, label: 'surfboard' },\n { class: 39, label: 'tennis racket' },\n { class: 40, label: 'bottle' },\n { class: 41, label: 'wine glass' },\n { class: 42, label: 'cup' },\n { class: 43, label: 'fork' },\n { class: 44, label: 'knife' },\n { class: 45, label: 'spoon' },\n { class: 46, label: 'bowl' },\n { class: 47, label: 'banana' },\n { class: 48, label: 'apple' },\n { class: 49, label: 'sandwich' },\n { class: 50, label: 'orange' },\n { class: 51, label: 'broccoli' },\n { class: 52, label: 'carrot' },\n { class: 53, label: 'hot dog' },\n { class: 54, label: 'pizza' },\n { class: 55, label: 'donut' },\n { class: 56, label: 'cake' },\n { class: 57, label: 'chair' },\n { class: 58, label: 'couch' },\n { class: 59, label: 'potted plant' },\n { class: 60, label: 'bed' },\n { class: 61, label: 'dining table' },\n { class: 62, label: 'toilet' },\n { class: 63, label: 'tv' },\n { class: 64, label: 'laptop' },\n { class: 65, label: 'mouse' },\n { class: 66, label: 'remote' },\n { class: 67, label: 'keyboard' },\n { class: 68, label: 'cell phone' },\n { class: 69, label: 'microwave' },\n { class: 70, label: 'oven' },\n { class: 71, label: 'toaster' },\n { class: 72, label: 'sink' },\n { class: 73, label: 'refrigerator' },\n { class: 74, label: 'book' },\n { class: 75, label: 'clock' },\n { class: 76, label: 'vase' },\n { class: 77, label: 'scissors' },\n { class: 78, label: 'teddy bear' },\n { class: 79, label: 'hair drier' },\n { class: 80, label: 'toothbrush' },\n];\n", "export const body = (res) => {\n if (!res) return [];\n const gestures: Array<{ body: number, gesture: string }> = [];\n for (let i = 0; i < res.length; i++) {\n // raising hands\n const leftWrist = res[i].keypoints.find((a) => (a.part === 'leftWrist'));\n const rightWrist = res[i].keypoints.find((a) => (a.part === 'rightWrist'));\n const nose = res[i].keypoints.find((a) => (a.part === 'nose'));\n if (nose && leftWrist && rightWrist && (leftWrist.position.y < nose.position.y) && (rightWrist.position.y < nose.position.y)) gestures.push({ body: i, gesture: 'i give up' });\n else if (nose && leftWrist && (leftWrist.position.y < nose.position.y)) gestures.push({ body: i, gesture: 'raise left hand' });\n else if (nose && rightWrist && (rightWrist.position.y < nose.position.y)) gestures.push({ body: i, gesture: 'raise right hand' });\n\n // leaning\n const leftShoulder = res[i].keypoints.find((a) => (a.part === 'leftShoulder'));\n const rightShoulder = res[i].keypoints.find((a) => (a.part === 'rightShoulder'));\n if (leftShoulder && rightShoulder) gestures.push({ body: i, gesture: `leaning ${(leftShoulder.position.y > rightShoulder.position.y) ? 'left' : 'right'}` });\n }\n return gestures;\n};\n\nexport const face = (res) => {\n if (!res) return [];\n const gestures: Array<{ face: number, gesture: string }> = [];\n for (let i = 0; i < res.length; i++) {\n if (res[i].mesh && res[i].mesh.length > 0) {\n const eyeFacing = res[i].mesh[33][2] - res[i].mesh[263][2];\n if (Math.abs(eyeFacing) < 10) gestures.push({ face: i, gesture: 'facing camera' });\n else gestures.push({ face: i, gesture: `facing ${eyeFacing < 0 ? 'right' : 'left'}` });\n const openLeft = Math.abs(res[i].mesh[374][1] - res[i].mesh[386][1]) / Math.abs(res[i].mesh[443][1] - res[i].mesh[450][1]); // center of eye inner lid y coord div center of wider eye border y coord\n if (openLeft < 0.2) gestures.push({ face: i, gesture: 'blink left eye' });\n const openRight = Math.abs(res[i].mesh[145][1] - res[i].mesh[159][1]) / Math.abs(res[i].mesh[223][1] - res[i].mesh[230][1]); // center of eye inner lid y coord div center of wider eye border y coord\n if (openRight < 0.2) gestures.push({ face: i, gesture: 'blink right eye' });\n const mouthOpen = Math.min(100, 500 * Math.abs(res[i].mesh[13][1] - res[i].mesh[14][1]) / Math.abs(res[i].mesh[10][1] - res[i].mesh[152][1]));\n if (mouthOpen > 10) gestures.push({ face: i, gesture: `mouth ${Math.trunc(mouthOpen)}% open` });\n const chinDepth = res[i].mesh[152][2];\n if (Math.abs(chinDepth) > 10) gestures.push({ face: i, gesture: `head ${chinDepth < 0 ? 'up' : 'down'}` });\n }\n }\n return gestures;\n};\n\nexport const iris = (res) => {\n if (!res) return [];\n const gestures: Array<{ iris: number, gesture: string }> = [];\n for (let i = 0; i < res.length; i++) {\n if (!res[i].annotations || !res[i].annotations.leftEyeIris || !res[i].annotations.rightEyeIris) continue;\n const sizeXLeft = res[i].annotations.leftEyeIris[3][0] - res[i].annotations.leftEyeIris[1][0];\n const sizeYLeft = res[i].annotations.leftEyeIris[4][1] - res[i].annotations.leftEyeIris[2][1];\n const areaLeft = Math.abs(sizeXLeft * sizeYLeft);\n\n const sizeXRight = res[i].annotations.rightEyeIris[3][0] - res[i].annotations.rightEyeIris[1][0];\n const sizeYRight = res[i].annotations.rightEyeIris[4][1] - res[i].annotations.rightEyeIris[2][1];\n const areaRight = Math.abs(sizeXRight * sizeYRight);\n\n const difference = Math.abs(areaLeft - areaRight) / Math.max(areaLeft, areaRight);\n if (difference < 0.25) gestures.push({ iris: i, gesture: 'looking at camera' });\n }\n return gestures;\n};\n\nexport const hand = (res) => {\n if (!res) return [];\n const gestures: Array<{ hand: number, gesture: string }> = [];\n for (let i = 0; i < res.length; i++) {\n const fingers: Array<{ name: string, position: number }> = [];\n for (const [finger, pos] of Object.entries(res[i]['annotations'])) {\n // @ts-ignore\n if (finger !== 'palmBase') fingers.push({ name: finger.toLowerCase(), position: pos[0] }); // get tip of each finger\n }\n if (fingers && fingers.length > 0) {\n const closest = fingers.reduce((best, a) => (best.position[2] < a.position[2] ? best : a));\n const highest = fingers.reduce((best, a) => (best.position[1] < a.position[1] ? best : a));\n gestures.push({ hand: i, gesture: `${closest.name} forward ${highest.name} up` });\n }\n }\n return gestures;\n};\n", "/*\nWebGLImageFilter - MIT Licensed\n2013, Dominic Szablewski - phoboslab.org\n\n*/\n\nfunction GLProgram(gl, vertexSource, fragmentSource) {\n const _collect = function (source, prefix, collection) {\n const r = new RegExp('\\\\b' + prefix + ' \\\\w+ (\\\\w+)', 'ig');\n source.replace(r, (match, name) => {\n collection[name] = 0;\n return match;\n });\n };\n\n const _compile = function (source, type) {\n const shader = gl.createShader(type);\n gl.shaderSource(shader, source);\n gl.compileShader(shader);\n if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {\n // @ts-ignore\n throw new Error('Filter: GL compile failed', gl.getShaderInfoLog(shader));\n }\n return shader;\n };\n\n this.uniform = {};\n this.attribute = {};\n const _vsh = _compile(vertexSource, gl.VERTEX_SHADER);\n const _fsh = _compile(fragmentSource, gl.FRAGMENT_SHADER);\n this.id = gl.createProgram();\n gl.attachShader(this.id, _vsh);\n gl.attachShader(this.id, _fsh);\n gl.linkProgram(this.id);\n\n if (!gl.getProgramParameter(this.id, gl.LINK_STATUS)) {\n // @ts-ignore\n throw new Error('Filter: GL link failed', gl.getProgramInfoLog(this.id));\n }\n\n gl.useProgram(this.id);\n // Collect attributes\n _collect(vertexSource, 'attribute', this.attribute);\n for (const a in this.attribute) this.attribute[a] = gl.getAttribLocation(this.id, a);\n // Collect uniforms\n _collect(vertexSource, 'uniform', this.uniform);\n _collect(fragmentSource, 'uniform', this.uniform);\n for (const u in this.uniform) this.uniform[u] = gl.getUniformLocation(this.id, u);\n}\n\n// export const GLImageFilter = function (params) {\nexport function GLImageFilter(params) {\n if (!params) params = { };\n let _drawCount = 0;\n let _sourceTexture = null;\n let _lastInChain = false;\n let _currentFramebufferIndex = -1;\n let _tempFramebuffers = [null, null];\n let _filterChain = [];\n let _width = -1;\n let _height = -1;\n let _vertexBuffer = null;\n let _currentProgram = null;\n const _filter = {};\n const _canvas = params.canvas || document.createElement('canvas');\n // key is the shader program source, value is the compiled program\n const _shaderProgramCache = { };\n const DRAW = { INTERMEDIATE: 1 };\n const gl = _canvas.getContext('webgl');\n if (!gl) throw new Error('Filter: getContext() failed');\n\n this.addFilter = function (name) {\n // eslint-disable-next-line prefer-rest-params\n const args = Array.prototype.slice.call(arguments, 1);\n const filter = _filter[name];\n _filterChain.push({ func: filter, args });\n };\n\n this.reset = function () {\n _filterChain = [];\n };\n\n const _resize = function (width, height) {\n // Same width/height? Nothing to do here\n if (width === _width && height === _height) { return; }\n _canvas.width = width;\n _width = width;\n _canvas.height = height;\n _height = height;\n // Create the context if we don't have it yet\n if (!_vertexBuffer) {\n // Create the vertex buffer for the two triangles [x, y, u, v] * 6\n const vertices = new Float32Array([\n -1, -1, 0, 1, 1, -1, 1, 1, -1, 1, 0, 0,\n -1, 1, 0, 0, 1, -1, 1, 1, 1, 1, 1, 0,\n ]);\n // eslint-disable-next-line no-unused-expressions\n (_vertexBuffer = gl.createBuffer(), gl.bindBuffer(gl.ARRAY_BUFFER, _vertexBuffer));\n gl.bufferData(gl.ARRAY_BUFFER, vertices, gl.STATIC_DRAW);\n gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, true);\n }\n gl.viewport(0, 0, _width, _height);\n // Delete old temp framebuffers\n _tempFramebuffers = [null, null];\n };\n\n const _createFramebufferTexture = function (width, height) {\n const fbo = gl.createFramebuffer();\n gl.bindFramebuffer(gl.FRAMEBUFFER, fbo);\n const renderbuffer = gl.createRenderbuffer();\n gl.bindRenderbuffer(gl.RENDERBUFFER, renderbuffer);\n const texture = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, texture);\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, width, height, 0, gl.RGBA, gl.UNSIGNED_BYTE, null);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, texture, 0);\n gl.bindTexture(gl.TEXTURE_2D, null);\n gl.bindFramebuffer(gl.FRAMEBUFFER, null);\n return { fbo, texture };\n };\n\n const _getTempFramebuffer = function (index) {\n // @ts-ignore\n _tempFramebuffers[index] = _tempFramebuffers[index] || _createFramebufferTexture(_width, _height);\n return _tempFramebuffers[index];\n };\n\n const _draw = function (flags = null) {\n let source = null;\n let target = null;\n let flipY = false;\n // Set up the source\n if (_drawCount === 0) {\n // First draw call - use the source texture\n source = _sourceTexture;\n } else {\n // All following draw calls use the temp buffer last drawn to\n // @ts-ignore\n source = _getTempFramebuffer(_currentFramebufferIndex)?.texture;\n }\n _drawCount++;\n // Set up the target\n if (_lastInChain && !(flags & DRAW.INTERMEDIATE)) {\n // Last filter in our chain - draw directly to the WebGL Canvas. We may\n // also have to flip the image vertically now\n target = null;\n flipY = _drawCount % 2 === 0;\n } else {\n // Intermediate draw call - get a temp buffer to draw to\n _currentFramebufferIndex = (_currentFramebufferIndex + 1) % 2;\n // @ts-ignore\n target = _getTempFramebuffer(_currentFramebufferIndex)?.fbo;\n }\n // Bind the source and target and draw the two triangles\n gl.bindTexture(gl.TEXTURE_2D, source);\n gl.bindFramebuffer(gl.FRAMEBUFFER, target);\n gl.uniform1f(_currentProgram.uniform.flipY, (flipY ? -1 : 1));\n gl.drawArrays(gl.TRIANGLES, 0, 6);\n };\n\n this.apply = function (image) {\n _resize(image.width, image.height);\n _drawCount = 0;\n // Create the texture for the input image if we haven't yet\n if (!_sourceTexture) _sourceTexture = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, _sourceTexture);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, image);\n // No filters? Just draw\n if (_filterChain.length === 0) {\n // const program = _compileShader(SHADER.FRAGMENT_IDENTITY);\n _draw();\n return _canvas;\n }\n for (let i = 0; i < _filterChain.length; i++) {\n _lastInChain = (i === _filterChain.length - 1);\n const f = _filterChain[i];\n f.func.apply(this, f.args || []);\n }\n return _canvas;\n };\n\n const _compileShader = function (fragmentSource) {\n if (_shaderProgramCache[fragmentSource]) {\n _currentProgram = _shaderProgramCache[fragmentSource];\n gl.useProgram(_currentProgram.id);\n return _currentProgram;\n }\n // Compile shaders\n const SHADER = {};\n SHADER.VERTEX_IDENTITY = [\n 'precision highp float;',\n 'attribute vec2 pos;',\n 'attribute vec2 uv;',\n 'varying vec2 vUv;',\n 'uniform float flipY;',\n 'void main(void) {',\n 'vUv = uv;',\n 'gl_Position = vec4(pos.x, pos.y*flipY, 0.0, 1.);',\n '}',\n ].join('\\n');\n SHADER.FRAGMENT_IDENTITY = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n 'void main(void) {',\n 'gl_FragColor = texture2D(texture, vUv);',\n '}',\n ].join('\\n');\n _currentProgram = new GLProgram(gl, SHADER.VERTEX_IDENTITY, fragmentSource);\n const floatSize = Float32Array.BYTES_PER_ELEMENT;\n const vertSize = 4 * floatSize;\n gl.enableVertexAttribArray(_currentProgram.attribute.pos);\n gl.vertexAttribPointer(_currentProgram.attribute.pos, 2, gl.FLOAT, false, vertSize, 0 * floatSize);\n gl.enableVertexAttribArray(_currentProgram.attribute.uv);\n gl.vertexAttribPointer(_currentProgram.attribute.uv, 2, gl.FLOAT, false, vertSize, 2 * floatSize);\n _shaderProgramCache[fragmentSource] = _currentProgram;\n return _currentProgram;\n };\n\n // -------------------------------------------------------------------------\n // Color Matrix Filter\n _filter.colorMatrix = function (matrix) {\n // Create a Float32 Array and normalize the offset component to 0-1\n const m = new Float32Array(matrix);\n m[4] /= 255;\n m[9] /= 255;\n m[14] /= 255;\n m[19] /= 255;\n // Can we ignore the alpha value? Makes things a bit faster.\n const shader = (m[18] === 1 && m[3] === 0 && m[8] === 0 && m[13] === 0 && m[15] === 0 && m[16] === 0 && m[17] === 0 && m[19] === 0)\n ? _filter.colorMatrix.SHADER.WITHOUT_ALPHA\n : _filter.colorMatrix.SHADER.WITH_ALPHA;\n const program = _compileShader(shader);\n gl.uniform1fv(program.uniform.m, m);\n _draw();\n };\n _filter.colorMatrix.SHADER = {};\n _filter.colorMatrix.SHADER.WITH_ALPHA = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n 'uniform float m[20];',\n 'void main(void) {',\n 'vec4 c = texture2D(texture, vUv);',\n 'gl_FragColor.r = m[0] * c.r + m[1] * c.g + m[2] * c.b + m[3] * c.a + m[4];',\n 'gl_FragColor.g = m[5] * c.r + m[6] * c.g + m[7] * c.b + m[8] * c.a + m[9];',\n 'gl_FragColor.b = m[10] * c.r + m[11] * c.g + m[12] * c.b + m[13] * c.a + m[14];',\n 'gl_FragColor.a = m[15] * c.r + m[16] * c.g + m[17] * c.b + m[18] * c.a + m[19];',\n '}',\n ].join('\\n');\n _filter.colorMatrix.SHADER.WITHOUT_ALPHA = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n 'uniform float m[20];',\n 'void main(void) {',\n 'vec4 c = texture2D(texture, vUv);',\n 'gl_FragColor.r = m[0] * c.r + m[1] * c.g + m[2] * c.b + m[4];',\n 'gl_FragColor.g = m[5] * c.r + m[6] * c.g + m[7] * c.b + m[9];',\n 'gl_FragColor.b = m[10] * c.r + m[11] * c.g + m[12] * c.b + m[14];',\n 'gl_FragColor.a = c.a;',\n '}',\n ].join('\\n');\n\n _filter.brightness = function (brightness) {\n const b = (brightness || 0) + 1;\n _filter.colorMatrix([\n b, 0, 0, 0, 0,\n 0, b, 0, 0, 0,\n 0, 0, b, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.saturation = function (amount) {\n const x = (amount || 0) * 2 / 3 + 1;\n const y = ((x - 1) * -0.5);\n _filter.colorMatrix([\n x, y, y, 0, 0,\n y, x, y, 0, 0,\n y, y, x, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.desaturate = function () {\n _filter.saturation(-1);\n };\n\n _filter.contrast = function (amount) {\n const v = (amount || 0) + 1;\n const o = -128 * (v - 1);\n\n _filter.colorMatrix([\n v, 0, 0, 0, o,\n 0, v, 0, 0, o,\n 0, 0, v, 0, o,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.negative = function () {\n _filter.contrast(-2);\n };\n\n _filter.hue = function (rotation) {\n rotation = (rotation || 0) / 180 * Math.PI;\n const cos = Math.cos(rotation);\n const sin = Math.sin(rotation);\n const lumR = 0.213;\n const lumG = 0.715;\n const lumB = 0.072;\n\n _filter.colorMatrix([\n lumR + cos * (1 - lumR) + sin * (-lumR), lumG + cos * (-lumG) + sin * (-lumG), lumB + cos * (-lumB) + sin * (1 - lumB), 0, 0,\n lumR + cos * (-lumR) + sin * (0.143), lumG + cos * (1 - lumG) + sin * (0.140), lumB + cos * (-lumB) + sin * (-0.283), 0, 0,\n lumR + cos * (-lumR) + sin * (-(1 - lumR)), lumG + cos * (-lumG) + sin * (lumG), lumB + cos * (1 - lumB) + sin * (lumB), 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.desaturateLuminance = function () {\n _filter.colorMatrix([\n 0.2764723, 0.9297080, 0.0938197, 0, -37.1,\n 0.2764723, 0.9297080, 0.0938197, 0, -37.1,\n 0.2764723, 0.9297080, 0.0938197, 0, -37.1,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.sepia = function () {\n _filter.colorMatrix([\n 0.393, 0.7689999, 0.18899999, 0, 0,\n 0.349, 0.6859999, 0.16799999, 0, 0,\n 0.272, 0.5339999, 0.13099999, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.brownie = function () {\n _filter.colorMatrix([\n 0.5997023498159715, 0.34553243048391263, -0.2708298674538042, 0, 47.43192855600873,\n -0.037703249837783157, 0.8609577587992641, 0.15059552388459913, 0, -36.96841498319127,\n 0.24113635128153335, -0.07441037908422492, 0.44972182064877153, 0, -7.562075277591283,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.vintagePinhole = function () {\n _filter.colorMatrix([\n 0.6279345635605994, 0.3202183420819367, -0.03965408211312453, 0, 9.651285835294123,\n 0.02578397704808868, 0.6441188644374771, 0.03259127616149294, 0, 7.462829176470591,\n 0.0466055556782719, -0.0851232987247891, 0.5241648018700465, 0, 5.159190588235296,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.kodachrome = function () {\n _filter.colorMatrix([\n 1.1285582396593525, -0.3967382283601348, -0.03992559172921793, 0, 63.72958762196502,\n -0.16404339962244616, 1.0835251566291304, -0.05498805115633132, 0, 24.732407896706203,\n -0.16786010706155763, -0.5603416277695248, 1.6014850761964943, 0, 35.62982807460946,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.technicolor = function () {\n _filter.colorMatrix([\n 1.9125277891456083, -0.8545344976951645, -0.09155508482755585, 0, 11.793603434377337,\n -0.3087833385928097, 1.7658908555458428, -0.10601743074722245, 0, -70.35205161461398,\n -0.231103377548616, -0.7501899197440212, 1.847597816108189, 0, 30.950940869491138,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.polaroid = function () {\n _filter.colorMatrix([\n 1.438, -0.062, -0.062, 0, 0,\n -0.122, 1.378, -0.122, 0, 0,\n -0.016, -0.016, 1.483, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.shiftToBGR = function () {\n _filter.colorMatrix([\n 0, 0, 1, 0, 0,\n 0, 1, 0, 0, 0,\n 1, 0, 0, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n // -------------------------------------------------------------------------\n // Convolution Filter\n _filter.convolution = function (matrix) {\n const m = new Float32Array(matrix);\n const pixelSizeX = 1 / _width;\n const pixelSizeY = 1 / _height;\n const program = _compileShader(_filter.convolution.SHADER);\n gl.uniform1fv(program.uniform.m, m);\n gl.uniform2f(program.uniform.px, pixelSizeX, pixelSizeY);\n _draw();\n };\n\n _filter.convolution.SHADER = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n 'uniform vec2 px;',\n 'uniform float m[9];',\n 'void main(void) {',\n 'vec4 c11 = texture2D(texture, vUv - px);', // top left\n 'vec4 c12 = texture2D(texture, vec2(vUv.x, vUv.y - px.y));', // top center\n 'vec4 c13 = texture2D(texture, vec2(vUv.x + px.x, vUv.y - px.y));', // top right\n 'vec4 c21 = texture2D(texture, vec2(vUv.x - px.x, vUv.y) );', // mid left\n 'vec4 c22 = texture2D(texture, vUv);', // mid center\n 'vec4 c23 = texture2D(texture, vec2(vUv.x + px.x, vUv.y) );', // mid right\n 'vec4 c31 = texture2D(texture, vec2(vUv.x - px.x, vUv.y + px.y) );', // bottom left\n 'vec4 c32 = texture2D(texture, vec2(vUv.x, vUv.y + px.y) );', // bottom center\n 'vec4 c33 = texture2D(texture, vUv + px );', // bottom right\n 'gl_FragColor = ',\n 'c11 * m[0] + c12 * m[1] + c22 * m[2] +',\n 'c21 * m[3] + c22 * m[4] + c23 * m[5] +',\n 'c31 * m[6] + c32 * m[7] + c33 * m[8];',\n 'gl_FragColor.a = c22.a;',\n '}',\n ].join('\\n');\n\n _filter.detectEdges = function () {\n _filter.convolution.call(this, [\n 0, 1, 0,\n 1, -4, 1,\n 0, 1, 0,\n ]);\n };\n\n _filter.sobelX = function () {\n _filter.convolution.call(this, [\n -1, 0, 1,\n -2, 0, 2,\n -1, 0, 1,\n ]);\n };\n\n _filter.sobelY = function () {\n _filter.convolution.call(this, [\n -1, -2, -1,\n 0, 0, 0,\n 1, 2, 1,\n ]);\n };\n\n _filter.sharpen = function (amount) {\n const a = amount || 1;\n _filter.convolution.call(this, [\n 0, -1 * a, 0,\n -1 * a, 1 + 4 * a, -1 * a,\n 0, -1 * a, 0,\n ]);\n };\n\n _filter.emboss = function (size) {\n const s = size || 1;\n _filter.convolution.call(this, [\n -2 * s, -1 * s, 0,\n -1 * s, 1, 1 * s,\n 0, 1 * s, 2 * s,\n ]);\n };\n\n // -------------------------------------------------------------------------\n // Blur Filter\n _filter.blur = function (size) {\n const blurSizeX = (size / 7) / _width;\n const blurSizeY = (size / 7) / _height;\n const program = _compileShader(_filter.blur.SHADER);\n // Vertical\n gl.uniform2f(program.uniform.px, 0, blurSizeY);\n _draw(DRAW.INTERMEDIATE);\n // Horizontal\n gl.uniform2f(program.uniform.px, blurSizeX, 0);\n _draw();\n };\n\n _filter.blur.SHADER = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n 'uniform vec2 px;',\n 'void main(void) {',\n 'gl_FragColor = vec4(0.0);',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-7.0*px.x, -7.0*px.y))*0.0044299121055113265;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-6.0*px.x, -6.0*px.y))*0.00895781211794;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-5.0*px.x, -5.0*px.y))*0.0215963866053;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-4.0*px.x, -4.0*px.y))*0.0443683338718;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-3.0*px.x, -3.0*px.y))*0.0776744219933;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-2.0*px.x, -2.0*px.y))*0.115876621105;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-1.0*px.x, -1.0*px.y))*0.147308056121;',\n 'gl_FragColor += texture2D(texture, vUv )*0.159576912161;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 1.0*px.x, 1.0*px.y))*0.147308056121;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 2.0*px.x, 2.0*px.y))*0.115876621105;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 3.0*px.x, 3.0*px.y))*0.0776744219933;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 4.0*px.x, 4.0*px.y))*0.0443683338718;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 5.0*px.x, 5.0*px.y))*0.0215963866053;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 6.0*px.x, 6.0*px.y))*0.00895781211794;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 7.0*px.x, 7.0*px.y))*0.0044299121055113265;',\n '}',\n ].join('\\n');\n\n // -------------------------------------------------------------------------\n // Pixelate Filter\n _filter.pixelate = function (size) {\n const blurSizeX = (size) / _width;\n const blurSizeY = (size) / _height;\n const program = _compileShader(_filter.pixelate.SHADER);\n // Horizontal\n gl.uniform2f(program.uniform.size, blurSizeX, blurSizeY);\n _draw();\n };\n\n _filter.pixelate.SHADER = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform vec2 size;',\n 'uniform sampler2D texture;',\n 'vec2 pixelate(vec2 coord, vec2 size) {',\n 'return floor( coord / size ) * size;',\n '}',\n 'void main(void) {',\n 'gl_FragColor = vec4(0.0);',\n 'vec2 coord = pixelate(vUv, size);',\n 'gl_FragColor += texture2D(texture, coord);',\n '}',\n ].join('\\n');\n}\n", "// @ts-nocheck\n\nimport { log } from '../helpers';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as fxImage from './imagefx';\n\nconst maxSize = 2048;\n// internal temp canvases\nlet inCanvas = null;\nlet outCanvas = null;\n// instance of fximage\nlet fx = null;\n\n// process input image and return tensor\n// input can be tensor, imagedata, htmlimageelement, htmlvideoelement\n// input is resized and run through imagefx filter\nexport function process(input, config): { tensor: tf.Tensor, canvas: OffscreenCanvas | HTMLCanvasElement } {\n let tensor;\n if (input instanceof tf.Tensor) {\n tensor = tf.clone(input);\n } else {\n const originalWidth = input.naturalWidth || input.videoWidth || input.width || (input.shape && (input.shape[1] > 0));\n const originalHeight = input.naturalHeight || input.videoHeight || input.height || (input.shape && (input.shape[2] > 0));\n let targetWidth = originalWidth;\n let targetHeight = originalHeight;\n if (targetWidth > maxSize) {\n targetWidth = maxSize;\n targetHeight = targetWidth * originalHeight / originalWidth;\n }\n if (targetHeight > maxSize) {\n targetHeight = maxSize;\n targetWidth = targetHeight * originalWidth / originalHeight;\n }\n if (config.filter.width > 0) targetWidth = config.filter.width;\n else if (config.filter.height > 0) targetWidth = originalWidth * (config.filter.height / originalHeight);\n if (config.filter.height > 0) targetHeight = config.filter.height;\n else if (config.filter.width > 0) targetHeight = originalHeight * (config.filter.width / originalWidth);\n if (!targetWidth || !targetHeight) {\n log('Human: invalid input', input);\n return { tensor: null, canvas: null };\n }\n if (!inCanvas || (inCanvas.width !== targetWidth) || (inCanvas.height !== targetHeight)) {\n inCanvas = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(targetWidth, targetHeight) : document.createElement('canvas');\n if (inCanvas.width !== targetWidth) inCanvas.width = targetWidth;\n if (inCanvas.height !== targetHeight) inCanvas.height = targetHeight;\n }\n const ctx = inCanvas.getContext('2d');\n if (input instanceof ImageData) ctx.putImageData(input, 0, 0);\n else ctx.drawImage(input, 0, 0, originalWidth, originalHeight, 0, 0, inCanvas.width, inCanvas.height);\n if (config.filter.enabled) {\n if (!fx || !outCanvas || (inCanvas.width !== outCanvas.width) || (inCanvas.height !== outCanvas.height)) {\n outCanvas = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(inCanvas.width, inCanvas.height) : document.createElement('canvas');\n if (outCanvas.width !== inCanvas.width) outCanvas.width = inCanvas.width;\n if (outCanvas.height !== inCanvas.height) outCanvas.height = inCanvas.height;\n // log('created FX filter');\n fx = tf.ENV.flags.IS_BROWSER ? new fxImage.GLImageFilter({ canvas: outCanvas }) : null; // && (typeof document !== 'undefined')\n }\n if (!fx) return { tensor: null, canvas: inCanvas };\n fx.reset();\n fx.addFilter('brightness', config.filter.brightness); // must have at least one filter enabled\n if (config.filter.contrast !== 0) fx.addFilter('contrast', config.filter.contrast);\n if (config.filter.sharpness !== 0) fx.addFilter('sharpen', config.filter.sharpness);\n if (config.filter.blur !== 0) fx.addFilter('blur', config.filter.blur);\n if (config.filter.saturation !== 0) fx.addFilter('saturation', config.filter.saturation);\n if (config.filter.hue !== 0) fx.addFilter('hue', config.filter.hue);\n if (config.filter.negative) fx.addFilter('negative');\n if (config.filter.sepia) fx.addFilter('sepia');\n if (config.filter.vintage) fx.addFilter('brownie');\n if (config.filter.sepia) fx.addFilter('sepia');\n if (config.filter.kodachrome) fx.addFilter('kodachrome');\n if (config.filter.technicolor) fx.addFilter('technicolor');\n if (config.filter.polaroid) fx.addFilter('polaroid');\n if (config.filter.pixelate !== 0) fx.addFilter('pixelate', config.filter.pixelate);\n fx.apply(inCanvas);\n // read pixel data\n /*\n const gl = outCanvas.getContext('webgl');\n if (gl) {\n const glBuffer = new Uint8Array(outCanvas.width * outCanvas.height * 4);\n const pixBuffer = new Uint8Array(outCanvas.width * outCanvas.height * 3);\n gl.readPixels(0, 0, outCanvas.width, outCanvas.height, gl.RGBA, gl.UNSIGNED_BYTE, glBuffer);\n // gl returns rbga while we only need rgb, so discarding alpha channel\n // gl returns starting point as lower left, so need to invert vertical\n let i = 0;\n for (let y = outCanvas.height - 1; y >= 0; y--) {\n for (let x = 0; x < outCanvas.width; x++) {\n const index = (x + y * outCanvas.width) * 4;\n pixBuffer[i++] = glBuffer[index + 0];\n pixBuffer[i++] = glBuffer[index + 1];\n pixBuffer[i++] = glBuffer[index + 2];\n }\n }\n outCanvas.data = pixBuffer;\n }\n */\n } else {\n outCanvas = inCanvas;\n if (fx) fx = null;\n }\n let pixels;\n if (outCanvas.data) {\n const shape = [outCanvas.height, outCanvas.width, 3];\n pixels = tf.tensor3d(outCanvas.data, shape, 'int32');\n } else if ((config.backend === 'webgl') || (outCanvas instanceof ImageData)) {\n // tf kernel-optimized method to get imagedata, also if input is imagedata, just use it\n pixels = tf.browser.fromPixels(outCanvas);\n } else {\n // cpu and wasm kernel does not implement efficient fromPixels method nor we can use canvas as-is, so we do a silly one more canvas\n const tempCanvas = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(targetWidth, targetHeight) : document.createElement('canvas');\n tempCanvas.width = targetWidth;\n tempCanvas.height = targetHeight;\n const tempCtx = tempCanvas.getContext('2d');\n tempCtx?.drawImage(outCanvas, 0, 0);\n const data = tempCtx?.getImageData(0, 0, targetWidth, targetHeight);\n pixels = tf.browser.fromPixels(data);\n }\n const casted = pixels.toFloat();\n tensor = casted.expandDims(0);\n pixels.dispose();\n casted.dispose();\n }\n const canvas = config.filter.return ? outCanvas : null;\n return { tensor, canvas };\n}\n", "import { defaults } from '../config';\nimport { TRI468 as triangulation } from '../blazeface/coords';\n\nexport const drawOptions = {\n color: 'rgba(173, 216, 230, 0.3)', // 'lightblue' with light alpha channel\n labelColor: 'rgba(173, 216, 230, 1)', // 'lightblue' with dark alpha channel\n shadowColor: 'black',\n font: 'small-caps 16px \"Segoe UI\"',\n lineHeight: 20,\n lineWidth: 6,\n pointSize: 2,\n roundRect: 28,\n drawPoints: false,\n drawLabels: true,\n drawBoxes: true,\n drawPolygons: true,\n fillPolygons: false,\n useDepth: true,\n useCurves: false,\n bufferedOutput: false,\n useRawBoxes: false,\n};\n\nfunction point(ctx, x, y, z = null) {\n ctx.fillStyle = drawOptions.useDepth && z ? `rgba(${127.5 + (2 * (z || 0))}, ${127.5 - (2 * (z || 0))}, 255, 0.3)` : drawOptions.color;\n ctx.beginPath();\n ctx.arc(x, y, drawOptions.pointSize, 0, 2 * Math.PI);\n ctx.fill();\n}\n\nfunction rect(ctx, x, y, width, height) {\n ctx.beginPath();\n if (drawOptions.useCurves) {\n const cx = (x + x + width) / 2;\n const cy = (y + y + height) / 2;\n ctx.ellipse(cx, cy, width / 2, height / 2, 0, 0, 2 * Math.PI);\n } else {\n ctx.lineWidth = drawOptions.lineWidth;\n ctx.moveTo(x + drawOptions.roundRect, y);\n ctx.lineTo(x + width - drawOptions.roundRect, y);\n ctx.quadraticCurveTo(x + width, y, x + width, y + drawOptions.roundRect);\n ctx.lineTo(x + width, y + height - drawOptions.roundRect);\n ctx.quadraticCurveTo(x + width, y + height, x + width - drawOptions.roundRect, y + height);\n ctx.lineTo(x + drawOptions.roundRect, y + height);\n ctx.quadraticCurveTo(x, y + height, x, y + height - drawOptions.roundRect);\n ctx.lineTo(x, y + drawOptions.roundRect);\n ctx.quadraticCurveTo(x, y, x + drawOptions.roundRect, y);\n ctx.closePath();\n }\n ctx.stroke();\n}\n\nfunction lines(ctx, points: number[] = []) {\n if (points === undefined || points.length === 0) return;\n ctx.beginPath();\n ctx.moveTo(points[0][0], points[0][1]);\n for (const pt of points) {\n ctx.strokeStyle = drawOptions.useDepth && pt[2] ? `rgba(${127.5 + (2 * pt[2])}, ${127.5 - (2 * pt[2])}, 255, 0.3)` : drawOptions.color;\n ctx.fillStyle = drawOptions.useDepth && pt[2] ? `rgba(${127.5 + (2 * pt[2])}, ${127.5 - (2 * pt[2])}, 255, 0.3)` : drawOptions.color;\n ctx.lineTo(pt[0], parseInt(pt[1]));\n }\n ctx.stroke();\n if (drawOptions.fillPolygons) {\n ctx.closePath();\n ctx.fill();\n }\n}\n\nfunction curves(ctx, points: number[] = []) {\n if (points === undefined || points.length === 0) return;\n if (!drawOptions.useCurves || points.length <= 2) {\n lines(ctx, points);\n return;\n }\n ctx.moveTo(points[0][0], points[0][1]);\n for (let i = 0; i < points.length - 2; i++) {\n const xc = (points[i][0] + points[i + 1][0]) / 2;\n const yc = (points[i][1] + points[i + 1][1]) / 2;\n ctx.quadraticCurveTo(points[i][0], points[i][1], xc, yc);\n }\n ctx.quadraticCurveTo(points[points.length - 2][0], points[points.length - 2][1], points[points.length - 1][0], points[points.length - 1][1]);\n ctx.stroke();\n if (drawOptions.fillPolygons) {\n ctx.closePath();\n ctx.fill();\n }\n}\n\nexport async function gesture(inCanvas: HTMLCanvasElement, result: Array) {\n if (!result || !inCanvas) return;\n if (!(inCanvas instanceof HTMLCanvasElement)) return;\n const ctx = inCanvas.getContext('2d');\n if (!ctx) return;\n ctx.font = drawOptions.font;\n ctx.fillStyle = drawOptions.color;\n let i = 1;\n for (let j = 0; j < result.length; j++) {\n let where:any[] = [];\n let what:any[] = [];\n [where, what] = Object.entries(result[j]);\n if ((what.length > 1) && (what[1].length > 0)) {\n const person = where[1] > 0 ? `#${where[1]}` : '';\n const label = `${where[0]} ${person}: ${what[1]}`;\n if (drawOptions.shadowColor && drawOptions.shadowColor !== '') {\n ctx.fillStyle = drawOptions.shadowColor;\n ctx.fillText(label, 8, 2 + (i * drawOptions.lineHeight));\n }\n ctx.fillStyle = drawOptions.labelColor;\n ctx.fillText(label, 6, 0 + (i * drawOptions.lineHeight));\n i += 1;\n }\n }\n}\n\nexport async function face(inCanvas: HTMLCanvasElement, result: Array) {\n if (!result || !inCanvas) return;\n if (!(inCanvas instanceof HTMLCanvasElement)) return;\n const ctx = inCanvas.getContext('2d');\n if (!ctx) return;\n for (const f of result) {\n ctx.font = drawOptions.font;\n ctx.strokeStyle = drawOptions.color;\n ctx.fillStyle = drawOptions.color;\n if (drawOptions.drawBoxes) {\n if (drawOptions.useRawBoxes) rect(ctx, inCanvas.width * f.boxRaw[0], inCanvas.height * f.boxRaw[1], inCanvas.width * f.boxRaw[2], inCanvas.height * f.boxRaw[3]);\n else rect(ctx, f.box[0], f.box[1], f.box[2], f.box[3]);\n }\n // silly hack since fillText does not suport new line\n const labels:string[] = [];\n labels.push(`face confidence: ${Math.trunc(100 * f.confidence)}%`);\n if (f.genderConfidence) labels.push(`${f.gender || ''} ${Math.trunc(100 * f.genderConfidence)}% confident`);\n // if (f.genderConfidence) labels.push(f.gender);\n if (f.age) labels.push(`age: ${f.age || ''}`);\n if (f.iris) labels.push(`iris distance: ${f.iris}`);\n if (f.emotion && f.emotion.length > 0) {\n const emotion = f.emotion.map((a) => `${Math.trunc(100 * a.score)}% ${a.emotion}`);\n labels.push(emotion.join(' '));\n }\n if (f.angle && f.angle.roll) labels.push(`roll: ${Math.trunc(100 * f.angle.roll) / 100} yaw:${Math.trunc(100 * f.angle.yaw) / 100} pitch:${Math.trunc(100 * f.angle.pitch) / 100}`);\n if (labels.length === 0) labels.push('face');\n ctx.fillStyle = drawOptions.color;\n for (let i = labels.length - 1; i >= 0; i--) {\n const x = Math.max(f.box[0], 0);\n const y = i * drawOptions.lineHeight + f.box[1];\n if (drawOptions.shadowColor && drawOptions.shadowColor !== '') {\n ctx.fillStyle = drawOptions.shadowColor;\n ctx.fillText(labels[i], x + 5, y + 16);\n }\n ctx.fillStyle = drawOptions.labelColor;\n ctx.fillText(labels[i], x + 4, y + 15);\n }\n ctx.lineWidth = 1;\n if (f.mesh && f.mesh.length > 0) {\n if (drawOptions.drawPoints) {\n for (const pt of f.mesh) point(ctx, pt[0], pt[1], pt[2]);\n // for (const pt of f.meshRaw) point(ctx, pt[0] * inCanvas.offsetWidth, pt[1] * inCanvas.offsetHeight, pt[2]);\n }\n if (drawOptions.drawPolygons) {\n ctx.lineWidth = 1;\n for (let i = 0; i < triangulation.length / 3; i++) {\n const points = [\n triangulation[i * 3 + 0],\n triangulation[i * 3 + 1],\n triangulation[i * 3 + 2],\n ].map((index) => f.mesh[index]);\n lines(ctx, points);\n }\n // iris: array[center, left, top, right, bottom]\n if (f.annotations && f.annotations.leftEyeIris) {\n ctx.strokeStyle = drawOptions.useDepth ? 'rgba(255, 200, 255, 0.3)' : drawOptions.color;\n ctx.beginPath();\n const sizeX = Math.abs(f.annotations.leftEyeIris[3][0] - f.annotations.leftEyeIris[1][0]) / 2;\n const sizeY = Math.abs(f.annotations.leftEyeIris[4][1] - f.annotations.leftEyeIris[2][1]) / 2;\n ctx.ellipse(f.annotations.leftEyeIris[0][0], f.annotations.leftEyeIris[0][1], sizeX, sizeY, 0, 0, 2 * Math.PI);\n ctx.stroke();\n if (drawOptions.fillPolygons) {\n ctx.fillStyle = drawOptions.useDepth ? 'rgba(255, 255, 200, 0.3)' : drawOptions.color;\n ctx.fill();\n }\n }\n if (f.annotations && f.annotations.rightEyeIris) {\n ctx.strokeStyle = drawOptions.useDepth ? 'rgba(255, 200, 255, 0.3)' : drawOptions.color;\n ctx.beginPath();\n const sizeX = Math.abs(f.annotations.rightEyeIris[3][0] - f.annotations.rightEyeIris[1][0]) / 2;\n const sizeY = Math.abs(f.annotations.rightEyeIris[4][1] - f.annotations.rightEyeIris[2][1]) / 2;\n ctx.ellipse(f.annotations.rightEyeIris[0][0], f.annotations.rightEyeIris[0][1], sizeX, sizeY, 0, 0, 2 * Math.PI);\n ctx.stroke();\n if (drawOptions.fillPolygons) {\n ctx.fillStyle = drawOptions.useDepth ? 'rgba(255, 255, 200, 0.3)' : drawOptions.color;\n ctx.fill();\n }\n }\n }\n }\n }\n}\n\nconst lastDrawnPose:any[] = [];\nexport async function body(inCanvas: HTMLCanvasElement, result: Array) {\n if (!result || !inCanvas) return;\n if (!(inCanvas instanceof HTMLCanvasElement)) return;\n const ctx = inCanvas.getContext('2d');\n if (!ctx) return;\n ctx.lineJoin = 'round';\n for (let i = 0; i < result.length; i++) {\n // result[i].keypoints = result[i].keypoints.filter((a) => a.score > 0.5);\n if (!lastDrawnPose[i] && drawOptions.bufferedOutput) lastDrawnPose[i] = { ...result[i] };\n ctx.strokeStyle = drawOptions.color;\n ctx.lineWidth = drawOptions.lineWidth;\n if (drawOptions.drawPoints) {\n for (let pt = 0; pt < result[i].keypoints.length; pt++) {\n ctx.fillStyle = drawOptions.useDepth && result[i].keypoints[pt].position.z ? `rgba(${127.5 + (2 * result[i].keypoints[pt].position.z)}, ${127.5 - (2 * result[i].keypoints[pt].position.z)}, 255, 0.5)` : drawOptions.color;\n if (drawOptions.bufferedOutput) {\n lastDrawnPose[i].keypoints[pt][0] = (lastDrawnPose[i].keypoints[pt][0] + result[i].keypoints[pt].position.x) / 2;\n lastDrawnPose[i].keypoints[pt][1] = (lastDrawnPose[i].keypoints[pt][1] + result[i].keypoints[pt].position.y) / 2;\n point(ctx, lastDrawnPose[i].keypoints[pt][0], lastDrawnPose[i].keypoints[pt][1]);\n } else {\n point(ctx, result[i].keypoints[pt].position.x, result[i].keypoints[pt].position.y);\n }\n }\n }\n if (drawOptions.drawLabels) {\n ctx.font = drawOptions.font;\n for (const pt of result[i].keypoints) {\n ctx.fillStyle = drawOptions.useDepth && pt.position.z ? `rgba(${127.5 + (2 * pt.position.z)}, ${127.5 - (2 * pt.position.z)}, 255, 0.5)` : drawOptions.color;\n ctx.fillText(`${pt.part}`, pt.position.x + 4, pt.position.y + 4);\n }\n }\n if (drawOptions.drawPolygons) {\n let part;\n const points: any[] = [];\n // torso\n points.length = 0;\n part = result[i].keypoints.find((a) => a.part === 'leftShoulder');\n if (part && part.score > defaults.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightShoulder');\n if (part && part.score > defaults.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightHip');\n if (part && part.score > defaults.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftHip');\n if (part && part.score > defaults.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftShoulder');\n if (part && part.score > defaults.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n if (points.length === 5) lines(ctx, points); // only draw if we have complete torso\n // leg left\n points.length = 0;\n part = result[i].keypoints.find((a) => a.part === 'leftHip');\n if (part && part.score > defaults.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftKnee');\n if (part && part.score > defaults.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftAnkle');\n if (part && part.score > defaults.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftHeel');\n if (part && part.score > defaults.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftFoot');\n if (part && part.score > defaults.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n curves(ctx, points);\n // leg right\n points.length = 0;\n part = result[i].keypoints.find((a) => a.part === 'rightHip');\n if (part && part.score > defaults.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightKnee');\n if (part && part.score > defaults.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightAnkle');\n if (part && part.score > defaults.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightHeel');\n if (part && part.score > defaults.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightFoot');\n if (part && part.score > defaults.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n curves(ctx, points);\n // arm left\n points.length = 0;\n part = result[i].keypoints.find((a) => a.part === 'leftShoulder');\n if (part && part.score > defaults.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftElbow');\n if (part && part.score > defaults.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftWrist');\n if (part && part.score > defaults.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftPalm');\n if (part && part.score > defaults.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n curves(ctx, points);\n // arm right\n points.length = 0;\n part = result[i].keypoints.find((a) => a.part === 'rightShoulder');\n if (part && part.score > defaults.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightElbow');\n if (part && part.score > defaults.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightWrist');\n if (part && part.score > defaults.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightPalm');\n if (part && part.score > defaults.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n curves(ctx, points);\n // draw all\n }\n }\n}\n\nexport async function hand(inCanvas: HTMLCanvasElement, result: Array) {\n if (!result || !inCanvas) return;\n if (!(inCanvas instanceof HTMLCanvasElement)) return;\n const ctx = inCanvas.getContext('2d');\n if (!ctx) return;\n ctx.lineJoin = 'round';\n ctx.font = drawOptions.font;\n for (const h of result) {\n if (drawOptions.drawBoxes) {\n ctx.strokeStyle = drawOptions.color;\n ctx.fillStyle = drawOptions.color;\n if (drawOptions.useRawBoxes) rect(ctx, inCanvas.width * h.boxRaw[0], inCanvas.height * h.boxRaw[1], inCanvas.width * h.boxRaw[2], inCanvas.height * h.boxRaw[3]);\n else rect(ctx, h.box[0], h.box[1], h.box[2], h.box[3]);\n if (drawOptions.drawLabels) {\n if (drawOptions.shadowColor && drawOptions.shadowColor !== '') {\n ctx.fillStyle = drawOptions.shadowColor;\n ctx.fillText('hand', h.box[0] + 3, 1 + h.box[1] + drawOptions.lineHeight, h.box[2]);\n }\n ctx.fillStyle = drawOptions.labelColor;\n ctx.fillText('hand', h.box[0] + 2, 0 + h.box[1] + drawOptions.lineHeight, h.box[2]);\n }\n ctx.stroke();\n }\n if (drawOptions.drawPoints) {\n if (h.landmarks && h.landmarks.length > 0) {\n for (const pt of h.landmarks) {\n ctx.fillStyle = drawOptions.useDepth ? `rgba(${127.5 + (2 * pt[2])}, ${127.5 - (2 * pt[2])}, 255, 0.5)` : drawOptions.color;\n point(ctx, pt[0], pt[1]);\n }\n }\n }\n if (drawOptions.drawPolygons) {\n const addPart = (part) => {\n if (!part) return;\n for (let i = 0; i < part.length; i++) {\n ctx.lineWidth = drawOptions.lineWidth;\n ctx.beginPath();\n ctx.strokeStyle = drawOptions.useDepth ? `rgba(${127.5 + (2 * part[i][2])}, ${127.5 - (2 * part[i][2])}, 255, 0.5)` : drawOptions.color;\n ctx.moveTo(part[i > 0 ? i - 1 : 0][0], part[i > 0 ? i - 1 : 0][1]);\n ctx.lineTo(part[i][0], part[i][1]);\n ctx.stroke();\n }\n };\n addPart(h.annotations.indexFinger);\n addPart(h.annotations.middleFinger);\n addPart(h.annotations.ringFinger);\n addPart(h.annotations.pinky);\n addPart(h.annotations.thumb);\n // addPart(hand.annotations.palmBase);\n }\n }\n}\n\nexport async function object(inCanvas: HTMLCanvasElement, result: Array) {\n if (!result || !inCanvas) return;\n if (!(inCanvas instanceof HTMLCanvasElement)) return;\n const ctx = inCanvas.getContext('2d');\n if (!ctx) return;\n ctx.lineJoin = 'round';\n ctx.font = drawOptions.font;\n for (const h of result) {\n if (drawOptions.drawBoxes) {\n ctx.strokeStyle = drawOptions.color;\n ctx.fillStyle = drawOptions.color;\n if (drawOptions.useRawBoxes) rect(ctx, inCanvas.width * h.boxRaw[0], inCanvas.height * h.boxRaw[1], inCanvas.width * h.boxRaw[2], inCanvas.height * h.boxRaw[3]);\n else rect(ctx, h.box[0], h.box[1], h.box[2], h.box[3]);\n if (drawOptions.drawLabels) {\n const label = `${Math.round(100 * h.score)}% ${h.label}`;\n if (drawOptions.shadowColor && drawOptions.shadowColor !== '') {\n ctx.fillStyle = drawOptions.shadowColor;\n ctx.fillText(label, h.box[0] + 3, 1 + h.box[1] + drawOptions.lineHeight, h.box[2]);\n }\n ctx.fillStyle = drawOptions.labelColor;\n ctx.fillText(label, h.box[0] + 2, 0 + h.box[1] + drawOptions.lineHeight, h.box[2]);\n }\n ctx.stroke();\n }\n }\n}\n\nexport async function canvas(inCanvas: HTMLCanvasElement, outCanvas: HTMLCanvasElement) {\n if (!inCanvas || !outCanvas) return;\n if (!(inCanvas instanceof HTMLCanvasElement) || !(outCanvas instanceof HTMLCanvasElement)) return;\n const outCtx = inCanvas.getContext('2d');\n outCtx?.drawImage(inCanvas, 0, 0);\n}\n\nexport async function all(inCanvas: HTMLCanvasElement, result:any) {\n if (!result || !inCanvas) return;\n if (!(inCanvas instanceof HTMLCanvasElement)) return;\n face(inCanvas, result.face);\n body(inCanvas, result.body);\n hand(inCanvas, result.hand);\n gesture(inCanvas, result.gesture);\n object(inCanvas, result.object);\n}\n", "/* eslint-disable indent */\n/* eslint-disable no-multi-spaces */\n\n/**\n * Configuration interface definition for **Human** library\n *\n * Contains all configurable parameters\n */\nexport interface Config {\n backend: string,\n wasmPath: string,\n debug: boolean,\n async: boolean,\n profile: boolean,\n deallocate: boolean,\n scoped: boolean,\n videoOptimized: boolean,\n warmup: string,\n filter: {\n enabled: boolean,\n width: number,\n height: number,\n return: boolean,\n brightness: number,\n contrast: number,\n sharpness: number,\n blur: number\n saturation: number,\n hue: number,\n negative: boolean,\n sepia: boolean,\n vintage: boolean,\n kodachrome: boolean,\n technicolor: boolean,\n polaroid: boolean,\n pixelate: number,\n },\n gesture: {\n enabled: boolean,\n },\n face: {\n enabled: boolean,\n detector: {\n modelPath: string,\n rotation: boolean,\n maxFaces: number,\n skipFrames: number,\n skipInitial: boolean,\n minConfidence: number,\n iouThreshold: number,\n scoreThreshold: number,\n return: boolean,\n },\n mesh: {\n enabled: boolean,\n modelPath: string,\n },\n iris: {\n enabled: boolean,\n modelPath: string,\n },\n description: {\n enabled: boolean,\n modelPath: string,\n skipFrames: number,\n },\n age: {\n enabled: boolean,\n modelPath: string,\n skipFrames: number,\n },\n gender: {\n enabled: boolean,\n minConfidence: number,\n modelPath: string,\n skipFrames: number,\n },\n emotion: {\n enabled: boolean,\n minConfidence: number,\n skipFrames: number,\n modelPath: string,\n },\n embedding: {\n enabled: boolean,\n modelPath: string,\n },\n },\n body: {\n enabled: boolean,\n modelPath: string,\n maxDetections: number,\n scoreThreshold: number,\n nmsRadius: number,\n },\n hand: {\n enabled: boolean,\n rotation: boolean,\n skipFrames: number,\n skipInitial: boolean,\n minConfidence: number,\n iouThreshold: number,\n scoreThreshold: number,\n maxHands: number,\n landmarks: boolean,\n detector: {\n modelPath: string,\n },\n skeleton: {\n modelPath: string,\n },\n },\n object: {\n enabled: boolean,\n modelPath: string,\n minConfidence: number,\n iouThreshold: number,\n maxResults: number,\n skipFrames: number,\n },\n}\n\nconst config: Config = {\n backend: 'webgl', // select tfjs backend to use\n // can be 'webgl', 'wasm', 'cpu', or 'humangl' which is a custom version of webgl\n // leave as empty string to continue using default backend\n // when backend is set outside of Human library\n wasmPath: '../assets/', // path for wasm binaries\n // only used for backend: wasm\n debug: true, // print additional status messages to console\n async: true, // execute enabled models in parallel\n // this disables per-model performance data but\n // slightly increases performance\n // cannot be used if profiling is enabled\n profile: false, // enable tfjs profiling\n // this has significant performance impact\n // only enable for debugging purposes\n // currently only implemented for age,gender,emotion models\n deallocate: false, // aggresively deallocate gpu memory after each usage\n // only valid for webgl backend and only during first call\n // cannot be changed unless library is reloaded\n // this has significant performance impact\n // only enable on low-memory devices\n scoped: false, // enable scoped runs\n // some models *may* have memory leaks,\n // this wrapps everything in a local scope at a cost of performance\n // typically not needed\n videoOptimized: true, // perform additional optimizations when input is video,\n // must be disabled for images\n // basically this skips object box boundary detection for every n frames\n // while maintaining in-box detection since objects cannot move that fast\n warmup: 'face', // what to use for human.warmup(), can be 'none', 'face', 'full'\n // warmup pre-initializes all models for faster inference but can take\n // significant time on startup\n filter: {\n enabled: true, // enable image pre-processing filters\n width: 0, // resize input width\n height: 0, // resize input height\n // if both width and height are set to 0, there is no resizing\n // if just one is set, second one is scaled automatically\n // if both are set, values are used as-is\n return: true, // return processed canvas imagedata in result\n brightness: 0, // range: -1 (darken) to 1 (lighten)\n contrast: 0, // range: -1 (reduce contrast) to 1 (increase contrast)\n sharpness: 0, // range: 0 (no sharpening) to 1 (maximum sharpening)\n blur: 0, // range: 0 (no blur) to N (blur radius in pixels)\n saturation: 0, // range: -1 (reduce saturation) to 1 (increase saturation)\n hue: 0, // range: 0 (no change) to 360 (hue rotation in degrees)\n negative: false, // image negative\n sepia: false, // image sepia colors\n vintage: false, // image vintage colors\n kodachrome: false, // image kodachrome colors\n technicolor: false, // image technicolor colors\n polaroid: false, // image polaroid camera effect\n pixelate: 0, // range: 0 (no pixelate) to N (number of pixels to pixelate)\n },\n\n gesture: {\n enabled: true, // enable simple gesture recognition\n },\n\n face: {\n enabled: true, // controls if specified modul is enabled\n // face.enabled is required for all face models:\n // detector, mesh, iris, age, gender, emotion\n // (note: module is not loaded until it is required)\n detector: {\n modelPath: '../models/blazeface-back.json',\n rotation: false, // use best-guess rotated face image or just box with rotation as-is\n // false means higher performance, but incorrect mesh mapping if face angle is above 20 degrees\n // this parameter is not valid in nodejs\n maxFaces: 10, // maximum number of faces detected in the input\n // should be set to the minimum number for performance\n skipFrames: 21, // how many frames to go without re-running the face bounding box detector\n // only used for video inputs\n // e.g., if model is running st 25 FPS, we can re-use existing bounding\n // box for updated face analysis as the head probably hasn't moved much\n // in short time (10 * 1/25 = 0.25 sec)\n skipInitial: false, // if previous detection resulted in no faces detected,\n // should skipFrames be reset immediately\n minConfidence: 0.2, // threshold for discarding a prediction\n iouThreshold: 0.1, // threshold for deciding whether boxes overlap too much in\n // non-maximum suppression (0.1 means drop if overlap 10%)\n scoreThreshold: 0.2, // threshold for deciding when to remove boxes based on score\n // in non-maximum suppression,\n // this is applied on detection objects only and before minConfidence\n return: false, // return extracted face as tensor\n },\n\n mesh: {\n enabled: true,\n modelPath: '../models/facemesh.json',\n },\n\n iris: {\n enabled: true,\n modelPath: '../models/iris.json',\n },\n\n description: {\n enabled: true, // to improve accuracy of face description extraction it is\n // recommended to enable detector.rotation and mesh.enabled\n modelPath: '../models/faceres.json',\n skipFrames: 31, // how many frames to go without re-running the detector\n // only used for video inputs\n },\n\n emotion: {\n enabled: true,\n minConfidence: 0.1, // threshold for discarding a prediction\n skipFrames: 32, // how many frames to go without re-running the detector\n modelPath: '../models/emotion.json',\n },\n\n age: {\n enabled: false, // obsolete, replaced by description module\n modelPath: '../models/age.json',\n skipFrames: 33, // how many frames to go without re-running the detector\n // only used for video inputs\n },\n\n gender: {\n enabled: false, // obsolete, replaced by description module\n minConfidence: 0.1, // threshold for discarding a prediction\n modelPath: '../models/gender.json',\n skipFrames: 34, // how many frames to go without re-running the detector\n // only used for video inputs\n },\n\n embedding: {\n enabled: false, // obsolete, replaced by description module\n modelPath: '../models/mobileface.json',\n },\n },\n\n body: {\n enabled: true,\n modelPath: '../models/posenet.json', // can be 'posenet' or 'blazepose'\n maxDetections: 10, // maximum number of people detected in the input\n // should be set to the minimum number for performance\n // only valid for posenet as blazepose only detects single pose\n scoreThreshold: 0.3, // threshold for deciding when to remove boxes based on score\n // in non-maximum suppression\n // only valid for posenet as blazepose only detects single pose\n nmsRadius: 20, // radius for deciding points are too close in non-maximum suppression\n // only valid for posenet as blazepose only detects single pose\n },\n\n hand: {\n enabled: true,\n rotation: false, // use best-guess rotated hand image or just box with rotation as-is\n // false means higher performance, but incorrect finger mapping if hand is inverted\n skipFrames: 12, // how many frames to go without re-running the hand bounding box detector\n // only used for video inputs\n // e.g., if model is running st 25 FPS, we can re-use existing bounding\n // box for updated hand skeleton analysis as the hand probably\n // hasn't moved much in short time (10 * 1/25 = 0.25 sec)\n skipInitial: false, // if previous detection resulted in no faces detected,\n // should skipFrames be reset immediately\n minConfidence: 0.1, // threshold for discarding a prediction\n iouThreshold: 0.1, // threshold for deciding whether boxes overlap too much\n // in non-maximum suppression\n scoreThreshold: 0.5, // threshold for deciding when to remove boxes based on\n // score in non-maximum suppression\n maxHands: 1, // maximum number of hands detected in the input\n // should be set to the minimum number for performance\n landmarks: true, // detect hand landmarks or just hand boundary box\n detector: {\n modelPath: '../models/handdetect.json',\n },\n skeleton: {\n modelPath: '../models/handskeleton.json',\n },\n },\n\n object: {\n enabled: false,\n modelPath: '../models/nanodet.json',\n minConfidence: 0.20, // threshold for discarding a prediction\n iouThreshold: 0.40, // threshold for deciding whether boxes overlap too much\n // in non-maximum suppression\n maxResults: 10, // maximum number of objects detected in the input\n skipFrames: 41, // how many frames to go without re-running the detector\n },\n};\nexport { config as defaults };\n", "// data:image/jpeg;base64,\nexport const face = `\n/9j/4AAQSkZJRgABAQEAYABgAAD/4QBoRXhpZgAATU0AKgAAAAgABAEaAAUAAAABAAAAPgEbAAUA\nAAABAAAARgEoAAMAAAABAAIAAAExAAIAAAARAAAATgAAAAAAAABgAAAAAQAAAGAAAAABcGFpbnQu\nbmV0IDQuMi4xMwAA/9sAQwAGBAUGBQQGBgUGBwcGCAoQCgoJCQoUDg8MEBcUGBgXFBYWGh0lHxob\nIxwWFiAsICMmJykqKRkfLTAtKDAlKCko/9sAQwEHBwcKCAoTCgoTKBoWGigoKCgoKCgoKCgoKCgo\nKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo/8AAEQgBAAEAAwEhAAIRAQMRAf/E\nAB8AAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKC//EALUQAAIBAwMCBAMFBQQEAAABfQECAwAE\nEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZH\nSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1\ntre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+v/EAB8BAAMBAQEBAQEB\nAQEAAAAAAAABAgMEBQYHCAkKC//EALURAAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXET\nIjKBCBRCkaGxwQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNUVVZXWFla\nY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXG\nx8jJytLT1NXW19jZ2uLj5OXm5+jp6vLz9PX29/j5+v/aAAwDAQACEQMRAD8A+qaKACigApGOKAML\nXp8xlF5A7V4X8RtYs7PzfNImnx8sa8Kp9z3q2tEgp6angWs62ZZ5CTGoJ6DArGNz5p+UrID6EUrF\nPUlW1EuN0XNW7PQ2L5j3JnoKXN0KijqNP0eYoqXBdgPuuo+ZPeupisWn2Jd4+0r924XgsQOCff3/\nAJ1FzRKxDqGii6m3siiQ8F1XGfXI6YNWLfRbiRQMkcZI9fpTDluT2/h6Qy8gDPbtmtG38JeY480Z\n5zSLUTZg8M28YwYxjAArXtdPt402qgHbpSaLWhma3o0Uqk7Nx9DWLaaVblgPs6qRyds2M/gRSQp9\nzZOni2iWS2hlQ+kjYz9OMGrdjq89vIPPVhj+8M/lQyDq9P1WOYBlMZz1AOD+VdDaTiReOKulK0jO\ntHmi0WDTlr0TyxRVhT8tJjIX+9SUxHXUV553BRQAVBcPhSBTSuxPY86+IGti0s5I7dsORy9fM3i6\n8e8mfDO5P90ZrWWiJicNPpZZtxV/xrW0jQt4DOv6Vk2dEEdTY6BHuB25rpbPSo0QARjP0qTRI17W\nwA/hFaMWmoQMgflQXYsDS142rU9tpqqenfNA7GgtihxkdKuRW6qMY/GkDZY8sY4Ap4hXbyB+VArk\nEtuH4wPyrk/EGkOm+a3jw3suRQLc5i38SX9hJ9nnY+XnBUdPyNdFY6pa3KkkAE9l6f8AfJ/pSJT6\nGhDmI+Zb4ZRycdv6ium0nUhKFydrelTsNnS2829RnrVgV6NKXNG55lWPLIM81Op+WrZkRMfmNNzT\nA7GivPO4KKAEY4XNYWt3vkwPg4OK0giJdjw/xrqhm87Zs8tc7pX5A+leSajf6aHYJ50kn4AZpTep\nrBWRm2Vobm4BXfyehPFdnpmnBFUY5rI2SN63tlToK0YI+KZpFF+3QdavwoKTLtoW0Toaswpk5pCb\nLCxipAhoIuP2dKevHXoaYDylRyxhlwRQI4nxVoCXWZI1GfpXGtbSWjYPGP73+NIGupt6TqMsLruZ\nih4xnP5V09mQ+JLd8gn0xSYJnVaVdkook69K34zuUGunDS3Rx4qOzHVIp4rrOMY3NJQI7GivPO8K\nKAILt9kZrz3xlebYiu8KCCWb0XvW0NFch6ysfO3jLVjfXLIn+pQkKorl7WxNxIPl71g2dUUdpo+l\npBGvHPet23iC8ihFosrxirkHQUFo0IF4FXI1O726CpKLacCrMJoJLYHAPpTwucHpSRJJ5e4AZI9x\nUqpxzVpCuOC8cUpQUMRnXttuB4rjNdsYyeVwfXpmpGmcvcQyafMCFJjPY10eg34BUg4DcZP8jUO4\nHaRq3lLNF+IHet7R7jz7c56rwa2wz9+xhiVeFy/T1PFegeaNPWigDsc0ZrzzvDNIaAM7VpNqdegr\nxL4l6kywyRhseZ19lrdfAZL4jxYg3Fw20d63tJsdrDI5rm3Z3R0R0Mce1eKnQYAplIkWrMJ45oZS\nNO3PHbNXIyfpSGWowSOasxLUiZdjFSqtNEMkUemKlAGKsRJjAppFAiORMjmsTVrNZEO4cfSoZSOD\n1eJ7WXBUzQZ+7nkfSo7e2Ei+ZaMzxntjBX2NSU1Y6/wxqojiEFzkA8KTXYaUoWRyv3W5rSjpNHPX\n+BmpSg8V6J5gUUAdhRXnneFFAGHrTfu5PpXzj8S70/aZtxzztXFbv4DKHxHI+H4GZiz9zxXXW8G3\nGBXMjvLRXAx0oPGPSmMVeOnWrMTYpFI0bcg1fh54xmgovRcD3qxETSIZcRvzp+/BpEkqsBUqsM9K\nq4Em4Gkxk0yRGXrVW6i8yFhkg+tJjRxGsWrxllkUMh9eK5uMz6bcebbnfG33kPcVkay2OntPKuo0\nnhXI67c8qa7Lw3c+adjcEDGK1paSRhVV4s6A0or0jyRRQ1AHX0V553hRQBz+vNtt5z3xXzX8Qbdm\nuic5YnOMdK3l8JnTXvlbwpYl+WySOgrp5YfLOOB9O1c62O7qQkc+9RsKChFPWp4DluOlSykaNruH\nArUgHShFNF2NT1qxGO3NBmyxGcE1N2560CFzjrUysO9JAPDDjFOVuKoQuSRTWouBkazbCa3cd8cV\nwF7IISQccHBzUSWpV9C3o1x5b5GAjdQD1rs9DjC3kckbEhqKfxIzn8LOupRXqnkPccBSkUAzraK8\n87wooA5rxMSI3HqK8B8bQl9Q8sffY5b/AAraXwkUviNrw9pH2W1ViMMRTdRjw4HpWNtDti9TPc4P\nFQs2M5qdyyMHLcfjV63HTAoBGtap0wK0YxigpsuRDtVhVYd6GQydVwwIqdRnqKCR23I5pCMUW6gD\nYNKuetAEise9KTxQBWuFyhrznxNZkXjFeN3I+tTIZg2OqmzmxNF0PO3vXp/g2+hukVl4zyPanTXv\nJmVR+60dpThXpnlPceopWFAbnV0V553hSGgRynjC5FujOey14Ssp1HxNmTnc+a3kvcIpv37HoEYQ\nQmMdVHSsnVbYJF5jVk0dsNzlruVIsl2wKxbjWrVHILjg1CRbZJb+ILHPzyhfStODWLQgFJFYd+el\nUJM27HUIXxhga1Y5lLVLKLkMnoauxnPPrSEx7ShF+Y/n2qrc6xBbhizDAqkK1zJuvG9nbg8ZA681\nly/Ei052RO3uKAsZlx8QGd8xxvt9Aa1NH8dK7AXMcip64zigdkdrZX8F7EJLdwwNXMkrz1qRMRly\nCK4TxmpidWI49felPYSOMmi80NIoOV6qRzXYeA5SskYPfirpfEjGr8LPWVHyD6U4CvQPL3ZItOYc\nUDOoNFeed4Uhpks4H4iE/Z5MeleMeGULeLgjds10S+BGdL+Jc9OSBU2Huc5Nc74yvUtrcDBrJnZF\n63PJdXvLy/lKWw46bvQVz82jXhkLO5Y+9ZlsYthcRnbIjY9R3q3awTRkEM3WmJI6C0ea3dGRsr1x\nXY6TqW9FLHnjrUs0izpLK5DDjofSta3ckH09KRUkZuuTvFGdvPauE1Y3U6Mqbssf/rUxHPTaJPK2\nZmJPbBqzY6DCZh5xJC9s9aBJHU6dpemJjfEmfetJtI0+VPkUr/unFOxdiextHs33W07YHQHk11mk\nXb3KbZ1xIvcd6LEyWho4Nct41sTPYb16ipexCPPZN+wYGCvH1rrPAEJmvkPoc1VL4kZVvgZ6yFwK\ncBXoHkkqinFaVyzo80GuE7WJRQSziPiGdthK5HQV4x4J/wBI8WPIewNdEvgRNL42emO/yj1UHNef\neNpRczbC+I17DvWT2OqJxc0sMK4TCisy41q0hfEkqj8aixdwTXNOlwvmqD9anS9tXH7uVG+hosO4\n/wC0oOhrR0+6G4YNIEzsNEuCxAPNdjZruA4xxUmjINSjURksOlcbqFykbnjFA1sYGoassaknCqO5\nrl7rxhGm7yBnBxuJq0rkSlYpw+NLlsfd5P8AerVsvHEqSBHwPVgcgVpyMyVXU3rXxcHYETAk+hru\n/DWti6ZSTyOKzZqndHaxvvUGq2rQ+dYyqR24qWI8dvbr7LqDxyDAzXpvw6FvIxePGSM06Xxoyr/A\nzviKFHNegeX1J41zUhXioGbuaSuM6wpCaBHG/EcA6HN/exxXjXw2jL67cv8A3Qa6H8CFR+NnoWpO\nI4XI44rxLxrqjQzSEsQM1gdSPM9U1uR1YbmWIdXHf2rmpIb67YS28UrRlsLI3c/jW0VZGUpO5pW1\njfLNOjahawzwReYI5cjzMkDavHJ5/SrVv9uhtPtVxCPLBwzxnlT9KGghLU3tKvvPjHzbl7EGuisJ\nGRxWLOg7nRXJEbDjmvSNK+aFSfSoZr0KutRkphc4NcRrdkVjL9aVio7Hk3iqS8ubhrWzUlsZY9kG\ncZNc5D4aee5MclzJIFTzHAO0MfatqSOWu7bFS1srDUZEis0vIZoUxPvfcC+4/dx2xjr712XiTwXb\nWmlQ6hol3cRhoFd4rlg3zY5wR0GelavQwjq7GD4etdVvSnk2wAB+9v8A8mvcfA2kXiRo0/UdcDis\nZnTTulqeoWqbUAJqWUb42X1FZlnjfjSwlGrr5S/eNdD4RkvLAAQ4yRyaUZcruVKl7TQ9I0G+mnzH\nckFwM8VuIK7ac3KF2eXiKapz5UWYxipNtMyNejNch0jSar3cjR27uoyQCRVRWom9DxTx54gu5fMi\nlbKdMVjfCZPNlv5v9rFbVHpYqjGzbOn8SzFI9o715L4u0r7arYzk+lYdTqSujy7U/C0u4vHk+WwO\nxuh9q3J9dgvbdVukMV1EwbDDgn04rZMwlHoZ+orZ6hfQ3RWVnQYCgZAq+8U0ln5NtBsV2yxYcfgK\nJtW0CnB31LlroVwJ1nQLGDjeP7w+lb0dsFxjrWB0tHS6NuWPJ6A16ToUm63T3Gallr4S7cxiTjrX\nPaxaF7dlVeSMUhxZ5jd+H7qCa4eF3DSE5x3zXN3Wk6jbyeaiFWUY6ZyPStYS5SalPmVipFbX0E4c\nW0alvmPHJrag0rVvEE6LdljGpG2NRtQD+tW5XMI0uU9M8NeFo9PiQhecDIIrtrOMIoG3H4VlJm9t\nC6CB06VPGM1IHLeItGS6uw+ORT7e3jsbQvj7gzUNam0JaWE+HN7NqOqX80n3FO1RXo8YzXdS+BHk\n4z+KyzGPapcU2YIv7qQtiuaxvcaWqG4O6FwfSrS1JbPnrxoxkv7qIfejcitj4V2f2exumI+8+aKn\nxHTT+G5d8Txlm4rjLxMsQwzWT3OiK0Mm6sEkVsAcjFc1d+FEmlGwEDPQVopaEuOpr6f4ZWNAu3tW\nvHpAj5ZQcUFIWaDjGMVUMQ3cVDBmvbhY7QAV2nh+T/R1yeKhlrY31+b61FcQK6nIoJMi401WblRi\nqr6PCw5UYq9y+YgOgWzNkRrx3xWjp+nx2v3FQcelAbmko9anQ4GBUNisPHWr1qMrQhS2K11HvmYV\nhamcxSRZ5xRIqluS/DKAQQXZxyXrvo2FdlL4EeZjH+/ZbjNSZpswLNBrE1Gt7VE4ODVIlnh/j61F\nj4lmeTGyUbq6LwdEqWbeX0YbhSqfEddP4Bddj4JIrhL5d8h7VjI6oLQqKNzelWre3yc4/ClFjaL6\nwqBxxUUxwCKu5BmXRA6c+9ZjP83FSBoQuPs4BrsNBlUW659KmRrDY6G1lyQtW3Hy0lqQ1qVJnAbm\noy3b9KYJCqRj3o4zRctIlhjLHmpSuOBRbQOpLGpPFaES7UqkZzKN1KsEc87/AHUUmvPLTVGv72aQ\nk7WJwKmRrQ3ud74Ltilgz4++2a6iNDXdS0gjyMU71my7GpqTbxSbMki3SViajTTHqkSeR/GeyZmg\nnQHkEE1S+F+oPPavBL96I4/Cia1udVF+4dVrkW+Fq8+v4tjMDWUkdVJ6WM0cNV+F+MVmjUcZgqnP\n1qpNNnkcVRLiZtxIS1UzzIF7mghlxUZpVQdq6nTVdAoAOKzkbQWhvwM6gMM1twOJYx3NOJE11Kt1\nH1/pVVlwBkk+9NocXoOQ45FPj+fkUJFF2NSB700v/hTEty5ZpkjvVyUgcCq6GM9zC14/8Se6GcZQ\n1574Xs5WkI2HBPHFQ1dm1KSSZ7Rotn9l0+KPHIHNacae1dy0Vjxaj5ptlhVp+2s2CJ9ppCKzuWNx\nzSFc1SYrHNeNdIGpaYw25ZeRXmvheyk0jVpEdcLJ0q3ZxNKTa0O3vQHg/DNcHrsJDmsmjspnNzNt\nfFIJ24GazOhC+azDmgZIOOKBsp3J2qSaZodubq58yQ4QAnmhGT3NO18pb7BORmu205LfYpyKVkWp\nOxr5gKYWoIZWgfGfloFq1qTPLubnGO1RPtxg4P0oBAkY/hBz6VNDDkZ6AU0W2WSdqkdKr9ZOaGSj\nVtcLHmnOcgmmYvcz7mBLy3MbdD1q9ouiRK6bUAVeelOC1InPlidSsWMDFOCEdq3uefykqrinYqGy\nrFvApMVka2DAowKAsMkRXQqwyDXn/iWyitNQ3qPl6itIvRoF8RXinW4tQ6HI6GuW8SIVBPalc6qe\n5x9x97r3qruwTjrWZ0ksZ9TUmcDNAmZ9/wAoao63rR0+w22MLPtAzt6mghmfofiB76LdJBJBIp5D\nd/oa7bSdWLIPnpDi9TM8TeKdas51XTbIyxd3J/pXS+E/EFxqNoFu7do5OmD60maHWrnZyDRkn/69\nMlEyOR0xntVoNx+FUgYjPxg4FLCuWDZyKQr2RoRnP0qO+nEFpJITgAUzLqZnhu6+0rknOTXpOmwJ\nFbrt5yMmnHYyr6Oxb2ijaKLnPYMClwKQWK3n0hn+lachHOJ9pNNN0apQFzsY10a4v4hXQh0xpieQ\nMA1XLZNjhK80cT8OdV+3Wl3A7ZZJCw+hrR1qLcjZ/CsbnfHRnFXseHJArOYYbrUs1uPhYbuatqFP\nByfSkMq3UIINYkto+87Tx6GkSxfsDbflGD7CtTw/pk4nzITtPIFMFudsukh4Rxz71paTpKwP5jcn\n0qTRy0NORMDgVCqewoJTJgAoxjntTiTu7fWmFxAcnn1q3EPl+X8KZMi4gKqB1Peob/Tv7Us5bfeU\nyOoq4R5nYxqT5I8xieH9J1DTbvyJELRg8ODwa9Ms5mSFV9BWiptbnNVrKdmif7Q1KLg96XIZc5Is\npNL5pqeUrmMtZs0jzV08phchaY00zH1p2ZNxjS1g+LdJOt6U9ssmxjyGp2urDjLlaZzng/wUPDqz\nTSTmWeTrjpVjVk3Rvjr2rnqQ5dDvo1XUd2cTqSNk9OKxXGCeKxZ1DAxHTr2q5C/y8GokUhsz54qu\nuCxzSQjQ0+FZblR2ro4bZYiMVQ0dBb7Qi5x0qzuG5QOh71LYErDufpSeWrHnimIXbjkUjLkH1Hem\ngGxryc+tXI19KYmWegq9YLiLJ7mtqS945cS7QsWehqxA9dEjz4krPSxyZqbFFhGxUm6smjRM55Lk\nHvSvNxXTY57kLT+9MNwKdhXGm5FIbkU7Bca1wMEVhaiuQcVhXWiZ14R6tHGanGBI2OtYkqEHjgVy\ns9ErEeo6UBsHipKEZs5qpPdRxcbhx70NCSuybTNWihc5brW9Fq6vjMnFSdEIdDRi8RRKygZbHFbu\nm6nb3RA3gMegNJhOm0jbXGOoxTuCc1Rz3FyoGKawz9KaAVcZqeMgCmIkB4FaUTbYwB6V00Fuzixb\n0SFMuDU8Mlbs4UPeXHeiOXkUrDuXYnyKk3cVk0ap6HMxxketSMhrcwRC0dMMZFMQ3yzSeVQAeUaz\n9Vj8uPd271nVV4m+GdpnHX67pCeKyLtBtNcR6xlk9RVeWTb3qRnO6trgttyIfm71z7ai8j7/AJmN\nDNqUVa5Yi1AnjynHuBV+11YJhWWXcP8AZNSzqgmaEerSsf3NtIQP4mGKtRavdRgMIpVI9KjU0a7n\nR6T43uYQI7qN2Tpkqciu503VVuQGAYZHQjFVc4alPlZrpKGAznpTwxOc9+lWjIlUACnM4XApiLNk\nnmvnsK0NvpXZRVonmYqV52GsmanhXitTmFkSiJTSAvwrxUxXIrJ7miOfjf1pzNWxkRlqYWpgJupu\n6gQbuahvIxPA6eo4pNXVioS5WmefakGhndH4INZs5DJXA10PaTurmLO21uKpSZqGMoXGnRzBiyjd\n9Kx5rcQS428fSkjanLoaOliHGZFB56VswW+mtPufcBsGOAfmxz+tFkd8HpoaUx09FAtFY8DO71qb\nSms/Nb7RbecG6AEjFLS5c78t+p0djpVs9wsyQiJAdyr1rW+zqjErzSe559Sbk9S3C+MA1bjbgE1S\nMSXzMVG0vNUI2tPKrAuCMnrVzNd0PhR49W/O2xrHmp4TxVMzQshpIzzQBehqesnuaI5VGzT2bitz\nFEbNTC1ADS1JupgG6l3UAc14s04yR/aYRll+8BXCtLncDXFWjys9TCz5oW7GddH5qqNzWDOgQnC8\nVSuo1kHzAGkPYopEY2+RWxV23Vzj5G/Kg3jWaNazhZuqNXS6TaKhB2c0jR1nJWOlhOxRxU4YkCgx\nY0OQatQyDbyaaFYe8uF4NY3iC9ltbVGj43NTIL3h7WzMihjzXVQXYYDdW9Cf2WcOJpfaRZ3g9KsQ\nmupnCLIabGeaAL0LcVY3cVmzRHIxtUhetzEjZqjLUAIWpN1ArhupwagAfDKQ3Q1594v0c2bm6tx+\n5Y8j+6ayrR5onThp8s7dzkZjuqAAmuBnqC7c0iwgtzSA0rWzjfGRW3ZadDu4AoNYo2rfS4v7orSh\n05UA2r0pDbsTm29KRottBNyJ0wpJ9KhD7f6U0ikNWffIFBz60zVUW52ow4UcUN6EPcx44WsbgOmd\nua7TT5Bd24KHnFKnLlZFSN4koluLdueRWvp14swweG9DXoxldHlTjYtzGoo25qzEvwtUxas2jRPQ\n5CNqkLVsYoYzUzdQA3dSFqBBmnqaBhuqhriCXTpVIzxUz+Fl03aSPI9QTypW2/dz0qKNw3SvOPZR\nMqin8VLKRcs3O4Cuk0w/MDjt1NBtHY6O2IIHY1pxgFaETIRwMkjtVSUEk4570MlFW5bap6dKzWm8\n1tqH8aY+hp2FvGoGayNevVt7/ap4xzUvYjqTLtvLPcvJxSaVcyWsxTnFZlnT2t15xHmCtOBYwQy4\nB9q7cPO+jPPxFO2qLEj5HWo42+aus4HpoX4W4FTF+KlotbHII9SFuK0MUNZqiLUDE3UbqBBupwag\nBc1DefPbyD/ZND2KjujyPWlKzuPesRZjHJXms9lMuw3StjnmphKDSLTJ7OfE3JrpbO4GQc9qlnRA\n3LO82k5NbFvdADkjBoCSHyXIIIzgVQvdRigT7wzjgUzO1jHknlvG7qnp61etYFQDIpCZoqVijzXn\n3iC8EmsOuaCGb/heR/s0ijkVv6fbxy3QMg5xmsnuX0Ldzut3+UYTPWk+2GJSe+M1pFtamcldalmx\n1eO4XaThhWnC+TXqR2PHqL3maUJ4qRjxSEjj42qXdxVmaGs1MJoATfSbqBAG5p6mgAzTJTmNvpQU\ntzzHXY83D/U1zF5FhjgV5r3Pa6FMsV5HWnLe7RhqBRdmTwagN2d2K2rPU1C5LAnPrUs6Iysbdrq6\nf3gK0BrUKj/WClY05iM6xLOcQAj3NT29uznfKSzHuadzNu7NSBFjHNSm5VO9IRnajqoWMhTzXFtA\nbvUfMduSeg702Qz0rS7FbTToQFwzjJqaGTFyfK5PQViyzUuFmuIdgGABya5u/vTaN5cnUHFUmLoZ\nzyskwlgJweSK6zQdUEwVJeGr0aUrxPLxEfe0OrhPAqVjxWhznGRtUwatDK4jNxURbmkAm6jNABup\n6tQAFqhupNtu59qUnZFwV5JHnWsHdIx96w5lz15rzT2uhRmt85xWbcxMnUGmZlB0bdxmrNvFIcfM\n350mWjbs7YkDJY/jW5ZWW4jikWkdNp9mqYJFaJdEHHakUULu/VB1rLn1Ld/FgetMGYd/qWSQmSa0\n/AemS32pfa7piLeLkg9z6UmQtz0W7uQ2cZx0A9BVzR7cAea6j2rPqX0L99KRat5A6Dk1wOoKZ52a\nYfMORTYRLujiGWEq6/NWza2yKQVHNdOHerRy4laJo6TTnbbtb8KuM3Fdh5z3OJjbmpt3FaMxAtUZ\nagBN1GaQBzTwaAAms3VbjERUGsa07RsdeFpuUuY4jUjljWTKK4j02RE4IpJYFk6imQkVl0xWarsO\nmAEcUi0bNnZBR0rWtoguMCkUi21wI161mXuocEKaYXMS4u+pY/hVCSWSY4HT0pEmlouiSahdpEBl\nmOceleiwWcNjClvHgJH97Hc1EmVFFi3Czy7mwIl/WtJbjP7uLgd/apQ2VNVvtsBhiPzdK5S4nAuR\nnqOCaTGi9pcytPlU+XpmumtWII44rah8ZjiNIXRuWeNvvViQ/LXpJWPJbu7nCRvVkNxVsxBmqJmo\nEPiXca0YLMuOlJsuKuPlsSi5IrNuG8s4HWs5VEkbwoOTKsk+FJY4rC1K53k1xTk5O7PSpwVNWRzt\n4cms+WpKICtSLTETQj5q0YeBSGiys23pUguGxQMq3E59ayrm4x3yaAKiRtO2WPHcmhruKFxFajzZ\nScA44qRHoXhuMaLpxaUg6hcDLMf4F9KlhuDeXGASIl+8azZslYma68y48m1+7nFW5rtbRNhb5z1p\niMKbUg0zuW4A4rPgb7VdKXOMmpA7HRbMS7nUYiUda0lkQOBngVrS+JGdbWLRt2bAx5BqeQ/LXpnj\nPQ4GJ+ashuK0MhWaoWcA0AaOmASMK7jRNPWYBmHyiuepO2x10qfcv6vYxCzYqoGK4HVYVTJrmb5l\nc6oaM5TUJ8EgGsG4kLNUHT0M64OaqMMikSRsuKbnFMRLG3zVehOaGNE445NNlnVFpDMu6uie9Vo1\n8z5mOAOST2pDK91cNN+5tsrH3PrW54a06KxT7fdrlh/q1Pc+tJ6IUdZGvHPLezMcnBOWbsPap5r3\nylFtbdT1xUWNWzU0/Zbwlgfmx8zGsHWtRHmMqE59aAMyNifvHPc1f0gtPdqkY5JosJHeNci2tktY\neuPnNY+oXWZEVJNrZ9aun8SIq/CzodHuriIokhDIR1ronbKZr0o6o8ipoz//2Q==`;\n\n// data:image/jpeg;base64,\nexport const body = `\n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\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAa2p1UYo5adbz+xbxMlvqJ1OqjDHLXree0ejmzNrWm953tPmTPWbWneZ7yoy5YhjrXXTjH8s75N\nmtkyxt0VZM2/m175N1V03yTKubMLXVXybeYLLX2VXy7eam+b0bOg4VquJW+rry4/O9uyZOq3UjVm\n9r25axMzPaIdvhns1kzbZddM0p5Y47z8/R2+HcF03Doi1a8+Xzvbv+TotJnjDXkt+K8ODHp8cY8N\nIpSO0RCwF2YAAAAAAAAACvUZYw6fJkntWN3k8dfHz2vLucdz8mkjFE9bz1+UOZosX1UzPm0nqI/W\nMYo9FlcPNklfFGeH/NshLGun+Cz6PtHZtVZWlRLS+jxPkRpIn7rdoupHTdA5s6SI+7H6Mfo+32Y2\n+To3neSIiZ7A0IjPXpXLePlMotGW3272t85datKzHZjbTVnsDj+FG/2Y/RlGP4R+jo20u7H6N1Ql\no+H8I/REY957R+jpfReiK6eOYHLtj2tttH6KrY/6Y/R2c+kjeJiFVtLG24hxpw7/AHY/RRkw9O37\nO99Hrt1YX0tfOBLjcGp4XF8c+u8fs9c4dcVcGemSI61nd3IneN1orQAAAAAAAAAAAAABFqxes1tE\nTE9JiUgPKcX4RbRXnNgiZwWnrH4XPi28PdXpW9JraImsxtMS8pxXhF9DecuGJtgmf+1TWW2N/la1\nL7N7T5e3Vy6W3hsYcvLbqzbO9jvvCzvDR0+XeO7crO6FmGSvRThy/RtVXJ92elvk2rRvDUzU7pl4\nizsd2J3jeBpcNz+Lg5LT7+Pp+Xk3W7js5eAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADs0NTrN96Yp6edkW8Wzm6+LNTq4pvTHO9vOfRoWtt\n1mes95YWvs1s2fZldddOczLPLn2ju0MmebT3YZc2/mpm3qqllN1drsbZIhr3yzvtHf4AsvlYYseb\nV5Yx4KTe0+UQ6nDvZ3UazbJqd8OKeu33peq0eh0+hxcmnxxWPOfOfm0mP+steT/ji8N9mKY9suum\nL37+HHaPm9DSlaVitKxWsdohI0Y22gAgAAAAAAAAAABXnyRhw3yT92Nwef4xm8bVzET0rPJH5d12\n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\nAOZE/OsPS29nuH27YrV+VpeV9pdPXhOtw49NG9Mld55+vXcTPd42I47qo7xSfyWV9oM8d8VJ/VxM\nd8l46xWF9cV7en6o/qLfxp2I9ob+eCv/AHMo9op89P8A/wBORGmyT5R+qfo2X8P7n9Q/jTsx7RR5\n6ef+4/8AuHftg/8A6cWcOSO9J/WEbWr3pY7Efzp2Lcfv5YK/9zWy8d1E/ZpSv5Oba1/+Hb9lc+LP\nbFt87I7E/wAabWbiurvEx4nL/pjZzc2bJkn372t85ZXx55/BX85lucC0vPxnTxlnnjm32mOiZqUu\nLJ2p4TwnVavNWaYbRTfre0bQ99pcH0bT0xb78vmtiIiNojaErMwAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAHnfarF7umzRHaZrLjYrdIen9ocPi8JyTt1xzF4eUw23rCm3R4r6bMy\nwt6kdTaWLdjswmNoZontsCm0K5XWjopnuDC0dGpqG5bs08/daKV672MjbSaif6oh6Z5f2LtvptRX\n0tEvUN3Jfo8f7cYve0eX4zV7B5z20xc/C8eSPuZIRficfXlcPaG7ino08HWIbePpLF2NuiyOyrHK\n3fZFSwuovHVfaVF4QK5YWTM9UT0EKry6Ps1Tn4zjn8NZn9nOtLseydObiWW34cf918fWfk+PYANn\nKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAq1WKM+ly4p+/WYeBxTNd6zG0xO0\nvobw3FcP0bi2em20Tbmj5Srr418V9sa2Z7qKyzi07MXUylhaU7yjqhLCeiq3ddaFNxFYW7NLNG8t\nzya+WO6Va9J7FW66mvwidnrXiPY3Ny8RyUn71Jj9Ht3RPjk19HK9pMHj8D1ER3rHN+jqqtTjjNps\nuOe16zAifXzfTz7kNyndpYazS9qT0mszDdoxrsi6m8LazMq6zDOsq1ZEyrt1WWlXaUCqyq0rbKbi\nFdp6PReyFd8uqv8ACsfy83aXrPZHHto89/xX2/SP/dpj6y8vx6EBq5gAAAAAAAAAAAAAAAAAAAAA\n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\nNO67NbkhzNVnmInqzaOZrL93JyZeV0M1++7S02jvxDWxhxx033tPpC8Z6rrezWjmZyazJG2/u03h\n2vFibTHoqvamiwVwY+nLGzV0+SZ1Mx8G0/45tOhzJ5lXMc3UVXRdlF1HP+iYsDPLPPy49/tz1+Te\npSIr0ho6ak5Ms5J8o2q6NImOrHV7XX488ypzTtHXo0s9t6zG7c1G1qz6ubeZiZ3UatXJG3yauSO7\ncvMTEx5tPLb3prPRMVr0HB8vicNxf0+7+kt+LOJwTJyY/Bnz3tH93X36N58cWvq6LSyiyndMSlC7\nmZcymLJiwLosmJVRLKLAtiU7q4lMSCzc3YxJuDMRuAlKAEgAAAlAkAAAAAABKAEgAAAAAJAAAAAA\nAAAAAAAEgAAAAAAAAAAAAAkAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAhIAAACAAAASgAAAAAAEAAAA\nhGzJAImGMwzQDDZjNVuyNgUTVhNGxysZqDVmiu1G5NN2M4waM0+DCaN2cbGcQNGaMZq3JxMJxA1J\nqx2bU4kU09slorWNwa20z02RXHbJbl26QvtFovbHWkxEdJt5y2MOHlr2U1W3jx+1hiw8vSO63lmI\nXRTaEWmtY6snRHO1VpmJ+DjavpSZl2s8b7y4HFcnh0n0gha5ebJN55KRM2mdoiPN6fh+kpwXh0Wy\nRHj5Otp/s5Ps1p62y31+em9aTMYt/OfVfxTiPjZ52naI7fBrI5t66xz5+a1rW7yx0eSL6iZjtEOX\nqNbSletom3lENjh2fbHzbbWt3iVozruc+5ztWubf4M4ybpQ2Oboyrva0Vjza8WdDR4OkXt3n9ldX\nkaePP9VtYqctYhdvt5oivTeCZ2YOxXk6ubqMfV0b9mrljfqlFcq88k7z2U5axeItDa1OPessuC8P\nya7XRWYnwqdbT/ZMilvIu4dpslNdixXja8Y5tt85djZdbDWnGOesRtXFtuw6T27No5Kx2OrKYQlC\nExKJgBnEpiyvdlEgsizKLKollFgWxLKJVRLKJBbEp3VxLKJBnuMWQJEbpBIAAAJAAAABIAAAAAAA\nlAJAAAAAAAAAAAAAASAAAAAAAAAAAAAJAAAABAJABAlAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAA\nAAABAJQAAAAgAABAAI2EoBGyJhkgGPKxmqxAKpownHC+YRMdN5BrTj67R3bOn01o7p01Iv71u89o\n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\n2Q==`;\n", "let instance = 0;\nlet CSScreated = false;\n\nlet theme = {\n background: 'darkslategray',\n hover: 'lightgray',\n itemBackground: 'black',\n itemColor: 'white',\n buttonBackground: 'lightblue',\n buttonHover: 'lightgreen',\n checkboxOn: 'lightgreen',\n checkboxOff: 'lightcoral',\n rangeBackground: 'lightblue',\n rangeLabel: 'white',\n chartColor: 'lightblue',\n};\n\nfunction createCSS() {\n if (CSScreated) return;\n const css = `\n :root { --rounded: 0.1rem; }\n .menu { position: absolute; top: 0rem; right: 0; width: max-content; padding: 0 0.2rem 0 0.2rem; line-height: 1.8rem; z-index: 10;\n box-shadow: 0 0 8px dimgrey; background: ${theme.background}; border-radius: var(--rounded); border-color: black; border-style: solid; border-width: thin; }\n\n .menu:hover { box-shadow: 0 0 8px ${theme.hover}; }\n .menu-container { display: block; max-height: 100vh; }\n .menu-container-fadeout { max-height: 0; overflow: hidden; transition: max-height, 0.5s ease; }\n .menu-container-fadein { max-height: 100vh; overflow: hidden; transition: max-height, 0.5s ease; }\n .menu-item { display: flex; white-space: nowrap; padding: 0.2rem; cursor: default; width: 100%; }\n .menu-title { cursor: pointer; }\n .menu-hr { margin: 0.2rem; border: 1px solid rgba(0, 0, 0, 0.5) }\n .menu-label { padding: 0; font-weight: 800; }\n\n .menu-list { margin-right: 0.8rem; }\n select:focus { outline: none; }\n .menu-list-item { background: ${theme.itemBackground}; color: ${theme.itemColor}; border: none; padding: 0.2rem; font-family: inherit;\n font-variant: inherit; border-radius: var(--rounded); font-weight: 800; }\n\n .menu-chart-title { padding: 0; font-size: 0.8rem; font-weight: 800; align-items: center}\n .menu-chart-canvas { background: transparent; margin: 0.2rem 0 0.2rem 0.6rem; }\n \n .menu-button { border: 0; background: ${theme.buttonBackground}; width: -webkit-fill-available; padding: 8px; margin: 8px; cursor: pointer; box-shadow: 4px 4px 4px 0 dimgrey;\n border-radius: var(--rounded); justify-content: center; font-family: inherit; font-variant: inherit; font-size: 1rem; font-weight: 800; }\n .menu-button:hover { background: ${theme.buttonHover}; box-shadow: 4px 4px 4px 0 black; }\n .menu-button:focus { outline: none; }\n\n .menu-checkbox { width: 2.8rem; height: 1rem; background: ${theme.itemBackground}; margin: 0.5rem 0.5rem 0 0; position: relative; border-radius: var(--rounded); }\n .menu-checkbox:after { content: 'OFF'; color: ${theme.checkboxOff}; position: absolute; right: 0.2rem; top: -0.4rem; font-weight: 800; font-size: 0.5rem; }\n .menu-checkbox:before { content: 'ON'; color: ${theme.checkboxOn}; position: absolute; left: 0.3rem; top: -0.4rem; font-weight: 800; font-size: 0.5rem; }\n .menu-checkbox-label { width: 1.3rem; height: 0.8rem; cursor: pointer; position: absolute; top: 0.1rem; left: 0.1rem; z-index: 1; background: ${theme.checkboxOff};\n border-radius: var(--rounded); transition: left 0.6s ease; }\n\n input[type=checkbox] { visibility: hidden; }\n input[type=checkbox]:checked + label { left: 1.4rem; background: ${theme.checkboxOn}; }\n\n .menu-range { margin: 0.2rem 0.5rem 0 0; width: 3.5rem; background: transparent; color: ${theme.rangeBackground}; }\n .menu-range:before { color: ${theme.rangeLabel}; margin: 0 0.4rem 0 0; font-weight: 800; font-size: 0.6rem; position: relative; top: 0.3rem; content: attr(value); }\n\n input[type=range] { -webkit-appearance: none; }\n input[type=range]::-webkit-slider-runnable-track { width: 100%; height: 1rem; cursor: pointer; background: ${theme.itemBackground}; border-radius: var(--rounded); border: 1px; }\n input[type=range]::-moz-range-track { width: 100%; height: 1rem; cursor: pointer; background: ${theme.itemBackground}; border-radius: var(--rounded); border: 1px; }\n input[type=range]::-webkit-slider-thumb { border: 1px solid #000000; margin-top: 0.05rem; height: 0.9rem; width: 1rem; border-radius: var(--rounded); background: ${theme.rangeBackground}; cursor: pointer; -webkit-appearance: none; }\n input[type=range]::-moz-range-thumb { border: 1px solid #000000; margin-top: 0.05rem; height: 0.9rem; width: 1rem; border-radius: var(--rounded); background: ${theme.rangeBackground}; cursor: pointer; -webkit-appearance: none; }\n\n .svg-background { fill:darkslategrey; cursor:pointer; opacity: 0.6; }\n .svg-foreground { fill:white; cursor:pointer; opacity: 0.8; }\n `;\n const el = document.createElement('style');\n el.innerHTML = css;\n document.getElementsByTagName('head')[0].appendChild(el);\n CSScreated = true;\n}\n\nclass Menu {\n constructor(parent, title, position, userTheme) {\n if (userTheme) theme = { ...theme, ...userTheme };\n createCSS();\n this.createMenu(parent, title, position);\n this.id = 0;\n this.instance = instance;\n instance++;\n this._maxFPS = 0;\n this.hidden = 0;\n }\n\n createMenu(parent, title = '', position = { top: null, left: null, bottom: null, right: null }) {\n this.menu = document.createElement('div');\n this.menu.id = `menu-${instance}`;\n this.menu.className = 'menu';\n if (position) {\n if (position.top) this.menu.style.top = position.top;\n if (position.bottom) this.menu.style.bottom = position.bottom;\n if (position.left) this.menu.style.left = position.left;\n if (position.right) this.menu.style.right = position.right;\n }\n\n this.container = document.createElement('div');\n this.container.id = `menu-container-${instance}`;\n this.container.className = 'menu-container menu-container-fadein';\n\n // set menu title with pulldown arrow\n const elTitle = document.createElement('div');\n elTitle.className = 'menu-title';\n elTitle.id = `menu-title-${instance}`;\n const svg = `\n \n \n `;\n if (title) elTitle.innerHTML = `${title}${svg}`;\n this.menu.appendChild(elTitle);\n elTitle.addEventListener('click', () => {\n this.container.classList.toggle('menu-container-fadeout');\n this.container.classList.toggle('menu-container-fadein');\n this.menu.style.borderStyle = this.container.classList.contains('menu-container-fadeout') ? 'none' : 'solid';\n });\n\n this.menu.appendChild(this.container);\n if (typeof parent === 'object') parent.appendChild(this.menu);\n else document.getElementById(parent).appendChild(this.menu);\n }\n\n get newID() {\n this.id++;\n return `menu-${this.instance}-${this.id}`;\n }\n\n get ID() {\n return `menu-${this.instance}-${this.id}`;\n }\n\n get width() {\n return this.menu.offsetWidth;\n }\n\n get height() {\n return this.menu.offsetHeight;\n }\n\n hide() {\n if (this.container.classList.contains('menu-container-fadein')) {\n this.container.classList.toggle('menu-container-fadeout');\n this.container.classList.toggle('menu-container-fadein');\n }\n }\n\n visible() {\n return (this.container.classList.contains('menu-container-fadein'));\n }\n\n toggle(evt) {\n this.container.classList.toggle('menu-container-fadeout');\n this.container.classList.toggle('menu-container-fadein');\n if (this.container.classList.contains('menu-container-fadein') && evt) {\n const x = evt.x || (evt.touches && evt.touches[0] ? evt.touches[0].pageX : null);\n // const y = evt.y || (evt.touches && evt.touches[0] ? evt.touches[0].pageY : null);\n if (x) this.menu.style.left = `${x - (this.menu.offsetWidth / 2)}px`;\n // if (y) this.menu.style.top = '5.5rem'; // `${evt.y + 55}px`;\n if (this.menu.offsetLeft < 0) this.menu.style.left = 0;\n if ((this.menu.offsetLeft + this.menu.offsetWidth) > window.innerWidth) {\n this.menu.style.left = null;\n this.menu.style.right = 0;\n }\n this.menu.style.borderStyle = 'solid';\n } else {\n this.menu.style.borderStyle = 'none';\n }\n }\n\n addTitle(title) {\n const el = document.createElement('div');\n el.className = 'menu-title';\n el.id = this.newID;\n el.innerHTML = title;\n this.menu.appendChild(el);\n el.addEventListener('click', () => {\n this.hidden = !this.hidden;\n const all = document.getElementsByClassName('menu');\n for (const item of all) {\n item.style.display = this.hidden ? 'none' : 'block';\n }\n });\n return el;\n }\n\n addLabel(title) {\n const el = document.createElement('div');\n el.className = 'menu-item menu-label';\n el.id = this.newID;\n el.innerHTML = title;\n this.container.appendChild(el);\n return el;\n }\n\n addBool(title, object, variable, callback) {\n const el = document.createElement('div');\n el.className = 'menu-item';\n el.innerHTML = `
${title}`;\n this.container.appendChild(el);\n el.addEventListener('change', (evt) => {\n object[variable] = evt.target.checked;\n if (callback) callback(evt.target.checked);\n });\n return el;\n }\n\n async addList(title, items, selected, callback) {\n const el = document.createElement('div');\n el.className = 'menu-item';\n let options = '';\n for (const item of items) {\n const def = item === selected ? 'selected' : '';\n options += ``;\n }\n el.innerHTML = `
${title}`;\n el.style.fontFamily = document.body.style.fontFamily;\n el.style.fontSize = document.body.style.fontSize;\n el.style.fontVariant = document.body.style.fontVariant;\n this.container.appendChild(el);\n el.addEventListener('change', (evt) => {\n if (callback) callback(items[evt.target.selectedIndex]);\n });\n return el;\n }\n\n addRange(title, object, variable, min, max, step, callback) {\n const el = document.createElement('div');\n el.className = 'menu-item';\n el.innerHTML = `${title}`;\n this.container.appendChild(el);\n el.addEventListener('change', (evt) => {\n object[variable] = parseInt(evt.target.value) === parseFloat(evt.target.value) ? parseInt(evt.target.value) : parseFloat(evt.target.value);\n evt.target.setAttribute('value', evt.target.value);\n if (callback) callback(evt.target.value);\n });\n el.input = el.children[0];\n return el;\n }\n\n addHTML(html) {\n const el = document.createElement('div');\n el.className = 'menu-item';\n el.id = this.newID;\n if (html) el.innerHTML = html;\n this.container.appendChild(el);\n return el;\n }\n\n addButton(titleOn, titleOff, callback) {\n const el = document.createElement('button');\n el.className = 'menu-item menu-button';\n el.style.fontFamily = document.body.style.fontFamily;\n el.style.fontSize = document.body.style.fontSize;\n el.style.fontVariant = document.body.style.fontVariant;\n el.type = 'button';\n el.id = this.newID;\n el.innerText = titleOn;\n this.container.appendChild(el);\n el.addEventListener('click', () => {\n if (el.innerText === titleOn) el.innerText = titleOff;\n else el.innerText = titleOn;\n if (callback) callback(el.innerText !== titleOn);\n });\n return el;\n }\n\n addValue(title, val, suffix = '') {\n const el = document.createElement('div');\n el.className = 'menu-item';\n el.id = `menu-val-${title}`;\n el.innerText = `${title}: ${val}${suffix}`;\n this.container.appendChild(el);\n return el;\n }\n\n // eslint-disable-next-line class-methods-use-this\n updateValue(title, val, suffix = '') {\n const el = document.getElementById(`menu-val-${title}`);\n if (el) el.innerText = `${title}: ${val}${suffix}`;\n else this.addValue(title, val);\n }\n\n addChart(title, id, width = 150, height = 40, color) {\n if (color) theme.chartColor = color;\n const el = document.createElement('div');\n el.className = 'menu-item menu-chart-title';\n el.id = this.newID;\n el.innerHTML = `${title}`;\n this.container.appendChild(el);\n return el;\n }\n\n // eslint-disable-next-line class-methods-use-this\n async updateChart(id, values) {\n if (!values || (values.length === 0)) return;\n const canvas = document.getElementById(`menu-canvas-${id}`);\n if (!canvas) return;\n const ctx = canvas.getContext('2d');\n ctx.fillStyle = theme.background;\n ctx.fillRect(0, 0, canvas.width, canvas.height);\n const width = canvas.width / values.length;\n const max = 1 + Math.max(...values);\n const height = canvas.height / max;\n for (let i = 0; i < values.length; i++) {\n const gradient = ctx.createLinearGradient(0, (max - values[i]) * height, 0, 0);\n gradient.addColorStop(0.1, theme.chartColor);\n gradient.addColorStop(0.4, theme.background);\n ctx.fillStyle = gradient;\n ctx.fillRect(i * width, 0, width - 4, canvas.height);\n ctx.fillStyle = theme.background;\n ctx.font = `${width / 1.5}px \"Segoe UI\"`;\n ctx.fillText(Math.round(values[i]), i * width + 1, canvas.height - 1, width - 1);\n }\n }\n}\n\nexport default Menu;\n", "/* eslint-disable max-len */\n\n// based on: https://github.com/munrocket/gl-bench\n\nconst UICSS = `\n #gl-bench { position: absolute; right: 1rem; bottom: 1rem; z-index:1000; -webkit-user-select: none; -moz-user-select: none; user-select: none; }\n #gl-bench div { position: relative; display: block; margin: 4px; padding: 0 2px 0 2px; background: darkslategray; border-radius: 0.1rem; cursor: pointer; opacity: 0.9; }\n #gl-bench svg { height: 60px; margin: 0 0px 0px 4px; }\n #gl-bench text { font-size: 16px; font-family: 'Lato', 'Segoe UI'; dominant-baseline: middle; text-anchor: middle; }\n #gl-bench .gl-mem { font-size: 12px; fill: white; }\n #gl-bench .gl-fps { font-size: 13px; fill: white; }\n #gl-bench line { stroke-width: 5; stroke: white; stroke-linecap: round; }\n #gl-bench polyline { fill: none; stroke: white; stroke-linecap: round; stroke-linejoin: round; stroke-width: 3.5; }\n #gl-bench rect { fill: black; }\n #gl-bench .opacity { stroke: black; }\n `;\n\nconst UISVG = `\n
\n \n 00 FPS\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n `;\n\nclass GLBench {\n /** GLBench constructor\n * @param { WebGLRenderingContext | WebGL2RenderingContext } gl context\n * @param { Object | undefined } settings additional settings\n */\n constructor(gl, settings = {}) {\n this.css = UICSS;\n this.svg = UISVG;\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n this.paramLogger = () => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n this.chartLogger = () => {};\n this.chartLen = 20;\n this.chartHz = 20;\n\n this.names = [];\n this.cpuAccums = [];\n this.gpuAccums = [];\n this.activeAccums = [];\n this.chart = new Array(this.chartLen);\n this.now = () => ((performance && performance.now) ? performance.now() : Date.now());\n this.updateUI = () => {\n [].forEach.call(this.nodes['gl-gpu-svg'], (node) => node.style.display = this.trackGPU ? 'inline' : 'none');\n };\n\n Object.assign(this, settings);\n this.detected = 0;\n this.finished = [];\n this.isFramebuffer = 0;\n this.frameId = 0;\n\n // 120hz device detection\n let rafId; let n = 0; let\n t0;\n const loop = (t) => {\n if (++n < 20) {\n rafId = requestAnimationFrame(loop);\n } else {\n this.detected = Math.ceil(1e3 * n / (t - t0) / 70);\n cancelAnimationFrame(rafId);\n }\n if (!t0) t0 = t;\n };\n requestAnimationFrame(loop);\n\n // attach gpu profilers\n if (gl) {\n const glFinish = async (t, activeAccums) => Promise.resolve(setTimeout(() => {\n gl.getError();\n const dt = this.now() - t;\n activeAccums.forEach((active, i) => {\n if (active) this.gpuAccums[i] += dt;\n });\n }, 0));\n\n const addProfiler = (fn, self, target) => {\n const t = self.now();\n // eslint-disable-next-line prefer-rest-params\n fn.apply(target, arguments);\n if (self.trackGPU) self.finished.push(glFinish(t, self.activeAccums.slice(0)));\n };\n\n /* ['drawArrays', 'drawElements', 'drawArraysInstanced', 'drawBuffers', 'drawElementsInstanced', 'drawRangeElements'].forEach((fn) => {\n if (gl[fn]) {\n gl[fn] = addProfiler(gl[fn], this, gl);\n }\n });\n */\n const fn = 'drawElements';\n if (gl[fn]) {\n gl[fn] = addProfiler(gl[fn], this, gl);\n } else {\n // eslint-disable-next-line no-console\n console.log('bench: cannot attach to webgl function');\n }\n\n /*\n gl.getExtension = ((fn, self) => {\n // eslint-disable-next-line prefer-rest-params\n const ext = fn.apply(gl, arguments);\n if (ext) {\n ['drawElementsInstancedANGLE', 'drawBuffersWEBGL'].forEach((fn2) => {\n if (ext[fn2]) {\n ext[fn2] = addProfiler(ext[fn2], self, ext);\n }\n });\n }\n return ext;\n })(gl.getExtension, this);\n */\n }\n\n // init ui and ui loggers\n if (!this.withoutUI) {\n if (!this.dom) this.dom = document.body;\n const elm = document.createElement('div');\n elm.id = 'gl-bench';\n this.dom.appendChild(elm);\n this.dom.insertAdjacentHTML('afterbegin', '');\n this.dom = elm;\n this.dom.addEventListener('click', () => {\n this.trackGPU = !this.trackGPU;\n this.updateUI();\n });\n\n this.paramLogger = ((logger, dom, names) => {\n const classes = ['gl-cpu', 'gl-gpu', 'gl-mem', 'gl-fps', 'gl-gpu-svg', 'gl-chart'];\n const nodes = { ...classes };\n classes.forEach((c) => nodes[c] = dom.getElementsByClassName(c));\n this.nodes = nodes;\n return (i, cpu, gpu, mem, fps, totalTime, frameId) => {\n nodes['gl-cpu'][i].style.strokeDasharray = (cpu * 0.27).toFixed(0) + ' 100';\n nodes['gl-gpu'][i].style.strokeDasharray = (gpu * 0.27).toFixed(0) + ' 100';\n // eslint-disable-next-line no-nested-ternary\n nodes['gl-mem'][i].innerHTML = names[i] ? names[i] : (mem ? 'mem: ' + mem.toFixed(0) + 'mb' : '');\n nodes['gl-fps'][i].innerHTML = 'FPS: ' + fps.toFixed(1);\n logger(names[i], cpu, gpu, mem, fps, totalTime, frameId);\n };\n })(this.paramLogger, this.dom, this.names);\n\n this.chartLogger = ((logger, dom) => {\n const nodes = { 'gl-chart': dom.getElementsByClassName('gl-chart') };\n return (i, chart, circularId) => {\n let points = '';\n const len = chart.length;\n for (let j = 0; j < len; j++) {\n const id = (circularId + j + 1) % len;\n if (chart[id] !== undefined) points = points + ' ' + (60 * j / (len - 1)).toFixed(1) + ',' + (45 - chart[id] * 0.5 / this.detected).toFixed(1);\n }\n nodes['gl-chart'][i].setAttribute('points', points);\n logger(this.names[i], chart, circularId);\n };\n })(this.chartLogger, this.dom);\n }\n }\n\n /**\n * Explicit UI add\n * @param { string | undefined } name\n */\n addUI(name) {\n if (this.names.indexOf(name) === -1) {\n this.names.push(name);\n if (this.dom) {\n this.dom.insertAdjacentHTML('beforeend', this.svg);\n this.updateUI();\n }\n this.cpuAccums.push(0);\n this.gpuAccums.push(0);\n this.activeAccums.push(false);\n }\n }\n\n /**\n * Increase frameID\n * @param { number | undefined } now\n */\n nextFrame(now) {\n this.frameId++;\n const t = now || this.now();\n\n // params\n if (this.frameId <= 1) {\n this.paramFrame = this.frameId;\n this.paramTime = t;\n } else {\n const duration = t - this.paramTime;\n if (duration >= 1e3) {\n const frameCount = this.frameId - this.paramFrame;\n const fps = frameCount / duration * 1e3;\n for (let i = 0; i < this.names.length; i++) {\n const cpu = this.cpuAccums[i] / duration * 100;\n const gpu = this.gpuAccums[i] / duration * 100;\n const mem = (performance && performance.memory) ? performance.memory.usedJSHeapSize / (1 << 20) : 0;\n this.paramLogger(i, cpu, gpu, mem, fps, duration, frameCount);\n this.cpuAccums[i] = 0;\n Promise.all(this.finished).then(() => {\n this.gpuAccums[i] = 0;\n this.finished = [];\n });\n }\n this.paramFrame = this.frameId;\n this.paramTime = t;\n }\n }\n\n // chart\n if (!this.detected || !this.chartFrame) {\n this.chartFrame = this.frameId;\n this.chartTime = t;\n this.circularId = 0;\n } else {\n const timespan = t - this.chartTime;\n let hz = this.chartHz * timespan / 1e3;\n while (--hz > 0 && this.detected) {\n const frameCount = this.frameId - this.chartFrame;\n const fps = frameCount / timespan * 1e3;\n this.chart[this.circularId % this.chartLen] = fps;\n for (let i = 0; i < this.names.length; i++) this.chartLogger(i, this.chart, this.circularId);\n this.circularId++;\n this.chartFrame = this.frameId;\n this.chartTime = t;\n }\n }\n }\n\n /**\n * Begin named measurement\n * @param { string | undefined } name\n */\n begin(name) {\n this.updateAccums(name);\n }\n\n /**\n * End named measure\n * @param { string | undefined } name\n */\n end(name) {\n this.updateAccums(name);\n }\n\n updateAccums(name) {\n let nameId = this.names.indexOf(name);\n if (nameId === -1) {\n nameId = this.names.length;\n this.addUI(name);\n }\n\n const t = this.now();\n const dt = t - this.t0;\n for (let i = 0; i < nameId + 1; i++) {\n if (this.activeAccums[i]) this.cpuAccums[i] += dt;\n }\n this.activeAccums[nameId] = !this.activeAccums[nameId];\n this.t0 = t;\n }\n}\n\nexport default GLBench;\n", "// import Human from '../dist/human.esm.js'; // equivalent of @vladmandic/human\nimport Human from '../src/human';\nimport Menu from './menu.js';\nimport GLBench from './gl-bench.js';\n\nconst userConfig = { backend: 'webgl' }; // add any user configuration overrides\n\n/*\nconst userConfig = {\n backend: 'wasm',\n async: false,\n warmup: 'full',\n videoOptimized: true,\n filter: { enabled: true },\n face: { enabled: true, mesh: { enabled: true }, iris: { enabled: false }, age: { enabled: false }, gender: { enabled: false }, emotion: { enabled: false }, embedding: { enabled: false } },\n hand: { enabled: false },\n gesture: { enabled: false },\n body: { enabled: false, modelPath: '../models/blazepose.json' },\n object: { enabled: false },\n};\n*/\n\nconst human = new Human(userConfig);\n\n// ui options\nconst ui = {\n baseBackground: 'rgba(50, 50, 50, 1)', // 'grey'\n crop: true, // video mode crop to size or leave full frame\n columns: 2, // when processing sample images create this many columns\n facing: true, // camera facing front or back\n useWorker: false, // use web workers for processing\n worker: 'worker.js',\n samples: ['../assets/sample6.jpg', '../assets/sample1.jpg', '../assets/sample4.jpg', '../assets/sample5.jpg', '../assets/sample3.jpg', '../assets/sample2.jpg'],\n compare: '../assets/sample-me.jpg',\n console: true, // log messages to browser console\n maxFPSframes: 10, // keep fps history for how many frames\n modelsPreload: true, // preload human models on startup\n busy: false, // internal camera busy flag\n menuWidth: 0, // internal\n menuHeight: 0, // internal\n camera: {}, // internal, holds details of webcam details\n detectFPS: [], // internal, holds fps values for detection performance\n drawFPS: [], // internal, holds fps values for draw performance\n buffered: false, // experimental, should output be buffered between frames\n drawWarmup: false, // debug only, should warmup image processing be displayed on startup\n drawThread: null, // internl, perform draw operations in a separate thread\n detectThread: null, // internl, perform detect operations in a separate thread\n framesDraw: 0, // internal, statistics on frames drawn\n framesDetect: 0, // internal, statistics on frames detected\n bench: true, // show gl fps benchmark window\n lastFrame: 0, // time of last frame processing\n};\n\n// global variables\nconst menu = {};\nlet worker;\nlet bench;\nlet lastDetectedResult = {};\n\n// helper function: translates json to human readable string\nfunction str(...msg) {\n if (!Array.isArray(msg)) return msg;\n let line = '';\n for (const entry of msg) {\n if (typeof entry === 'object') line += JSON.stringify(entry).replace(/{|}|\"|\\[|\\]/g, '').replace(/,/g, ', ');\n else line += entry;\n }\n return line;\n}\n\n// helper function: wrapper around console output\nfunction log(...msg) {\n const dt = new Date();\n const ts = `${dt.getHours().toString().padStart(2, '0')}:${dt.getMinutes().toString().padStart(2, '0')}:${dt.getSeconds().toString().padStart(2, '0')}.${dt.getMilliseconds().toString().padStart(3, '0')}`;\n // eslint-disable-next-line no-console\n if (ui.console) console.log(ts, ...msg);\n}\n\nfunction status(msg) {\n // eslint-disable-next-line no-console\n const div = document.getElementById('status');\n if (div) div.innerText = msg;\n}\n\nconst compare = { enabled: false, original: null };\nasync function calcSimmilariry(result) {\n document.getElementById('compare-container').style.display = compare.enabled ? 'block' : 'none';\n if (!compare.enabled) return;\n if (!(result?.face?.length > 0) || (result?.face[0]?.embedding?.length <= 64)) return;\n if (!compare.original) {\n compare.original = result;\n log('setting face compare baseline:', result.face[0]);\n if (result.face[0].tensor) {\n const enhanced = human.enhance(result.face[0]);\n if (enhanced) {\n const c = document.getElementById('orig');\n const squeeze = enhanced.squeeze();\n const norm = squeeze.div(255);\n human.tf.browser.toPixels(norm, c);\n enhanced.dispose();\n squeeze.dispose();\n norm.dispose();\n }\n } else {\n document.getElementById('compare-canvas').getContext('2d').drawImage(compare.original.canvas, 0, 0, 200, 200);\n }\n }\n const similarity = human.similarity(compare.original?.face[0]?.embedding, result?.face[0]?.embedding);\n document.getElementById('similarity').innerText = `similarity: ${Math.trunc(1000 * similarity) / 10}%`;\n}\n\n// draws processed results and starts processing of a next frame\nlet lastDraw = performance.now();\nasync function drawResults(input) {\n const result = lastDetectedResult;\n const canvas = document.getElementById('canvas');\n\n // update draw fps data\n ui.drawFPS.push(1000 / (performance.now() - lastDraw));\n if (ui.drawFPS.length > ui.maxFPSframes) ui.drawFPS.shift();\n lastDraw = performance.now();\n\n // draw fps chart\n await menu.process.updateChart('FPS', ui.detectFPS);\n\n // get updated canvas\n if (ui.buffered || !result.canvas) {\n const image = await human.image(input);\n result.canvas = image.canvas;\n human.tf.dispose(image.tensor);\n }\n\n // draw image from video\n const ctx = canvas.getContext('2d');\n ctx.fillStyle = ui.baseBackground;\n ctx.fillRect(0, 0, canvas.width, canvas.height);\n if (result.canvas) {\n if (result.canvas.width !== canvas.width) canvas.width = result.canvas.width;\n if (result.canvas.height !== canvas.height) canvas.height = result.canvas.height;\n ctx.drawImage(result.canvas, 0, 0, result.canvas.width, result.canvas.height, 0, 0, result.canvas.width, result.canvas.height);\n } else {\n ctx.drawImage(input, 0, 0, input.width, input.height, 0, 0, canvas.width, canvas.height);\n }\n\n // draw all results\n human.draw.face(canvas, result.face);\n human.draw.body(canvas, result.body);\n human.draw.hand(canvas, result.hand);\n human.draw.object(canvas, result.object);\n human.draw.gesture(canvas, result.gesture);\n await calcSimmilariry(result);\n\n // update log\n const engine = human.tf.engine();\n const gpu = engine.backendInstance ? `gpu: ${(engine.backendInstance.numBytesInGPU ? engine.backendInstance.numBytesInGPU : 0).toLocaleString()} bytes` : '';\n const memory = `system: ${engine.state.numBytes.toLocaleString()} bytes ${gpu} | tensors: ${engine.state.numTensors.toLocaleString()}`;\n const processing = result.canvas ? `processing: ${result.canvas.width} x ${result.canvas.height}` : '';\n const avgDetect = Math.trunc(10 * ui.detectFPS.reduce((a, b) => a + b, 0) / ui.detectFPS.length) / 10;\n const avgDraw = Math.trunc(10 * ui.drawFPS.reduce((a, b) => a + b, 0) / ui.drawFPS.length) / 10;\n const warning = (ui.detectFPS.length > 5) && (avgDetect < 5) ? 'warning: your performance is low: try switching to higher performance backend, lowering resolution or disabling some models' : '';\n document.getElementById('log').innerHTML = `\n video: ${ui.camera.name} | facing: ${ui.camera.facing} | screen: ${window.innerWidth} x ${window.innerHeight} camera: ${ui.camera.width} x ${ui.camera.height} ${processing}
\n backend: ${human.tf.getBackend()} | ${memory}
\n performance: ${str(result.performance)}ms FPS process:${avgDetect} refresh:${avgDraw}
\n ${warning}
\n `;\n\n ui.framesDraw++;\n ui.lastFrame = performance.now();\n // if buffered, immediate loop but limit frame rate although it's going to run slower as JS is singlethreaded\n if (ui.buffered) {\n ui.drawThread = requestAnimationFrame(() => drawResults(input, canvas));\n } else if (!ui.buffered && ui.drawThread) {\n log('stopping buffered refresh');\n cancelAnimationFrame(ui.drawThread);\n ui.drawThread = null;\n }\n}\n\n// setup webcam\nasync function setupCamera() {\n if (ui.busy) return null;\n ui.busy = true;\n const video = document.getElementById('video');\n const canvas = document.getElementById('canvas');\n const output = document.getElementById('log');\n const live = video.srcObject ? ((video.srcObject.getVideoTracks()[0].readyState === 'live') && (video.readyState > 2) && (!video.paused)) : false;\n let msg = '';\n status('setting up camera');\n // setup webcam. note that navigator.mediaDevices requires that page is accessed via https\n if (!navigator.mediaDevices) {\n msg = 'camera access not supported';\n output.innerText += `\\n${msg}`;\n log(msg);\n status(msg);\n ui.busy = false;\n return msg;\n }\n let stream;\n const constraints = {\n audio: false,\n video: { facingMode: ui.facing ? 'user' : 'environment', resizeMode: ui.crop ? 'crop-and-scale' : 'none' },\n };\n if (window.innerWidth > window.innerHeight) constraints.video.width = { ideal: window.innerWidth };\n else constraints.video.height = { ideal: (window.innerHeight - document.getElementById('menubar').offsetHeight) };\n try {\n stream = await navigator.mediaDevices.getUserMedia(constraints);\n } catch (err) {\n if (err.name === 'PermissionDeniedError' || err.name === 'NotAllowedError') msg = 'camera permission denied';\n else if (err.name === 'SourceUnavailableError') msg = 'camera not available';\n else msg = `camera error: ${err.message || err}`;\n output.innerText += `\\n${msg}`;\n status(msg);\n log('camera error:', err);\n ui.busy = false;\n return msg;\n }\n if (stream) video.srcObject = stream;\n else {\n ui.busy = false;\n return 'camera stream empty';\n }\n const track = stream.getVideoTracks()[0];\n const settings = track.getSettings();\n // log('camera constraints:', constraints, 'window:', { width: window.innerWidth, height: window.innerHeight }, 'settings:', settings, 'track:', track);\n ui.camera = { name: track.label?.toLowerCase(), width: settings.width, height: settings.height, facing: settings.facingMode === 'user' ? 'front' : 'back' };\n return new Promise((resolve) => {\n video.onloadeddata = async () => {\n video.width = video.videoWidth;\n video.height = video.videoHeight;\n canvas.width = video.width;\n canvas.height = video.height;\n canvas.style.width = canvas.width > canvas.height ? '100vw' : '';\n canvas.style.height = canvas.width > canvas.height ? '' : '100vh';\n ui.menuWidth.input.setAttribute('value', video.width);\n ui.menuHeight.input.setAttribute('value', video.height);\n // silly font resizing for paint-on-canvas since viewport can be zoomed\n if (live) video.play();\n // eslint-disable-next-line no-use-before-define\n if (live && !ui.detectThread) runHumanDetect(video, canvas);\n ui.busy = false;\n // do once more because onresize events can be delayed or skipped\n // if (video.width > window.innerWidth) await setupCamera();\n status('');\n resolve();\n };\n });\n}\n\nfunction initPerfMonitor() {\n if (!bench) {\n const gl = null;\n // cosnt gl = human.tf.engine().backend.gpgpu.gl;\n // if (!gl) log('bench cannot get tensorflow webgl context');\n bench = new GLBench(gl, {\n trackGPU: false, // this is really slow\n chartHz: 20,\n chartLen: 20,\n });\n bench.begin();\n }\n}\n\n// wrapper for worker.postmessage that creates worker if one does not exist\nfunction webWorker(input, image, canvas, timestamp) {\n if (!worker) {\n // create new webworker and add event handler only once\n log('creating worker thread');\n worker = new Worker(ui.worker, { type: 'module' });\n // after receiving message from webworker, parse&draw results and send new frame for processing\n worker.addEventListener('message', (msg) => {\n if (msg.data.result.performance && msg.data.result.performance.total) ui.detectFPS.push(1000 / msg.data.result.performance.total);\n if (ui.detectFPS.length > ui.maxFPSframes) ui.detectFPS.shift();\n if (ui.bench) {\n if (!bench) initPerfMonitor();\n bench.nextFrame(timestamp);\n }\n if (document.getElementById('gl-bench')) document.getElementById('gl-bench').style.display = ui.bench ? 'block' : 'none';\n lastDetectedResult = msg.data.result;\n ui.framesDetect++;\n if (!ui.drawThread) drawResults(input);\n // eslint-disable-next-line no-use-before-define\n ui.detectThread = requestAnimationFrame((now) => runHumanDetect(input, canvas, now));\n });\n }\n // pass image data as arraybuffer to worker by reference to avoid copy\n worker.postMessage({ image: image.data.buffer, width: canvas.width, height: canvas.height, userConfig }, [image.data.buffer]);\n}\n\n// main processing function when input is webcam, can use direct invocation or web worker\nfunction runHumanDetect(input, canvas, timestamp) {\n // if live video\n const live = input.srcObject && (input.srcObject.getVideoTracks()[0].readyState === 'live') && (input.readyState > 2) && (!input.paused);\n if (!live && input.srcObject) {\n // stop ui refresh\n if (ui.drawThread) cancelAnimationFrame(ui.drawThread);\n if (ui.detectThread) cancelAnimationFrame(ui.detectThread);\n ui.drawThread = null;\n ui.detectThread = null;\n // if we want to continue and camera not ready, retry in 0.5sec, else just give up\n if (input.paused) log('camera paused');\n else if ((input.srcObject.getVideoTracks()[0].readyState === 'live') && (input.readyState <= 2)) setTimeout(() => runHumanDetect(input, canvas), 500);\n else log(`camera not ready: track state: ${input.srcObject?.getVideoTracks()[0].readyState} stream state: ${input.readyState}`);\n clearTimeout(ui.drawThread);\n ui.drawThread = null;\n log('frame statistics: process:', ui.framesDetect, 'refresh:', ui.framesDraw);\n log('memory', human.tf.engine().memory());\n return;\n }\n status('');\n if (ui.useWorker) {\n // get image data from video as we cannot send html objects to webworker\n const offscreen = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(canvas.width, canvas.height) : document.createElement('canvas');\n offscreen.width = canvas.width;\n offscreen.height = canvas.height;\n const ctx = offscreen.getContext('2d');\n ctx.drawImage(input, 0, 0, input.width, input.height, 0, 0, canvas.width, canvas.height);\n const data = ctx.getImageData(0, 0, canvas.width, canvas.height);\n // perform detection in worker\n webWorker(input, data, canvas, userConfig, timestamp);\n } else {\n human.detect(input, userConfig).then((result) => {\n if (result.performance && result.performance.total) ui.detectFPS.push(1000 / result.performance.total);\n if (ui.detectFPS.length > ui.maxFPSframes) ui.detectFPS.shift();\n if (ui.bench) {\n if (!bench) initPerfMonitor();\n bench.nextFrame(timestamp);\n }\n if (document.getElementById('gl-bench')) document.getElementById('gl-bench').style.display = ui.bench ? 'block' : 'none';\n if (result.error) {\n log(result.error);\n document.getElementById('log').innerText += `\\nHuman error: ${result.error}`;\n } else {\n lastDetectedResult = result;\n if (!ui.drawThread) drawResults(input);\n ui.framesDetect++;\n ui.detectThread = requestAnimationFrame((now) => runHumanDetect(input, canvas, now));\n }\n });\n }\n}\n\n// main processing function when input is image, can use direct invocation or web worker\nasync function processImage(input) {\n return new Promise((resolve) => {\n const image = new Image();\n image.onload = async () => {\n log('processing image:', encodeURI(image.src));\n const canvas = document.getElementById('canvas');\n image.width = image.naturalWidth;\n image.height = image.naturalHeight;\n canvas.width = human.config.filter.width && human.config.filter.width > 0 ? human.config.filter.width : image.naturalWidth;\n canvas.height = human.config.filter.height && human.config.filter.height > 0 ? human.config.filter.height : image.naturalHeight;\n const result = await human.detect(image, userConfig);\n lastDetectedResult = result;\n await drawResults(image);\n const thumb = document.createElement('canvas');\n thumb.className = 'thumbnail';\n thumb.width = window.innerWidth / (ui.columns + 0.1);\n thumb.height = thumb.width * canvas.height / canvas.width;\n if (result.face && result.face.length > 0) {\n thumb.title = result.face.map((a, i) => `#${i} face: ${Math.trunc(100 * a.faceConfidence)}% box: ${Math.trunc(100 * a.boxConfidence)}% age: ${Math.trunc(a.age)} gender: ${Math.trunc(100 * a.genderConfidence)}% ${a.gender}`).join(' | ');\n } else {\n thumb.title = 'no face detected';\n }\n const ctx = thumb.getContext('2d');\n ctx.drawImage(canvas, 0, 0, canvas.width, canvas.height, 0, 0, thumb.width, thumb.height);\n document.getElementById('samples-container').appendChild(thumb);\n image.src = '';\n resolve(true);\n };\n image.src = input;\n });\n}\n\n// just initialize everything and call main function\nasync function detectVideo() {\n document.getElementById('samples-container').style.display = 'none';\n document.getElementById('canvas').style.display = 'block';\n const video = document.getElementById('video');\n const canvas = document.getElementById('canvas');\n if ((video.srcObject !== null) && !video.paused) {\n document.getElementById('play').style.display = 'block';\n document.getElementById('btnStart').className = 'button button-start';\n document.getElementById('btnStart').innerHTML = 'start
video';\n status('paused');\n video.pause();\n } else {\n const cameraError = await setupCamera();\n if (!cameraError) {\n document.getElementById('play').style.display = 'none';\n for (const m of Object.values(menu)) m.hide();\n status('');\n document.getElementById('btnStart').className = 'button button-stop';\n document.getElementById('btnStart').innerHTML = 'pause
video';\n await video.play();\n if (!ui.detectThread) runHumanDetect(video, canvas);\n } else {\n status(cameraError);\n }\n }\n}\n\n// just initialize everything and call main function\nasync function detectSampleImages() {\n userConfig.videoOptimized = false; // force disable video optimizations\n document.getElementById('play').style.display = 'none';\n document.getElementById('canvas').style.display = 'none';\n document.getElementById('samples-container').style.display = 'block';\n log('running detection of sample images');\n status('processing images');\n document.getElementById('samples-container').innerHTML = '';\n for (const m of Object.values(menu)) m.hide();\n for (const image of ui.samples) await processImage(image);\n status('');\n}\n\nfunction setupMenu() {\n let x = [];\n if (window.innerWidth > 800) {\n // initial position of menu items, later it's calculated based on mouse coordinates\n x = [`${document.getElementById('btnDisplay').offsetLeft - 50}px`, `${document.getElementById('btnImage').offsetLeft - 50}px`, `${document.getElementById('btnProcess').offsetLeft - 50}px`, `${document.getElementById('btnModel').offsetLeft - 50}px`];\n } else {\n // absolute minimum spacing for menus\n x = ['0rem', '11rem', '21.1rem', '33rem'];\n }\n\n menu.display = new Menu(document.body, '', { top: `${document.getElementById('menubar').offsetHeight}px`, left: x[0] });\n menu.display.addBool('perf monitor', ui, 'bench', (val) => ui.bench = val);\n menu.display.addBool('buffered output', ui, 'buffered', (val) => ui.buffered = val);\n menu.display.addBool('crop & scale', ui, 'crop', (val) => {\n ui.crop = val;\n setupCamera();\n });\n menu.display.addBool('camera facing', ui, 'facing', (val) => {\n ui.facing = val;\n setupCamera();\n });\n menu.display.addHTML('
');\n menu.display.addBool('use 3D depth', human.draw.drawOptions, 'useDepth');\n menu.display.addBool('draw with curves', human.draw.drawOptions, 'useCurves');\n menu.display.addBool('print labels', human.draw.drawOptions, 'drawLabels');\n menu.display.addBool('draw points', human.draw.drawOptions, 'drawPoints');\n menu.display.addBool('draw boxes', human.draw.drawOptions, 'drawBoxes');\n menu.display.addBool('draw polygons', human.draw.drawOptions, 'drawPolygons');\n menu.display.addBool('fill polygons', human.draw.drawOptions, 'fillPolygons');\n\n menu.image = new Menu(document.body, '', { top: `${document.getElementById('menubar').offsetHeight}px`, left: x[1] });\n menu.image.addBool('enabled', human.config.filter, 'enabled', (val) => human.config.filter.enabled = val);\n ui.menuWidth = menu.image.addRange('image width', human.config.filter, 'width', 0, 3840, 10, (val) => human.config.filter.width = parseInt(val));\n ui.menuHeight = menu.image.addRange('image height', human.config.filter, 'height', 0, 2160, 10, (val) => human.config.filter.height = parseInt(val));\n menu.image.addHTML('
');\n menu.image.addRange('brightness', human.config.filter, 'brightness', -1.0, 1.0, 0.05, (val) => human.config.filter.brightness = parseFloat(val));\n menu.image.addRange('contrast', human.config.filter, 'contrast', -1.0, 1.0, 0.05, (val) => human.config.filter.contrast = parseFloat(val));\n menu.image.addRange('sharpness', human.config.filter, 'sharpness', 0, 1.0, 0.05, (val) => human.config.filter.sharpness = parseFloat(val));\n menu.image.addRange('blur', human.config.filter, 'blur', 0, 20, 1, (val) => human.config.filter.blur = parseInt(val));\n menu.image.addRange('saturation', human.config.filter, 'saturation', -1.0, 1.0, 0.05, (val) => human.config.filter.saturation = parseFloat(val));\n menu.image.addRange('hue', human.config.filter, 'hue', 0, 360, 5, (val) => human.config.filter.hue = parseInt(val));\n menu.image.addRange('pixelate', human.config.filter, 'pixelate', 0, 32, 1, (val) => human.config.filter.pixelate = parseInt(val));\n menu.image.addHTML('
');\n menu.image.addBool('negative', human.config.filter, 'negative', (val) => human.config.filter.negative = val);\n menu.image.addBool('sepia', human.config.filter, 'sepia', (val) => human.config.filter.sepia = val);\n menu.image.addBool('vintage', human.config.filter, 'vintage', (val) => human.config.filter.vintage = val);\n menu.image.addBool('kodachrome', human.config.filter, 'kodachrome', (val) => human.config.filter.kodachrome = val);\n menu.image.addBool('technicolor', human.config.filter, 'technicolor', (val) => human.config.filter.technicolor = val);\n menu.image.addBool('polaroid', human.config.filter, 'polaroid', (val) => human.config.filter.polaroid = val);\n\n menu.process = new Menu(document.body, '', { top: `${document.getElementById('menubar').offsetHeight}px`, left: x[2] });\n menu.process.addList('backend', ['cpu', 'webgl', 'wasm', 'humangl'], human.config.backend, (val) => human.config.backend = val);\n menu.process.addBool('async operations', human.config, 'async', (val) => human.config.async = val);\n // menu.process.addBool('enable profiler', human.config, 'profile', (val) => human.config.profile = val);\n // menu.process.addBool('memory shield', human.config, 'deallocate', (val) => human.config.deallocate = val);\n menu.process.addBool('use web worker', ui, 'useWorker');\n menu.process.addHTML('
');\n menu.process.addLabel('model parameters');\n menu.process.addRange('max objects', human.config.face.detector, 'maxFaces', 1, 50, 1, (val) => {\n human.config.face.detector.maxFaces = parseInt(val);\n human.config.body.maxDetections = parseInt(val);\n human.config.hand.maxHands = parseInt(val);\n });\n menu.process.addRange('skip frames', human.config.face.detector, 'skipFrames', 0, 50, 1, (val) => {\n human.config.face.detector.skipFrames = parseInt(val);\n human.config.face.emotion.skipFrames = parseInt(val);\n human.config.face.age.skipFrames = parseInt(val);\n human.config.hand.skipFrames = parseInt(val);\n });\n menu.process.addRange('min confidence', human.config.face.detector, 'minConfidence', 0.0, 1.0, 0.05, (val) => {\n human.config.face.detector.minConfidence = parseFloat(val);\n human.config.face.gender.minConfidence = parseFloat(val);\n human.config.face.emotion.minConfidence = parseFloat(val);\n human.config.hand.minConfidence = parseFloat(val);\n });\n menu.process.addRange('score threshold', human.config.face.detector, 'scoreThreshold', 0.1, 1.0, 0.05, (val) => {\n human.config.face.detector.scoreThreshold = parseFloat(val);\n human.config.hand.scoreThreshold = parseFloat(val);\n human.config.body.scoreThreshold = parseFloat(val);\n });\n menu.process.addRange('overlap', human.config.face.detector, 'iouThreshold', 0.1, 1.0, 0.05, (val) => {\n human.config.face.detector.iouThreshold = parseFloat(val);\n human.config.hand.iouThreshold = parseFloat(val);\n });\n menu.process.addBool('detection rotation', human.config.face.detector, 'rotation', (val) => {\n human.config.face.detector.rotation = val;\n human.config.hand.rotation = val;\n });\n menu.process.addHTML('
');\n menu.process.addButton('process sample images', 'process images', () => detectSampleImages());\n menu.process.addHTML('
');\n menu.process.addChart('FPS', 'FPS');\n\n menu.models = new Menu(document.body, '', { top: `${document.getElementById('menubar').offsetHeight}px`, left: x[3] });\n menu.models.addBool('face detect', human.config.face, 'enabled', (val) => human.config.face.enabled = val);\n menu.models.addBool('face mesh', human.config.face.mesh, 'enabled', (val) => human.config.face.mesh.enabled = val);\n menu.models.addBool('face iris', human.config.face.iris, 'enabled', (val) => human.config.face.iris.enabled = val);\n menu.models.addBool('face description', human.config.face.description, 'enabled', (val) => human.config.face.age.description = val);\n // menu.models.addBool('face age', human.config.face.age, 'enabled', (val) => human.config.face.age.enabled = val);\n // menu.models.addBool('face gender', human.config.face.gender, 'enabled', (val) => human.config.face.gender.enabled = val);\n menu.models.addBool('face emotion', human.config.face.emotion, 'enabled', (val) => human.config.face.emotion.enabled = val);\n menu.models.addHTML('
');\n menu.models.addBool('body pose', human.config.body, 'enabled', (val) => human.config.body.enabled = val);\n menu.models.addBool('hand pose', human.config.hand, 'enabled', (val) => human.config.hand.enabled = val);\n menu.models.addHTML('
');\n menu.models.addBool('gestures', human.config.gesture, 'enabled', (val) => human.config.gesture.enabled = val);\n menu.models.addHTML('
');\n menu.models.addBool('object detection', human.config.object, 'enabled', (val) => human.config.object.enabled = val);\n menu.models.addHTML('
');\n menu.models.addBool('face compare', compare, 'enabled', (val) => {\n compare.enabled = val;\n compare.original = null;\n });\n\n document.getElementById('btnDisplay').addEventListener('click', (evt) => menu.display.toggle(evt));\n document.getElementById('btnImage').addEventListener('click', (evt) => menu.image.toggle(evt));\n document.getElementById('btnProcess').addEventListener('click', (evt) => menu.process.toggle(evt));\n document.getElementById('btnModel').addEventListener('click', (evt) => menu.models.toggle(evt));\n document.getElementById('btnStart').addEventListener('click', () => detectVideo());\n document.getElementById('play').addEventListener('click', () => detectVideo());\n}\n\nasync function drawWarmup(res) {\n const canvas = document.getElementById('canvas');\n canvas.width = res.canvas.width;\n canvas.height = res.canvas.height;\n const ctx = canvas.getContext('2d');\n ctx.drawImage(res.canvas, 0, 0, res.canvas.width, res.canvas.height, 0, 0, canvas.width, canvas.height);\n await human.draw.all(canvas, res);\n}\n\nasync function main() {\n log('demo starting ...');\n setupMenu();\n document.getElementById('log').innerText = `Human: version ${human.version}`;\n if (ui.modelsPreload && !ui.useWorker) {\n status('loading');\n await human.load(userConfig); // this is not required, just pre-loads all models\n const loaded = Object.keys(human.models).filter((a) => human.models[a]);\n log('demo loaded models:', loaded);\n }\n if (!ui.useWorker) {\n status('initializing');\n const res = await human.warmup(userConfig); // this is not required, just pre-warms all models for faster initial inference\n if (res && res.canvas && ui.drawWarmup) await drawWarmup(res);\n }\n status('human: ready');\n document.getElementById('loader').style.display = 'none';\n document.getElementById('play').style.display = 'block';\n log('demo ready...');\n}\n\nwindow.onload = main;\nwindow.onresize = setupCamera;\n"], + "mappings": "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AACnB,kBAAc,KAAK;AACnB,kBAAc,KAAK;AACnB,kBAAc,KAAK;;AAGrB,QAAM,SAAS,KAAK,CAAC,QAAQ,KAAK,SAAA,WAAS,OAAO,CAAC,MAAM;AAEzD,gBAAc,QAAQ,CAAA,MAAK,UAAQ,8BAA8B;AAEjE,SAAO;;AAGF,IAAM,2BAAyC;EACpD,YAAY;EACZ,aAAa;EACb,YAAY;;ACrFd;;;;;;;;;;;;;;;;AAiLA,IAAM,gBAAgC;EACpC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF,WAAW,gBAAgB,eAAe;AACxC,iBAAe;;AC/UjB;;;;;;;;;;;;;;;;ACAA,IAAA,qBAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;AAiBA,IAAM,WAAmD;AAEzD,IAAM,mBAA2C;EAC/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;;AAGF,IAAM,4BAAyC;EACpD,YAAY;EACZ,aAAa;EACb,YAAY;;AChHd;;;;;;;;;;;;;;;;AA6KA,IAAM,iBAAgC;EACpC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF,WAAW,gBAAgB,gBAAe;AACxC,iBAAe;;AC1UjB;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;AAkBA,IAAY;AAAZ,AAAA,UAAY,WAAQ;AAClB,YAAA,UAAA,aAAA,KAAA;AACA,YAAA,UAAA,WAAA,KAAA;AACA,YAAA,UAAA,UAAA,KAAA;AACA,YAAA,UAAA,YAAA,KAAA;AACA,YAAA,UAAA,eAAA,KAAA;GALU,YAAA,YAAQ;AASpB,IAAY;AAAZ,AAAA,UAAY,oBAAiB;AAC3B,qBAAA,mBAAA,YAAA,KAAA;AACA,qBAAA,mBAAA,UAAA,KAAA;AACA,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AS,OAAO,GAAG;AACjD,QAAM,WAAW,SAAS,OAAO,WAAW;AAC5C,WAAS,IAAI,GAAG,IAAI,UAAU,EAAE,GAAG;AACjC,iBAAa,WAAW,YAAY,IAAI;;AAE1C,eAAa,WAAW,YAAY,MAAK,SAAS,OAAO;AACzD,QAAM,YAAY,UAAU;AAC5B,SAAO,MAAM,YAAY,UAAU;;ACxDrC;;;;;;;;;;;;;;;;AAsBO,IAAM,sBAAkC;EAC7C,YAAY;EACZ,UAAU,CAAC,OAAc;AACvB,WAAO,CAAC,GAAG,MAAM,UAAU;;;ACzB/B;;;;;;;;;;;;;;;;AAwHA,IAAM,cAA4B;EAChC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF,WAAW,kBAAkB,aAAa;AACxC,mBAAiB;;ACpOnB,IAAA,8BAAA;;;;;;;ACAA;;;;;;;;;AAaA,IAAI;AAKE,oBAAiB;AACrB,MAAI,YAAY,MAAM;AACpB,eAAW,UAAU;;AAEvB,SAAO;;AAcH,2BAAyB;AAC7B,SAAO;;ACrCT;;;;;;;;;AAuBM,IAAA,iBAAA,cAA8B,MAAK;EACvC,YAAY,SAAgB;AAC1B,UAAM;AAEN,WAAO,eAAe,MAAM,eAAe;;;AAOzC,IAAA,eAAA,cAA4B,MAAK;EACrC,YAAY,SAAgB;AAC1B,UAAM;AAEN,WAAO,eAAe,MA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AAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,iBAAiB;AAAA,EAClB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,kBAAkB;AAAA,EACnB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,iBAAiB;AAAA,EAClB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,kBAAkB;AAAA,EACnB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,iBAAiB;AAAA,EAClB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,kBAAkB;AAAA,EACnB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,kBAAkB;AAAA,EACnB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,kBAAkB;AAAA,EACnB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,kBAAkB;AAAA,EACnB,CAAC,mBAAmB;AAAA,EACpB,CAAC,iBAAiB;AAAA,EAClB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,kBAAkB;AAAA,EACnB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,kBAAkB;AAAA,EACnB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,kBAAkB;AAAA,EACnB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,kBAAkB;AAAA,EACnB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,iBAAiB;AAAA,EAClB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,kBAAkB;AAAA,EACnB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,kBAAkB;AAAA,EACnB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,kBAAkB;AAAA,EACnB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,kBAAkB;AAAA,EACnB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,kBAAkB;AAAA,EACnB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,kBAAkB;AAAA,EACnB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,iBAAiB;AAAA,EAClB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,kBAAkB;AAAA,EACnB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,kBAAkB;AAAA,EACnB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,kBAAkB;AAAA,EACnB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,kBAAkB;AAAA,EACnB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,iBAAiB;AAAA,EAClB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,kBAAkB;AAAA,EACnB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,kBAAkB;AAAA,EACnB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,kBAAkB;AAAA,EACnB,CAAC,kBAAkB;AAAA,EACnB,CAAC,mBAAmB;AAAA,EACpB,CAAC,iBAAiB;AAAA,EAClB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,kBAAkB;AAAA,EACnB,CAAC,kBAAkB;AAAA,EACnB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,kBAAkB;AAAA,EACnB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,kBAAkB;AAAA,EACnB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,kBAAkB;AAAA,EACnB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,kBAAkB;AAAA,EACnB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,kBAAkB;AAAA,EACnB,CAAC,kBAAkB;AAAA,EACnB,CAAC,gBAAgB;AAAA,EACjB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,kBAAkB;AAAA,EACnB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,kBAAkB;AAAA,EACnB,CAAC,iBAAiB;AAAA,EAClB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA;AAGf,IAAM,SAAS;AAAA,EACpB;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAG;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EACtJ;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAClJ;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAG;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EACrJ;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAG;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAG;AAAA,EAC7I;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAClJ;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAC/I;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EACrJ;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EACpJ;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EACjJ;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAG;AAAA,EAC/I;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAG;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACnJ;AAAA,EAAK;AAAA,EAAI;AAAA,EAAG;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACnJ;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAG;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAC9I;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAG;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EACtJ;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAC/I;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAClJ;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACnJ;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAG;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACrJ;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACpJ;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAG;AAAA,EAClJ;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAC/I;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAC/I;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACjJ;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACnJ;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAC/I;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACjJ;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAG;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACnJ;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACjJ;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACjJ;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACjJ;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAG;AAAA,EAAK;AAAA,EACnJ;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAC/I;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAChJ;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAC/I;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAC/I;AAAA,EAAK;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAChJ;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACjJ;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACjJ;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAC7I;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACjJ;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACjJ;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACjJ;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAClJ;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAC7I;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAG;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EACnJ;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACpJ;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAC/I;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAClJ;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAClJ;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAG;AAAA,EAAI;AAAA,EAAI;AAAA,EAAG;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAChJ;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EACpJ;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EACrJ;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACpJ;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAG;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAG;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAC/I;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACjJ;AAAA,EAAK;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAG;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAC9I;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAG;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EACpJ;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACrJ;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EACpJ;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EACpJ;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAC9I;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAC/I;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAG;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAG;AAAA,EAAI;AAAA,EAClJ;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAG;AAAA,EAC/I;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAC/I;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAC9I;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAChJ;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACjJ;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACjJ;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAChJ;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACjJ;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACjJ;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAC9I;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAG;AAAA,EAAK;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAC/I;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACjJ;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAChJ;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACjJ;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAClJ;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACjJ;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACjJ;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAG;AAAA,EAAK;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA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,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA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B,CAAE,OAAO,GAAG,OAAO;AAAA,EACnB,CAAE,OAAO,GAAG,OAAO;AAAA,EACnB,CAAE,OAAO,GAAG,OAAO;AAAA,EACnB,CAAE,OAAO,GAAG,OAAO;AAAA,EACnB,CAAE,OAAO,GAAG,OAAO;AAAA,EACnB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA;;;AD3EtB,IAAI;AACJ,IAAI,QAAkB;AACtB,IAAI,WAAU,OA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AA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA0Jb,IAAM,QAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;A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", "names": [] } diff --git a/dist/human.esm-nobundle.js b/dist/human.esm-nobundle.js index be079fe1..4778eaf3 100644 --- a/dist/human.esm-nobundle.js +++ b/dist/human.esm-nobundle.js @@ -5,14 +5,24993 @@ author: ' */ -var Z0=Object.create,Re=Object.defineProperty,L0=Object.getPrototypeOf,V0=Object.prototype.hasOwnProperty,H0=Object.getOwnPropertyNames,X0=Object.getOwnPropertyDescriptor;var Ee=e=>Re(e,"__esModule",{value:!0});var a1=(e,t)=>()=>(t||(t={exports:{}},e(t.exports,t)),t.exports),J=(e,t)=>{for(var n in t)Re(e,n,{get:t[n],enumerable:!0})},y=(e,t,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let c of H0(t))!V0.call(e,c)&&c!=="default"&&Re(e,c,{get:()=>t[c],enumerable:!(n=X0(t,c))||n.enumerable});return e},Se=e=>y(Ee(Re(e!=null?Z0(L0(e)):{},"default",e&&e.__esModule&&"default"in e?{get:()=>e.default,enumerable:!0}:{value:e,enumerable:!0})),e);var Pt=(e,t,n)=>{if(!t.has(e))throw TypeError("Cannot "+n)},K=(e,t,n)=>(Pt(e,t,"read from private field"),n?n.call(e):t.get(e)),xe=(e,t,n,c)=>(Pt(e,t,"write to private field"),c?c.call(e,n):t.set(e,n),n);import{version as q0}from"@tensorflow/tfjs/package.json";import{version as B0}from"@tensorflow/tfjs-core/package.json";import{version as C0}from"@tensorflow/tfjs-data/package.json";import{version as Y0}from"@tensorflow/tfjs-layers/package.json";import{version as J0}from"@tensorflow/tfjs-converter/package.json";import{version_cpu as K0}from"@tensorflow/tfjs-backend-cpu/dist/index.js";import{version_webgl as U0}from"@tensorflow/tfjs-backend-webgl/dist/index.js";import{version_wasm as D0}from"@tensorflow/tfjs-backend-wasm/dist/index.js";import*as Dn from"@tensorflow/tfjs-core/dist/index.js";import*as Gn from"@tensorflow/tfjs-layers/dist/index.js";import*as Qn from"@tensorflow/tfjs-converter/dist/index.js";import*as G0 from"@tensorflow/tfjs-data/dist/index.js";import*as $n from"@tensorflow/tfjs-backend-cpu/dist/index.js";import*as er from"@tensorflow/tfjs-backend-webgl/dist/index.js";import*as tr from"@tensorflow/tfjs-backend-wasm/dist/index.js";var N=a1(F0=>{Ee(F0);J(F0,{data:()=>G0,version:()=>Q0});y(F0,Dn);y(F0,Gn);y(F0,Qn);y(F0,$n);y(F0,er);y(F0,tr);var Q0={tfjs:q0,"tfjs-core":B0,"tfjs-data":C0,"tfjs-layers":Y0,"tfjs-converter":J0,"tfjs-backend-cpu":K0,"tfjs-backend-webgl":U0,"tfjs-backend-wasm":D0}});var Ht=a1(Vt=>{Ee(Vt);J(Vt,{MediaPipeFaceMesh:()=>L1,load:()=>an});var Z1=N(),L1=class{constructor(t,n,c,r){this.facePipeline=new I1(t,n,c),this.config=r}async estimateFaces(t,n){let c=await this.facePipeline.predict(t,n),r=[];for(let A of c||[]){if(A.isDisposedInternal)continue;let _=A.coords?A.coords.arraySync():[],o=_.map(h=>[h[0]/t.shape[2],h[1]/t.shape[1],h[2]/this.facePipeline.meshSize]),s={};if(_&&_.length>0)for(let h of Object.keys(ne))s[h]=ne[h].map(w=>_[w]);let i=A.box?[Math.max(0,A.box.startPoint[0]),Math.max(0,A.box.startPoint[1]),Math.min(t.shape[1],A.box.endPoint[0])-Math.max(0,A.box.startPoint[0]),Math.min(t.shape[2],A.box.endPoint[1])-Math.max(0,A.box.startPoint[1])]:0,x=A.box?[A.box.startPoint[0]/t.shape[2],A.box.startPoint[1]/t.shape[1],(A.box.endPoint[0]-A.box.startPoint[0])/t.shape[2],(A.box.endPoint[1]-A.box.startPoint[1])/t.shape[1]]:[];r.push({confidence:A.faceConfidence||A.boxConfidence||0,boxConfidence:A.boxConfidence,faceConfidence:A.faceConfidence,box:i,boxRaw:x,mesh:_,meshRaw:o,annotations:s,image:A.image?A.image.clone():null}),A.coords&&A.coords.dispose(),A.image&&A.image.dispose()}return r}},we=[null,null,null];async function an(e){we=await Promise.all([!we[0]&&e.face.enabled?jt(e):null,!we[1]&&e.face.mesh.enabled?Z1.loadGraphModel(e.face.mesh.modelPath,{fromTFHub:e.face.mesh.modelPath.includes("tfhub.dev")}):null,!we[2]&&e.face.iris.enabled?Z1.loadGraphModel(e.face.iris.modelPath,{fromTFHub:e.face.iris.modelPath.includes("tfhub.dev")}):null]);let t=new L1(we[0],we[1],we[2],e);return e.face.mesh.enabled&&e.debug&&b(`load model: ${e.face.mesh.modelPath.match(/\/(.*)\./)[1]}`),e.face.iris.enabled&&e.debug&&b(`load model: ${e.face.iris.modelPath.match(/\/(.*)\./)[1]}`),t}Vt.triangulation=ye});var Je=a1(F1=>{Ee(F1);J(F1,{NUM_KEYPOINTS:()=>ln,connectedPartIndices:()=>fn,partChannels:()=>pn,partIds:()=>q1,partNames:()=>wn,poseChain:()=>mn});var wn=["nose","leftEye","rightEye","leftEar","rightEar","leftShoulder","rightShoulder","leftElbow","rightElbow","leftWrist","rightWrist","leftHip","rightHip","leftKnee","rightKnee","leftAnkle","rightAnkle"],ln=F1.partNames.length,q1=F1.partNames.reduce((e,t,n)=>(e[t]=n,e),{}),dn=[["leftHip","leftShoulder"],["leftElbow","leftShoulder"],["leftElbow","leftWrist"],["leftHip","leftKnee"],["leftKnee","leftAnkle"],["rightHip","rightShoulder"],["rightElbow","rightShoulder"],["rightElbow","rightWrist"],["rightHip","rightKnee"],["rightKnee","rightAnkle"],["leftShoulder","rightShoulder"],["leftHip","rightHip"]],fn=dn.map(([e,t])=>[q1[e],q1[t]]),mn=[["nose","leftEye"],["leftEye","leftEar"],["nose","rightEye"],["rightEye","rightEar"],["nose","leftShoulder"],["leftShoulder","leftElbow"],["leftElbow","leftWrist"],["leftShoulder","leftHip"],["leftHip","leftKnee"],["leftKnee","leftAnkle"],["nose","rightShoulder"],["rightShoulder","rightElbow"],["rightElbow","rightWrist"],["rightShoulder","rightHip"],["rightHip","rightKnee"],["rightKnee","rightAnkle"]],pn=["left_face","right_face","right_upper_leg_front","right_lower_leg_back","right_upper_leg_back","left_lower_leg_front","left_upper_leg_front","left_upper_leg_back","left_lower_leg_back","right_feet","right_lower_leg_front","left_feet","torso_front","torso_back","right_upper_arm_front","right_upper_arm_back","right_lower_arm_back","left_lower_arm_front","left_upper_arm_front","left_upper_arm_back","left_lower_arm_back","right_hand","right_lower_arm_front","left_hand"]});function b(...e){let t=new Date,n=`${t.getHours().toString().padStart(2,"0")}:${t.getMinutes().toString().padStart(2,"0")}:${t.getSeconds().toString().padStart(2,"0")}.${t.getMilliseconds().toString().padStart(3,"0")}`;e&&console.log(n,"Human:",...e)}var z=()=>typeof performance!="undefined"?performance.now():parseInt((Number(process.hrtime.bigint())/1e3/1e3).toString());function de(...e){let t=n=>n&&typeof n=="object";return e.reduce((n,c)=>(Object.keys(c||{}).forEach(r=>{let A=n[r],_=c[r];Array.isArray(A)&&Array.isArray(_)?n[r]=A.concat(..._):t(A)&&t(_)?n[r]=de(A,_):n[r]=_}),n),{})}function vt(){let e,t;if(typeof navigator!="undefined"){let n=navigator.userAgent.match(/\(([^()]+)\)/g);n&&n[0]&&(e=n[0].match(/\(([^()]+)\)/g)[0].replace(/\(|\)/g,""),t=navigator.userAgent.replace(n[0],""),e[1]&&(t=t.replace(n[1],"")),t=t.replace(/ /g," "))}else typeof process!="undefined"&&(e=`${process.platform} ${process.arch}`,t=`NodeJS ${process.version}`);return{platform:e,agent:t}}var mt=N();var F=N(),B={name:"humangl",priority:99,canvas:null,gl:null,width:1024,height:1024,webGLattr:{alpha:!1,antialias:!1,premultipliedAlpha:!1,preserveDrawingBuffer:!1,depth:!1,stencil:!1,failIfMajorPerformanceCaveat:!1,desynchronized:!0}};function zt(){if(!F.findBackend(B.name)){b("backend registration:",B.name);try{B.canvas=typeof OffscreenCanvas!="undefined"?new OffscreenCanvas(B.width,B.height):document.createElement("canvas")}catch(e){b("error: cannot create canvas:",e);return}try{B.gl=B.canvas.getContext("webgl2",B.webGLattr)}catch(e){b("error: cannot get WebGL2 context:",e);return}try{F.setWebGLContext(2,B.gl)}catch(e){b("error: cannot set WebGL2 context:",e);return}try{let e=new F.GPGPUContext(B.gl);F.registerBackend(B.name,()=>new F.MathBackendWebGL(e),B.priority)}catch(e){b("error: cannot register WebGL backend:",e);return}try{F.getKernelsForBackend("webgl").forEach(t=>{let n={...t,backendName:B.name};F.registerKernel(n)})}catch(e){b("error: cannot update WebGL backend registration:",e);return}try{F.ENV.set("WEBGL_VERSION",2)}catch(e){b("error: cannot set WebGL backend flags:",e);return}b("backend registered:",B.name)}}var y1={};J(y1,{load:()=>w1,predict:()=>Ne});var $=N();var x1={};function C(e,t){if(!t||!t.kernels)return;let n=5,c=t.kernels.filter(o=>o.kernelTimeMs>0).reduce((o,s)=>o+=s.kernelTimeMs,0),r=t.kernels.map((o,s)=>(o.id=s,o)).filter(o=>o.kernelTimeMs>0).sort((o,s)=>s.kernelTimeMs-o.kernelTimeMs),A=t.kernels.map((o,s)=>(o.id=s,o)).filter(o=>o.totalBytesSnapshot>0).sort((o,s)=>s.totalBytesSnapshot-o.totalBytesSnapshot);r.length>n&&(r.length=n),A.length>n&&(A.length=n);let _={newBytes:t.newBytes,newTensors:t.newTensors,peakBytes:t.peakBytes,numKernelOps:t.kernels.length,timeKernelOps:c,slowestKernelOps:r,largestKernelOps:A};x1[e]=_,b("Human profiler",e,_)}var _e,je={age:0},We=Number.MAX_SAFE_INTEGER;async function w1(e){return _e||(_e=await $.loadGraphModel(e.face.age.modelPath),e.debug&&b(`load model: ${e.face.age.modelPath.match(/\/(.*)\./)[1]}`)),_e}async function Ne(e,t){return _e?We0?(We++,je):(t.videoOptimized?We=0:We=Number.MAX_SAFE_INTEGER,new Promise(async n=>{let c=$.image.resizeBilinear(e,[_e.inputs[0].shape[2],_e.inputs[0].shape[1]],!1),r=$.mul(c,[255]);$.dispose(c);let A,_={age:0};if(!t.profile)t.face.age.enabled&&(A=await _e.predict(r));else{let o=t.face.age.enabled?await $.profile(()=>_e.predict(r)):{};A=o.result.clone(),o.result.dispose(),C("age",o)}if(r.dispose(),A){let o=A.dataSync();_.age=Math.trunc(10*o[0])/10}A.dispose(),je=_,n(_)})):null}var l1={};J(l1,{load:()=>p1,predict:()=>Oe});var I=N();var re,d1={gender:""},ke=Number.MAX_SAFE_INTEGER,f1=!1,m1=[.2989,.587,.114];async function p1(e){return re||(re=await I.loadGraphModel(e.face.gender.modelPath),f1=re.inputs[0].shape[3]===1,e.debug&&b(`load model: ${e.face.gender.modelPath.match(/\/(.*)\./)[1]}`)),re}async function Oe(e,t){return re?ke{let c=I.image.resizeBilinear(e,[re.inputs[0].shape[2],re.inputs[0].shape[1]],!1),r;f1?r=I.tidy(()=>{let[o,s,i]=I.split(c,3,3),x=I.mul(o,m1[0]),h=I.mul(s,m1[1]),w=I.mul(i,m1[2]);return I.addN([x,h,w]).sub(.5).mul(2)}):r=I.mul(c,[255]),I.dispose(c);let A,_={gender:"",confidence:0};if(!t.profile)t.face.gender.enabled&&(A=await re.predict(r));else{let o=t.face.gender.enabled?await I.profile(()=>re.predict(r)):{};A=o.result.clone(),o.result.dispose(),C("gender",o)}if(r.dispose(),A)if(Array.isArray(A)){let o=A[0].dataSync(),s=Math.trunc(200*Math.abs(o[0]-.5))/100;s>t.face.gender.minConfidence&&(_.gender=o[0]<=.5?"female":"male",_.confidence=Math.min(.99,s)),A.forEach(i=>I.dispose(i))}else{let o=A.dataSync();if(f1)(o[0]>t.face.gender.minConfidence||o[1]>t.face.gender.minConfidence)&&(_.gender=o[0]>o[1]?"female":"male",_.confidence=o[0]>o[1]?Math.trunc(100*o[0])/100:Math.trunc(100*o[1])/100);else{let s=Math.trunc(200*Math.abs(o[0]-.5))/100;s>t.face.gender.minConfidence&&(_.gender=o[0]<=.5?"female":"male",_.confidence=Math.min(.99,s))}A.dispose()}d1=_,n(_)})):null}var u1={};J(u1,{load:()=>T1,predict:()=>Ze});var Z=N();var $0=["angry","disgust","fear","happy","sad","surprise","neutral"],oe,b1=[],Ie=Number.MAX_SAFE_INTEGER,g1=[.2989,.587,.114];async function T1(e){return oe||(oe=await Z.loadGraphModel(e.face.emotion.modelPath),e.debug&&b(`load model: ${e.face.emotion.modelPath.match(/\/(.*)\./)[1]}`)),oe}async function Ze(e,t){return oe?Ie0?(Ie++,b1):(t.videoOptimized?Ie=0:Ie=Number.MAX_SAFE_INTEGER,new Promise(async n=>{let c=Z.image.resizeBilinear(e,[oe.inputs[0].shape[2],oe.inputs[0].shape[1]],!1),[r,A,_]=Z.split(c,3,3);c.dispose();let o=Z.mul(r,g1[0]),s=Z.mul(A,g1[1]),i=Z.mul(_,g1[2]);r.dispose(),A.dispose(),_.dispose();let x=Z.addN([o,s,i]);o.dispose(),s.dispose(),i.dispose();let h=Z.tidy(()=>x.sub(.5).mul(2));x.dispose();let w=[];if(t.face.emotion.enabled){let f;if(t.profile){let m=await Z.profile(()=>oe.predict(h));f=m.result.dataSync(),m.result.dispose(),C("emotion",m)}else{let m=await oe.predict(h);f=m.dataSync(),Z.dispose(m)}for(let m=0;mt.face.emotion.minConfidence&&w.push({score:Math.min(.99,Math.trunc(100*f[m])/100),emotion:$0[m]});w.sort((m,a)=>a.score-m.score)}h.dispose(),b1=w,n(w)})):null}var S=N();var ee;async function P1(e){return ee||(ee=await S.loadGraphModel(e.face.embedding.modelPath),e.debug&&b(`load model: ${e.face.embedding.modelPath.match(/\/(.*)\./)[1]}`)),ee}function Mt(e,t,n=2){if(!e||!t||(e==null?void 0:e.length)===0||(t==null?void 0:t.length)===0||(e==null?void 0:e.length)!==(t==null?void 0:t.length))return 0;let c=e.map((A,_)=>Math.abs(e[_]-t[_])**n).reduce((A,_)=>A+_,0)**(1/n);return Math.max(Math.trunc(1e3*(1-c))/1e3,0)}function en(e){return S.tidy(()=>{let n=[[.05,.15,.85,.85]],c=e.image||e.tensor;if(!(c instanceof S.Tensor))return null;let r=c.shape.length===3?S.image.cropAndResize(S.expandDims(c,0),n,[0],[ee.inputs[0].shape[2],ee.inputs[0].shape[1]]):S.image.cropAndResize(c,n,[0],[ee.inputs[0].shape[2],ee.inputs[0].shape[1]]),A=[.2989,.587,.114],[_,o,s]=S.split(r,3,3),i=S.mul(_,A[0]),x=S.mul(o,A[1]),h=S.mul(s,A[2]),w=S.addN([i,x,h]),f=S.stack([w,w,w],3).squeeze(4),m=f.sub(f.min());return m.div(m.max())})}async function v1(e,t){return ee?new Promise(async n=>{let c=[];if(t.face.embedding.enabled){let r=en(e);if(!t.profile)c=S.tidy(()=>[...ee.predict(r).reshape([128,2]).logSumExp(1).dataSync()]);else{let A=await S.profile(()=>ee.predict({img_inputs:r}));c=[...A.result.dataSync()],A.result.dispose(),C("emotion",A)}S.dispose(r)}n(c)}):[]}var z1={};J(z1,{enhance:()=>E1,load:()=>M1,match:()=>Rt,predict:()=>He,similarity:()=>R1});var V=N();var te,Le={age:0},Ve=Number.MAX_SAFE_INTEGER;async function M1(e){return te||(te=await V.loadGraphModel(e.face.description.modelPath),e.debug&&b(`load model: ${e.face.description.modelPath.match(/\/(.*)\./)[1]}`)),te}function R1(e,t,n=2){if(!e||!t||(e==null?void 0:e.length)===0||(t==null?void 0:t.length)===0||(e==null?void 0:e.length)!==(t==null?void 0:t.length))return 0;let c=4*e.map((A,_)=>Math.abs(e[_]-t[_])**n).reduce((A,_)=>A+_,0)**(1/n);return Math.max(0,100-c)/100}function Rt(e,t,n=0){let c={similarity:0,name:"",source:"",embedding:[]};if(!e||!t||!Array.isArray(e)||!Array.isArray(t))return c;for(let r of t)if(r.embedding&&r.name){let A=R1(e,r.embedding);A>n&&A>c.similarity&&(c={...r,similarity:A})}return c}function E1(e){return V.tidy(()=>{let n=e.image||e.tensor||e;if(!(n instanceof V.Tensor))return null;let c=[[.05,.15,.85,.85]];return(n.shape.length===3?V.image.cropAndResize(V.expandDims(n,0),c,[0],[te.inputs[0].shape[2],te.inputs[0].shape[1]]):V.image.cropAndResize(n,c,[0],[te.inputs[0].shape[2],te.inputs[0].shape[1]])).mul(255)})}async function He(e,t){return te?Ve0?(Ve++,Le):(t.videoOptimized?Ve=0:Ve=Number.MAX_SAFE_INTEGER,new Promise(async n=>{let c=E1(e),r,A={age:0,gender:"unknown",genderConfidence:0,descriptor:[]};if(!t.profile)t.face.description.enabled&&(r=await te.predict(c));else{let _=t.face.description.enabled?await V.profile(()=>te.predict(c)):{};r=_.result.clone(),_.result.dispose(),C("age",_)}V.dispose(c),r&&(V.tidy(()=>{let _=r.find(h=>h.shape[1]===1).dataSync(),o=Math.trunc(200*Math.abs(_[0]-.5))/100;o>t.face.gender.minConfidence&&(A.gender=_[0]<=.5?"female":"male",A.genderConfidence=Math.min(.99,o));let s=r.find(h=>h.shape[1]===100).argMax(1).dataSync()[0],i=r.find(h=>h.shape[1]===100).dataSync();A.age=Math.round(i[s-1]>i[s+1]?10*s-100*i[s-1]:10*s+100*i[s+1])/10;let x=r.find(h=>h.shape[1]===1024);A.descriptor=[...x.dataSync()]}),r.forEach(_=>V.dispose(_))),Le=A,n(A)})):null}var tn=e=>{if(!e||e.length<300)return{roll:null,yaw:null,pitch:null};let t=(r,A,_,o)=>Math.atan2(o-A,_-r),n=r=>Math.abs(r*180/Math.PI%360);return{roll:t(e[33][0],e[33][1],e[263][0],e[263][1]),yaw:t(e[33][0],e[33][2],e[263][0],e[263][2]),pitch:t(e[10][1],e[10][2],e[152][1],e[152][2])}},S1=async(e,t)=>{var x,h,w,f,m,a,M;let n,c,r,A,_,o,s=[];e.state="run:face",n=z();let i=await((x=e.models.face)==null?void 0:x.estimateFaces(t,e.config));if(e.perf.face=Math.trunc(z()-n),!i)return[];for(let g of i){if(e.analyze("Get Face"),!g.image||g.image.isDisposedInternal){b("Face object is disposed:",g.image);continue}let W=tn(g.mesh);e.analyze("Start Age:"),e.config.async?c=e.config.face.age.enabled?Ne(g.image,e.config):{}:(e.state="run:age",n=z(),c=e.config.face.age.enabled?await Ne(g.image,e.config):{},e.perf.age=Math.trunc(z()-n)),e.analyze("Start Gender:"),e.config.async?r=e.config.face.gender.enabled?Oe(g.image,e.config):{}:(e.state="run:gender",n=z(),r=e.config.face.gender.enabled?await Oe(g.image,e.config):{},e.perf.gender=Math.trunc(z()-n)),e.analyze("Start Emotion:"),e.config.async?A=e.config.face.emotion.enabled?Ze(g.image,e.config):{}:(e.state="run:emotion",n=z(),A=e.config.face.emotion.enabled?await Ze(g.image,e.config):{},e.perf.emotion=Math.trunc(z()-n)),e.analyze("End Emotion:"),e.analyze("Start Embedding:"),e.config.async?_=e.config.face.embedding.enabled?v1(g,e.config):[]:(e.state="run:embedding",n=z(),_=e.config.face.embedding.enabled?await v1(g,e.config):[],e.perf.embedding=Math.trunc(z()-n)),e.analyze("End Embedding:"),e.analyze("Start Description:"),e.config.async?o=e.config.face.description.enabled?He(g,e.config):[]:(e.state="run:description",n=z(),o=e.config.face.description.enabled?await He(g.image,e.config):[],e.perf.embedding=Math.trunc(z()-n)),e.analyze("End Description:"),e.config.async&&([c,r,A,_,o]=await Promise.all([c,r,A,_,o])),e.analyze("Finish Face:"),!e.config.face.iris.enabled&&((h=g==null?void 0:g.annotations)==null?void 0:h.leftEyeIris)&&((w=g==null?void 0:g.annotations)==null?void 0:w.rightEyeIris)&&(delete g.annotations.leftEyeIris,delete g.annotations.rightEyeIris);let E=((f=g.annotations)==null?void 0:f.leftEyeIris)&&((m=g.annotations)==null?void 0:m.rightEyeIris)?11.7*Math.max(Math.abs(g.annotations.leftEyeIris[3][0]-g.annotations.leftEyeIris[1][0]),Math.abs(g.annotations.rightEyeIris[4][1]-g.annotations.rightEyeIris[2][1])):0;s.push({...g,age:o.age||c.age,gender:o.gender||r.gender,genderConfidence:o.genderConfidence||r.confidence,embedding:o.descriptor||_,emotion:A,iris:E!==0?Math.trunc(E)/100:0,angle:W,tensor:e.config.face.detector.return?(a=g.image)==null?void 0:a.squeeze():null}),(M=g.image)==null||M.dispose(),e.analyze("End Face")}return e.analyze("End FaceMesh:"),e.config.async&&(e.perf.face&&delete e.perf.face,e.perf.age&&delete e.perf.age,e.perf.gender&&delete e.perf.gender,e.perf.emotion&&delete e.perf.emotion),s};var P=N(),Et=6;function nn(e){let t={strides:[e/16,e/8],anchors:[2,6]},n=[];for(let c=0;c({startEndTensor:e,startPoint:P.slice(e,[0,0],[-1,2]),endPoint:P.slice(e,[0,2],[-1,2])});function cn(e,t,n){let c=P.slice(e,[0,1],[-1,2]),r=P.add(c,t),A=P.slice(e,[0,3],[-1,2]),_=P.div(A,n),o=P.div(r,n),s=P.div(_,2),i=P.sub(o,s),x=P.add(o,s),h=P.mul(i,n),w=P.mul(x,n);return P.concat2d([h,w],1)}var St=class{constructor(t,n){this.model=t,this.anchorsData=nn(t.inputs[0].shape[1]),this.anchors=P.tensor2d(this.anchorsData),this.inputSize=t.inputs[0].shape[2],this.config=n}async getBoundingBoxes(t){if(!t||t.isDisposedInternal||t.shape.length!==4||t.shape[1]<1||t.shape[2]<1)return null;let[n,c,r]=P.tidy(()=>{let w=t.resizeBilinear([this.inputSize,this.inputSize]).div(127.5).sub(.5),f=this.model.predict(w),m;if(Array.isArray(f)){let W=f.sort((d,p)=>d.size-p.size),E=P.concat([W[0],W[2]],2),X=P.concat([W[1],W[3]],2);m=P.concat([X,E],1).squeeze(0)}else m=f.squeeze();let a=cn(m,this.anchors,[this.inputSize,this.inputSize]),M=P.slice(m,[0,0],[-1,1]),g=P.sigmoid(M).squeeze();return[m,a,g]}),A=await P.image.nonMaxSuppressionAsync(c,r,this.config.face.detector.maxFaces,this.config.face.detector.iouThreshold,this.config.face.detector.scoreThreshold),_=A.arraySync();A.dispose();let s=_.map(h=>P.slice(c,[h,0],[1,-1])).map(h=>{let w=h.arraySync();return h.dispose(),w}),i=r.dataSync(),x=[];for(let h=0;hthis.config.face.detector.minConfidence){let m=rn(s[h]),a=this.anchorsData[w],M=P.tidy(()=>P.slice(n,[w,Et-1],[1,-1]).squeeze().reshape([Et,-1]));x.push({box:m,landmarks:M,anchor:a,confidence:f})}}return n.dispose(),c.dispose(),r.dispose(),{boxes:x,scaleFactor:[t.shape[2]/this.inputSize,t.shape[1]/this.inputSize]}}};async function jt(e){let t=await P.loadGraphModel(e.face.detector.modelPath,{fromTFHub:e.face.detector.modelPath.includes("tfhub.dev")}),n=new St(t,e);return e.debug&&b(`load model: ${e.face.detector.modelPath.match(/\/(.*)\./)[1]}`),n}var H=N();var Wt=N();function Nt(e,t){let n=[e.startPoint[0]*t[0],e.startPoint[1]*t[1]],c=[e.endPoint[0]*t[0],e.endPoint[1]*t[1]];return{startPoint:n,endPoint:c}}function Te(e){return[Math.abs(e.endPoint[0]-e.startPoint[0]),Math.abs(e.endPoint[1]-e.startPoint[1])]}function fe(e){return[e.startPoint[0]+(e.endPoint[0]-e.startPoint[0])/2,e.startPoint[1]+(e.endPoint[1]-e.startPoint[1])/2]}function me(e,t,n){let c=t.shape[1],r=t.shape[2],A=[[e.startPoint[1]/c,e.startPoint[0]/r,e.endPoint[1]/c,e.endPoint[0]/r]];return Wt.image.cropAndResize(t,A,[0],n)}function Xe(e,t=1.5){let n=fe(e),c=Te(e),r=[t*c[0]/2,t*c[1]/2],A=[n[0]-r[0],n[1]-r[1]],_=[n[0]+r[0],n[1]+r[1]];return{startPoint:A,endPoint:_,landmarks:e.landmarks}}function Fe(e){let t=fe(e),n=Te(e),r=Math.max(...n)/2,A=[t[0]-r,t[1]-r],_=[t[0]+r,t[1]+r];return{startPoint:A,endPoint:_,landmarks:e.landmarks}}var qe=[[1,0,0],[0,1,0],[0,0,1]];function An(e){return e-2*Math.PI*Math.floor((e+Math.PI)/(2*Math.PI))}function j1(e,t){let n=Math.PI/2-Math.atan2(-(t[1]-e[1]),t[0]-e[0]);return An(n)}function kt(e,t){return[[1,0,e],[0,1,t],[0,0,1]]}function se(e,t){let n=0;for(let c=0;cN1[e]),jr=sn.map(e=>N1[e]),Wr=hn.map(e=>N1[e]);var k1=ne.leftEyeLower0,O1=ne.rightEyeLower0,pe={leftBounds:[k1[0],k1[k1.length-1]],rightBounds:[O1[0],O1[O1.length-1]]},Ce={count:468,mouth:13,symmetryLine:[13,ne.midwayBetweenEyes[0]]},Lt={leftEye:0,rightEye:1,nose:2,mouth:3,leftEar:4,rightEar:5,symmetryLine:[3,2]},ue={upperCenter:3,lowerCenter:4,index:71,numCoordinates:76};function Ye(e,t,n,c){for(let r=0;r[A[0]/this.meshSize*(h[0]-this.meshSize/2),A[1]/this.meshSize*(h[1]-this.meshSize/2),h[2]]),o=c!==0?Be(c,[0,0]):qe,s=c!==0?_.map(h=>[...Zt(h,o),h[2]]):_,i=c!==0?It(r):qe,x=[...fe({startPoint:n.startPoint,endPoint:n.endPoint}),1];return s.map(h=>[h[0]+se(x,i[0]),h[1]+se(x,i[1]),h[2]])}getLeftToRightEyeDepthDifference(t){let n=t[pe.leftBounds[0]][2],c=t[pe.rightBounds[0]][2];return n-c}getEyeBox(t,n,c,r,A=!1){let _=Fe(Xe(this.calculateLandmarksBoundingBox([t[c],t[r]]),this.irisEnlarge)),o=Te(_),s=H.image.cropAndResize(n,[[_.startPoint[1]/this.meshSize,_.startPoint[0]/this.meshSize,_.endPoint[1]/this.meshSize,_.endPoint[0]/this.meshSize]],[0],[this.irisSize,this.irisSize]);return A&&H.ENV.flags.IS_BROWSER&&(s=H.image.flipLeftRight(s)),{box:_,boxSize:o,crop:s}}getEyeCoords(t,n,c,r=!1){let A=[];for(let _=0;_{let i=_;return s===2?i=r:s===4&&(i=A),[o[0],o[1],i]})}async predict(t,n){let c=!1,r;if((this.skipped===0||this.skipped>n.face.detector.skipFrames||!n.face.mesh.enabled||!n.videoOptimized)&&(r=await this.boundingBoxDetector.getBoundingBoxes(t),this.skipped=0),n.videoOptimized&&this.skipped++,!n.videoOptimized||r&&r.boxes&&(!n.face.mesh.enabled||r.boxes.length!==this.detectedFaces&&this.detectedFaces!==n.face.detector.maxFaces)){this.storedBoxes=[],this.detectedFaces=0;for(let _ of r.boxes)this.storedBoxes.push({startPoint:_.box.startPoint.dataSync(),endPoint:_.box.endPoint.dataSync(),landmarks:_.landmarks,confidence:_.confidence});this.storedBoxes.length>0&&(c=!0)}if(n.face.detector.skipInitial&&this.detectedFaces===0&&(this.skipped=0),c){if(!r||!r.boxes||r.boxes.length===0)return this.storedBoxes=[],this.detectedFaces=0,null;for(let _=0;_{_.box.startPoint.dispose(),_.box.endPoint.dispose(),_.landmarks.dispose()});let A=H.tidy(()=>this.storedBoxes.map((_,o)=>{let s=_.confidence,i,x=0,h;if(n.face.detector.rotation&&n.face.mesh.enabled&&H.ENV.flags.IS_BROWSER){let[u,d]=_.landmarks.length>=Ce.count?Ce.symmetryLine:Lt.symmetryLine;x=j1(_.landmarks[u],_.landmarks[d]);let p=fe({startPoint:_.startPoint,endPoint:_.endPoint}),v=[p[0]/t.shape[2],p[1]/t.shape[1]],R=H.image.rotateWithOffset(t,x,0,v);h=Be(-x,p),n.face.mesh.enabled?i=me({startPoint:_.startPoint,endPoint:_.endPoint},R,[this.meshSize,this.meshSize]).div(255):i=me({startPoint:_.startPoint,endPoint:_.endPoint},R,[this.boxSize,this.boxSize]).div(255)}else{h=qe;let u=t.clone();n.face.mesh.enabled?i=me({startPoint:_.startPoint,endPoint:_.endPoint},u,[this.meshSize,this.meshSize]).div(255):i=me({startPoint:_.startPoint,endPoint:_.endPoint},u,[this.boxSize,this.boxSize]).div(255)}if(!n.face.mesh.enabled)return{coords:null,box:_,faceConfidence:null,boxConfidence:s,confidence:_.confidence,image:i};let[,w,f]=this.meshDetector.predict(i),m=w.dataSync()[0];if(m=Ce.count?Ce.symmetryLine:Lt.symmetryLine;x=j1(_.landmarks[u],_.landmarks[d]);let p=fe({startPoint:_.startPoint,endPoint:_.endPoint}),v=[p[0]/t.shape[2],p[1]/t.shape[1]],R=H.image.rotateWithOffset(t,x,0,v);h=Be(-x,p),i=me({startPoint:_.startPoint,endPoint:_.endPoint},R,[this.meshSize,this.meshSize]).div(255)}let E={coords:W,box:_,faceConfidence:m,boxConfidence:s,image:i,rawCoords:M},X=Fe(_);return this.storedBoxes[o]={...X,landmarks:g,confidence:_.confidence,faceConfidence:m},E}));return A=A.filter(_=>_!==null),n.face.mesh.enabled&&(this.storedBoxes=this.storedBoxes.filter(_=>_.faceConfidence>n.face.detector.minConfidence)),this.detectedFaces=A.length,A}calculateLandmarksBoundingBox(t){let n=t.map(_=>_[0]),c=t.map(_=>_[1]),r=[Math.min(...n),Math.min(...c)],A=[Math.max(...n),Math.max(...c)];return{startPoint:r,endPoint:A,landmarks:t}}};var pt=Se(Ht());var D1={};J(D1,{PoseNet:()=>G1,load:()=>Q1});var c0=N();var Xt=N();function xn(e){let[t,n,c,r]=e;return{offsets:t,heatmap:n,displacementFwd:c,displacementBwd:r}}var V1=class{constructor(t){this.model=t}predict(t){return Xt.tidy(()=>{let c=t.toFloat().div(127.5).sub(1).expandDims(0),A=this.model.predict(c).map(o=>o.squeeze([0])),_=xn(A);return{heatmapScores:_.heatmap.sigmoid(),offsets:_.offsets,displacementFwd:_.displacementFwd,displacementBwd:_.displacementBwd}})}dispose(){this.model.dispose()}};function H1(e){return Math.floor(e/2)}var X1=class{constructor(t,n){this.priorityQueue=new Array(t),this.numberOfElements=-1,this.getElementValue=n}enqueue(t){this.priorityQueue[++this.numberOfElements]=t,this.swim(this.numberOfElements)}dequeue(){let t=this.priorityQueue[0];return this.exchange(0,this.numberOfElements--),this.sink(0),this.priorityQueue[this.numberOfElements+1]=null,t}empty(){return this.numberOfElements===-1}size(){return this.numberOfElements+1}all(){return this.priorityQueue.slice(0,this.numberOfElements+1)}max(){return this.priorityQueue[0]}swim(t){for(;t>0&&this.less(H1(t),t);)this.exchange(t,H1(t)),t=H1(t)}sink(t){for(;2*t<=this.numberOfElements;){let n=2*t;if(nt){s=!1;break}if(!s)break}return s}function Ft(e,t,n){let[c,r,A]=n.shape,_=new X1(c*r*A,({score:o})=>o);for(let o=0;on?n:e}function Bt(e,t,n,c){let r=n-e,A=c-t;return r*r+A*A}function Y1(e,t){return{x:e.x+t.x,y:e.y+t.y}}var Y=N(),Ue=Se(Je());function Ct(e,t){let n=t.shape[0],c=new Float32Array(n);for(let r=0;re.toTensor().mul(Y.scalar(t,"int32")).toFloat().add(bn(e,n)))}function gn(e,t){return Y.tidy(()=>{let n=e.div(Y.scalar(t,"int32"));return e.sub(n.mul(Y.scalar(t,"int32")))})}function Jt(e){let[t,n,c]=e.shape;return Y.tidy(()=>{let A=e.reshape([t*n,c]).argMax(0),_=A.div(Y.scalar(n,"int32")).expandDims(1),o=gn(A,n).expandDims(1);return Y.concat([_,o],1)})}var Kt=ce.poseChain.map(([e,t])=>[ce.partIds[e],ce.partIds[t]]),J1=Kt.map(([,e])=>e),Ut=Kt.map(([e])=>e),Tn=16;function Pn(e,t,n){let c=n.shape[2]/2;return{y:n.get(t.y,t.x,e),x:n.get(t.y,t.x,c+e)}}function K1(e,t,n,c){return{y:C1(Math.round(e.y/t),0,n-1),x:C1(Math.round(e.x/t),0,c-1)}}function Dt(e,t,n,c,r,A,_,o=2){let[s,i]=c.shape,x=K1(t.position,A,s,i),h=Pn(e,x,_),f=Y1(t.position,h);for(let M=0;M=0;--w){let f=J1[w],m=Ut[w];s[f]&&!s[m]&&(s[m]=Dt(w,s[f],m,t,n,c,A))}for(let w=0;w(c+=m,{position:{y:x.get(a,0),x:x.get(a,1)},part:ce.partNames[a],score:m})),f=w.filter(m=>m.score>n);return r.dispose(),i.dispose(),{keypoints:f,score:c/w.length}}var vn=1,$t=16;function e0(e,t,{x:n,y:c},r){return e.some(({keypoints:A})=>{let _=A[r].position;return Bt(c,n,_.y,_.x)<=t})}function zn(e,t,n){return n.reduce((r,{position:A,score:_},o)=>(e0(e,t,A,o)||(r+=_),r),0)/n.length}function t0(e,t,n,c,r,A,_){let o=[],s=Ft(_,vn,e),i=r^2;for(;o.length_&&o.push({keypoints:w,score:f})}return o}async function n0(e){return Promise.all(e.map(t=>t.buffer()))}function Mn(e,t,n){return{score:e.score,keypoints:e.keypoints.map(({score:c,part:r,position:A})=>({score:c,part:r,position:{x:Math.trunc(A.x*n),y:Math.trunc(A.y*t)}}))}}function r0(e,[t,n]){let c=e.squeeze(0),r=c.resizeBilinear([t,n]);return c.dispose(),r}function U1(e,[t,n],[c,r]){return e.map(_=>Mn(_,t/c,n/r))}async function Rn(e,t,n,c){return new Promise(async r=>{let A=await n0([t.heatmapScores,t.offsets,t.displacementFwd,t.displacementBwd]),_=A[0],o=A[1],s=A[2],i=A[3],x=await t0(_,o,s,i,n.body.nmsRadius,n.body.maxDetections,n.body.scoreThreshold),h=U1(x,[e.shape[1],e.shape[2]],[c,c]);r(h)})}async function En(e,t,n,c){return new Promise(async r=>{let A=await Qt(t.heatmapScores,t.offsets,n.body.scoreThreshold),_=U1([A],[e.shape[1],e.shape[2]],[c,c]);r(_)})}var G1=class{constructor(t){this.baseModel=t,this.inputSize=t.model.inputs[0].shape[1],this.inputSize<128&&(this.inputSize=257)}async estimatePoses(t,n){let c=r0(t,[this.inputSize,this.inputSize]),r=this.baseModel.predict(c,n),A=n.body.maxDetections<2?await En(t,r,n,this.inputSize):await Rn(t,r,n,this.inputSize);return r.heatmapScores.dispose(),r.offsets.dispose(),r.displacementFwd.dispose(),r.displacementBwd.dispose(),c.dispose(),A}dispose(){this.baseModel.dispose()}};async function Q1(e){let t=await c0.loadGraphModel(e.body.modelPath),n=new V1(t);return e.debug&&b(`load model: ${e.body.modelPath.match(/\/(.*)\./)[1]}`),new G1(n)}var rt={};J(rt,{HandPose:()=>_t,load:()=>ot});var ct=N();var T=N();var A0=N();function De(e){return[Math.abs(e.endPoint[0]-e.startPoint[0]),Math.abs(e.endPoint[1]-e.startPoint[1])]}function Pe(e){return[e.startPoint[0]+(e.endPoint[0]-e.startPoint[0])/2,e.startPoint[1]+(e.endPoint[1]-e.startPoint[1])/2]}function _0(e,t,n){let c=t.shape[1],r=t.shape[2],A=[[e.startPoint[1]/c,e.startPoint[0]/r,e.endPoint[1]/c,e.endPoint[0]/r]];return A0.image.cropAndResize(t,A,[0],n)}function o0(e,t){let n=[e.startPoint[0]*t[0],e.startPoint[1]*t[1]],c=[e.endPoint[0]*t[0],e.endPoint[1]*t[1]],r=e.palmLandmarks.map(A=>[A[0]*t[0],A[1]*t[1]]);return{startPoint:n,endPoint:c,palmLandmarks:r,confidence:e.confidence}}function Ge(e,t=1.5){let n=Pe(e),c=De(e),r=[t*c[0]/2,t*c[1]/2],A=[n[0]-r[0],n[1]-r[1]],_=[n[0]+r[0],n[1]+r[1]];return{startPoint:A,endPoint:_,palmLandmarks:e.palmLandmarks}}function Qe(e){let t=Pe(e),n=De(e),r=Math.max(...n)/2,A=[t[0]-r,t[1]-r],_=[t[0]+r,t[1]+r];return{startPoint:A,endPoint:_,palmLandmarks:e.palmLandmarks}}var $1=class{constructor(t,n,c){this.model=t,this.anchors=c.map(r=>[r.x_center,r.y_center]),this.anchorsTensor=T.tensor2d(this.anchors),this.inputSize=n,this.inputSizeTensor=T.tensor1d([n,n]),this.doubleInputSizeTensor=T.tensor1d([n*2,n*2])}normalizeBoxes(t){return T.tidy(()=>{let n=T.slice(t,[0,0],[-1,2]),c=T.slice(t,[0,2],[-1,2]),r=T.add(T.div(n,this.inputSizeTensor),this.anchorsTensor),A=T.div(c,this.doubleInputSizeTensor),_=T.mul(T.sub(r,A),this.inputSizeTensor),o=T.mul(T.add(r,A),this.inputSizeTensor);return T.concat2d([_,o],1)})}normalizeLandmarks(t,n){return T.tidy(()=>{let c=T.add(T.div(t.reshape([-1,7,2]),this.inputSizeTensor),this.anchors[n]);return T.mul(c,this.inputSizeTensor)})}async getBoxes(t,n){let c=this.model.predict(t),r=c.squeeze();c.dispose();let A=T.tidy(()=>T.sigmoid(T.slice(r,[0,0],[-1,1])).squeeze()),_=A.dataSync(),o=T.slice(r,[0,1],[-1,4]),s=this.normalizeBoxes(o);o.dispose();let i=await T.image.nonMaxSuppressionAsync(s,_,n.hand.maxHands,n.hand.iouThreshold,n.hand.scoreThreshold),x=i.arraySync();A.dispose(),i.dispose();let h=[];for(let w of x)if(_[w]>=n.hand.minConfidence){let f=T.slice(s,[w,0],[1,-1]),m=T.slice(r,[w,5],[1,14]),a=T.tidy(()=>this.normalizeLandmarks(m,w).reshape([-1,2]));m.dispose(),h.push({box:f,palmLandmarks:a,confidence:_[w]})}return r.dispose(),s.dispose(),h}async estimateHandBounds(t,n){let c=t.shape[1],r=t.shape[2],A=T.tidy(()=>t.resizeBilinear([this.inputSize,this.inputSize]).div(127.5).sub(1)),_=await this.getBoxes(A,n);A.dispose();let o=[];if(!_||_.length===0)return o;for(let s of _){let i=s.box.dataSync(),x=i.slice(0,2),h=i.slice(2,4),w=s.palmLandmarks.arraySync();s.box.dispose(),s.palmLandmarks.dispose(),o.push(o0({startPoint:x,endPoint:h,palmLandmarks:w,confidence:s.confidence},[r/this.inputSize,c/this.inputSize]))}return o}};var $e=N();function Sn(e){return e-2*Math.PI*Math.floor((e+Math.PI)/(2*Math.PI))}function s0(e,t){let n=Math.PI/2-Math.atan2(-(t[1]-e[1]),t[0]-e[0]);return Sn(n)}var h0=(e,t)=>[[1,0,e],[0,1,t],[0,0,1]];function he(e,t){let n=0;for(let c=0;ctt([...A,1],n)),r=this.calculateLandmarksBoundingBox(c);return Ge(Qe(r),Wn)}getBoxForHandLandmarks(t){let n=this.calculateLandmarksBoundingBox(t),c=Ge(Qe(n),x0);c.palmLandmarks=[];for(let r=0;r[_[0]*(f[0]-this.inputSize/2),_[1]*(f[1]-this.inputSize/2),_[2]*f[2]]),s=et(c,[0,0]),i=o.map(f=>[...tt(f,s),f[2]]),x=a0(r),h=[...Pe(n),1],w=[he(h,x[0]),he(h,x[1])];return i.map(f=>[f[0]+w[0],f[1]+w[1],f[2]])}async estimateHands(t,n){let c=!1,r;(this.skipped===0||this.skipped>n.hand.skipFrames||!n.hand.landmarks||!n.videoOptimized)&&(r=await this.handDetector.estimateHandBounds(t,n),this.skipped=0),n.videoOptimized&&this.skipped++,r&&r.length>0&&(r.length!==this.detectedHands&&this.detectedHands!==n.hand.maxHands||!n.hand.landmarks)&&(this.detectedHands=0,this.storedBoxes=[...r],this.storedBoxes.length>0&&(c=!0));let A=[];n.hand.skipInitial&&this.detectedHands===0&&(this.skipped=0);for(let _=0;_=n.hand.minConfidence){let E=$e.reshape(g,[-1,3]),X=E.arraySync();g.dispose(),E.dispose();let u=this.transformRawCoords(X,f,s,w),d=this.getBoxForHandLandmarks(u);this.storedBoxes[_]=d;let p={landmarks:u,confidence:W,box:{topLeft:d.startPoint,bottomRight:d.endPoint}};A.push(p)}else this.storedBoxes[_]=null;g.dispose()}else{let s=Ge(Qe(o),x0),i={confidence:o.confidence,box:{topLeft:s.startPoint,bottomRight:s.endPoint}};A.push(i)}}return this.storedBoxes=this.storedBoxes.filter(_=>_!==null),this.detectedHands=A.length,A}calculateLandmarksBoundingBox(t){let n=t.map(_=>_[0]),c=t.map(_=>_[1]),r=[Math.min(...n),Math.min(...c)],A=[Math.max(...n),Math.max(...c)];return{startPoint:r,endPoint:A}}};var w0=[{w:1,h:1,x_center:.015625,y_center:.015625},{w:1,h:1,x_center:.015625,y_center:.015625},{w:1,h:1,x_center:.046875,y_center:.015625},{w:1,h:1,x_center:.046875,y_center:.015625},{w:1,h:1,x_center:.078125,y_center:.015625},{w:1,h:1,x_center:.078125,y_center:.015625},{w:1,h:1,x_center:.109375,y_center:.015625},{w:1,h:1,x_center:.109375,y_center:.015625},{w:1,h:1,x_center:.140625,y_center:.015625},{w:1,h:1,x_center:.140625,y_center:.015625},{w:1,h:1,x_center:.171875,y_center:.015625},{w:1,h:1,x_center:.171875,y_center:.015625},{w:1,h:1,x_center:.203125,y_center:.015625},{w:1,h:1,x_center:.203125,y_center:.015625},{w:1,h:1,x_center:.234375,y_center:.015625},{w:1,h:1,x_center:.234375,y_center:.015625},{w:1,h:1,x_center:.265625,y_center:.015625},{w:1,h:1,x_center:.265625,y_center:.015625},{w:1,h:1,x_center:.296875,y_center:.015625},{w:1,h:1,x_center:.296875,y_center:.015625},{w:1,h:1,x_center:.328125,y_center:.015625},{w:1,h:1,x_center:.328125,y_center:.015625},{w:1,h:1,x_center:.359375,y_center:.015625},{w:1,h:1,x_center:.359375,y_center:.015625},{w:1,h:1,x_center:.390625,y_center:.015625},{w:1,h:1,x_center:.390625,y_center:.015625},{w:1,h:1,x_center:.421875,y_center:.015625},{w:1,h:1,x_center:.421875,y_center:.015625},{w:1,h:1,x_center:.453125,y_center:.015625},{w:1,h:1,x_center:.453125,y_center:.015625},{w:1,h:1,x_center:.484375,y_center:.015625},{w:1,h:1,x_center:.484375,y_center:.015625},{w:1,h:1,x_center:.515625,y_center:.015625},{w:1,h:1,x_center:.515625,y_center:.015625},{w:1,h:1,x_center:.546875,y_center:.015625},{w:1,h:1,x_center:.546875,y_center:.015625},{w:1,h:1,x_center:.578125,y_center:.015625},{w:1,h:1,x_center:.578125,y_center:.015625},{w:1,h:1,x_center:.609375,y_center:.015625},{w:1,h:1,x_center:.609375,y_center:.015625},{w:1,h:1,x_center:.640625,y_center:.015625},{w:1,h:1,x_center:.640625,y_center:.015625},{w:1,h:1,x_center:.671875,y_center:.015625},{w:1,h:1,x_center:.671875,y_center:.015625},{w:1,h:1,x_center:.703125,y_center:.015625},{w:1,h:1,x_center:.703125,y_center:.015625},{w:1,h:1,x_center:.734375,y_center:.015625},{w:1,h:1,x_center:.734375,y_center:.015625},{w:1,h:1,x_center:.765625,y_center:.015625},{w:1,h:1,x_center:.765625,y_center:.015625},{w:1,h:1,x_center:.796875,y_center:.015625},{w:1,h:1,x_center:.796875,y_center:.015625},{w:1,h:1,x_center:.828125,y_center:.015625},{w:1,h:1,x_center:.828125,y_center:.015625},{w:1,h:1,x_center:.859375,y_center:.015625},{w:1,h:1,x_center:.859375,y_center:.015625},{w:1,h:1,x_center:.890625,y_center:.015625},{w:1,h:1,x_center:.890625,y_center:.015625},{w:1,h:1,x_center:.921875,y_center:.015625},{w:1,h:1,x_center:.921875,y_center:.015625},{w:1,h:1,x_center:.953125,y_center:.015625},{w:1,h:1,x_center:.953125,y_center:.015625},{w:1,h:1,x_center:.984375,y_center:.015625},{w:1,h:1,x_center:.984375,y_center:.015625},{w:1,h:1,x_center:.015625,y_center:.046875},{w:1,h:1,x_center:.015625,y_center:.046875},{w:1,h:1,x_center:.046875,y_center:.046875},{w:1,h:1,x_center:.046875,y_center:.046875},{w:1,h:1,x_center:.078125,y_center:.046875},{w:1,h:1,x_center:.078125,y_center:.046875},{w:1,h:1,x_center:.109375,y_center:.046875},{w:1,h:1,x_center:.109375,y_center:.046875},{w:1,h:1,x_center:.140625,y_center:.046875},{w:1,h:1,x_center:.140625,y_center:.046875},{w:1,h:1,x_center:.171875,y_center:.046875},{w:1,h:1,x_center:.171875,y_center:.046875},{w:1,h:1,x_center:.203125,y_center:.046875},{w:1,h:1,x_center:.203125,y_center:.046875},{w:1,h:1,x_center:.234375,y_center:.046875},{w:1,h:1,x_center:.234375,y_center:.046875},{w:1,h:1,x_center:.265625,y_center:.046875},{w:1,h:1,x_center:.265625,y_center:.046875},{w:1,h:1,x_center:.296875,y_center:.046875},{w:1,h:1,x_center:.296875,y_center:.046875},{w:1,h:1,x_center:.328125,y_center:.046875},{w:1,h:1,x_center:.328125,y_center:.046875},{w:1,h:1,x_center:.359375,y_center:.046875},{w:1,h:1,x_center:.359375,y_center:.046875},{w:1,h:1,x_center:.390625,y_center:.046875},{w:1,h:1,x_center:.390625,y_center:.046875},{w:1,h:1,x_center:.421875,y_center:.046875},{w:1,h:1,x_center:.421875,y_center:.046875},{w:1,h:1,x_center:.453125,y_center:.046875},{w:1,h:1,x_center:.453125,y_center:.046875},{w:1,h:1,x_center:.484375,y_center:.046875},{w:1,h:1,x_center:.484375,y_center:.046875},{w:1,h:1,x_center:.515625,y_center:.046875},{w:1,h:1,x_center:.515625,y_center:.046875},{w:1,h:1,x_center:.546875,y_center:.046875},{w:1,h:1,x_center:.546875,y_center:.046875},{w:1,h:1,x_center:.578125,y_center:.046875},{w:1,h:1,x_center:.578125,y_center:.046875},{w:1,h:1,x_center:.609375,y_center:.046875},{w:1,h:1,x_center:.609375,y_center:.046875},{w:1,h:1,x_center:.640625,y_center:.046875},{w:1,h:1,x_center:.640625,y_center:.046875},{w:1,h:1,x_center:.671875,y_center:.046875},{w:1,h:1,x_center:.671875,y_center:.046875},{w:1,h:1,x_center:.703125,y_center:.046875},{w:1,h:1,x_center:.703125,y_center:.046875},{w:1,h:1,x_center:.734375,y_center:.046875},{w:1,h:1,x_center:.734375,y_center:.046875},{w:1,h:1,x_center:.765625,y_center:.046875},{w:1,h:1,x_center:.765625,y_center:.046875},{w:1,h:1,x_center:.796875,y_center:.046875},{w:1,h:1,x_center:.796875,y_center:.046875},{w:1,h:1,x_center:.828125,y_center:.046875},{w:1,h:1,x_center:.828125,y_center:.046875},{w:1,h:1,x_center:.859375,y_center:.046875},{w:1,h:1,x_center:.859375,y_center:.046875},{w:1,h:1,x_center:.890625,y_center:.046875},{w:1,h:1,x_center:.890625,y_center:.046875},{w:1,h:1,x_center:.921875,y_center:.046875},{w:1,h:1,x_center:.921875,y_center:.046875},{w:1,h:1,x_center:.953125,y_center:.046875},{w:1,h:1,x_center:.953125,y_center:.046875},{w:1,h:1,x_center:.984375,y_center:.046875},{w:1,h:1,x_center:.984375,y_center:.046875},{w:1,h:1,x_center:.015625,y_center:.078125},{w:1,h:1,x_center:.015625,y_center:.078125},{w:1,h:1,x_center:.046875,y_center:.078125},{w:1,h:1,x_center:.046875,y_center:.078125},{w:1,h:1,x_center:.078125,y_center:.078125},{w:1,h:1,x_center:.078125,y_center:.078125},{w:1,h:1,x_center:.109375,y_center:.078125},{w:1,h:1,x_center:.109375,y_center:.078125},{w:1,h:1,x_center:.140625,y_center:.078125},{w:1,h:1,x_center:.140625,y_center:.078125},{w:1,h:1,x_center:.171875,y_center:.078125},{w:1,h:1,x_center:.171875,y_center:.078125},{w:1,h:1,x_center:.203125,y_center:.078125},{w:1,h:1,x_center:.203125,y_center:.078125},{w:1,h:1,x_center:.234375,y_center:.078125},{w:1,h:1,x_center:.234375,y_center:.078125},{w:1,h:1,x_center:.265625,y_center:.078125},{w:1,h:1,x_center:.265625,y_center:.078125},{w:1,h:1,x_center:.296875,y_center:.078125},{w:1,h:1,x_center:.296875,y_center:.078125},{w:1,h:1,x_center:.328125,y_center:.078125},{w:1,h:1,x_center:.328125,y_center:.078125},{w:1,h:1,x_center:.359375,y_center:.078125},{w:1,h:1,x_center:.359375,y_center:.078125},{w:1,h:1,x_center:.390625,y_center:.078125},{w:1,h:1,x_center:.390625,y_center:.078125},{w:1,h:1,x_center:.421875,y_center:.078125},{w:1,h:1,x_center:.421875,y_center:.078125},{w:1,h:1,x_center:.453125,y_center:.078125},{w:1,h:1,x_center:.453125,y_center:.078125},{w:1,h:1,x_center:.484375,y_center:.078125},{w:1,h:1,x_center:.484375,y_center:.078125},{w:1,h:1,x_center:.515625,y_center:.078125},{w:1,h:1,x_center:.515625,y_center:.078125},{w:1,h:1,x_center:.546875,y_center:.078125},{w:1,h:1,x_center:.546875,y_center:.078125},{w:1,h:1,x_center:.578125,y_center:.078125},{w:1,h:1,x_center:.578125,y_center:.078125},{w:1,h:1,x_center:.609375,y_center:.078125},{w:1,h:1,x_center:.609375,y_center:.078125},{w:1,h:1,x_center:.640625,y_center:.078125},{w:1,h:1,x_center:.640625,y_center:.078125},{w:1,h:1,x_center:.671875,y_center:.078125},{w:1,h:1,x_center:.671875,y_center:.078125},{w:1,h:1,x_center:.703125,y_center:.078125},{w:1,h:1,x_center:.703125,y_center:.078125},{w:1,h:1,x_center:.734375,y_center:.078125},{w:1,h:1,x_center:.734375,y_center:.078125},{w:1,h:1,x_center:.765625,y_center:.078125},{w:1,h:1,x_center:.765625,y_center:.078125},{w:1,h:1,x_center:.796875,y_center:.078125},{w:1,h:1,x_center:.796875,y_center:.078125},{w:1,h:1,x_center:.828125,y_center:.078125},{w:1,h:1,x_center:.828125,y_center:.078125},{w:1,h:1,x_center:.859375,y_center:.078125},{w:1,h:1,x_center:.859375,y_center:.078125},{w:1,h:1,x_center:.890625,y_center:.078125},{w:1,h:1,x_center:.890625,y_center:.078125},{w:1,h:1,x_center:.921875,y_center:.078125},{w:1,h:1,x_center:.921875,y_center:.078125},{w:1,h:1,x_center:.953125,y_center:.078125},{w:1,h:1,x_center:.953125,y_center:.078125},{w:1,h:1,x_center:.984375,y_center:.078125},{w:1,h:1,x_center:.984375,y_center:.078125},{w:1,h:1,x_center:.015625,y_center:.109375},{w:1,h:1,x_center:.015625,y_center:.109375},{w:1,h:1,x_center:.046875,y_center:.109375},{w:1,h:1,x_center:.046875,y_center:.109375},{w:1,h:1,x_center:.078125,y_center:.109375},{w:1,h:1,x_center:.078125,y_center:.109375},{w:1,h:1,x_center:.109375,y_center:.109375},{w:1,h:1,x_center:.109375,y_center:.109375},{w:1,h:1,x_center:.140625,y_center:.109375},{w:1,h:1,x_center:.140625,y_center:.109375},{w:1,h:1,x_center:.171875,y_center:.109375},{w:1,h:1,x_center:.171875,y_center:.109375},{w:1,h:1,x_center:.203125,y_center:.109375},{w:1,h:1,x_center:.203125,y_center:.109375},{w:1,h:1,x_center:.234375,y_center:.109375},{w:1,h:1,x_center:.234375,y_center:.109375},{w:1,h:1,x_center:.265625,y_center:.109375},{w:1,h:1,x_center:.265625,y_center:.109375},{w:1,h:1,x_center:.296875,y_center:.109375},{w:1,h:1,x_center:.296875,y_center:.109375},{w:1,h:1,x_center:.328125,y_center:.109375},{w:1,h:1,x_center:.328125,y_center:.109375},{w:1,h:1,x_center:.359375,y_center:.109375},{w:1,h:1,x_center:.359375,y_center:.109375},{w:1,h:1,x_center:.390625,y_center:.109375},{w:1,h:1,x_center:.390625,y_center:.109375},{w:1,h:1,x_center:.421875,y_center:.109375},{w:1,h:1,x_center:.421875,y_center:.109375},{w:1,h:1,x_center:.453125,y_center:.109375},{w:1,h:1,x_center:.453125,y_center:.109375},{w:1,h:1,x_center:.484375,y_center:.109375},{w:1,h:1,x_center:.484375,y_center:.109375},{w:1,h:1,x_center:.515625,y_center:.109375},{w:1,h:1,x_center:.515625,y_center:.109375},{w:1,h:1,x_center:.546875,y_center:.109375},{w:1,h:1,x_center:.546875,y_center:.109375},{w:1,h:1,x_center:.578125,y_center:.109375},{w:1,h:1,x_center:.578125,y_center:.109375},{w:1,h:1,x_center:.609375,y_center:.109375},{w:1,h:1,x_center:.609375,y_center:.109375},{w:1,h:1,x_center:.640625,y_center:.109375},{w:1,h:1,x_center:.640625,y_center:.109375},{w:1,h:1,x_center:.671875,y_center:.109375},{w:1,h:1,x_center:.671875,y_center:.109375},{w:1,h:1,x_center:.703125,y_center:.109375},{w:1,h:1,x_center:.703125,y_center:.109375},{w:1,h:1,x_center:.734375,y_center:.109375},{w:1,h:1,x_center:.734375,y_center:.109375},{w:1,h:1,x_center:.765625,y_center:.109375},{w:1,h:1,x_center:.765625,y_center:.109375},{w:1,h:1,x_center:.796875,y_center:.109375},{w:1,h:1,x_center:.796875,y_center:.109375},{w:1,h:1,x_center:.828125,y_center:.109375},{w:1,h:1,x_center:.828125,y_center:.109375},{w:1,h:1,x_center:.859375,y_center:.109375},{w:1,h:1,x_center:.859375,y_center:.109375},{w:1,h:1,x_center:.890625,y_center:.109375},{w:1,h:1,x_center:.890625,y_center:.109375},{w:1,h:1,x_center:.921875,y_center:.109375},{w:1,h:1,x_center:.921875,y_center:.109375},{w:1,h:1,x_center:.953125,y_center:.109375},{w:1,h:1,x_center:.953125,y_center:.109375},{w:1,h:1,x_center:.984375,y_center:.109375},{w:1,h:1,x_center:.984375,y_center:.109375},{w:1,h:1,x_center:.015625,y_center:.140625},{w:1,h:1,x_center:.015625,y_center:.140625},{w:1,h:1,x_center:.046875,y_center:.140625},{w:1,h:1,x_center:.046875,y_center:.140625},{w:1,h:1,x_center:.078125,y_center:.140625},{w:1,h:1,x_center:.078125,y_center:.140625},{w:1,h:1,x_center:.109375,y_center:.140625},{w:1,h:1,x_center:.109375,y_center:.140625},{w:1,h:1,x_center:.140625,y_center:.140625},{w:1,h:1,x_center:.140625,y_center:.140625},{w:1,h:1,x_center:.171875,y_center:.140625},{w:1,h:1,x_center:.171875,y_center:.140625},{w:1,h:1,x_center:.203125,y_center:.140625},{w:1,h:1,x_center:.203125,y_center:.140625},{w:1,h:1,x_center:.234375,y_center:.140625},{w:1,h:1,x_center:.234375,y_center:.140625},{w:1,h:1,x_center:.265625,y_center:.140625},{w:1,h:1,x_center:.265625,y_center:.140625},{w:1,h:1,x_center:.296875,y_center:.140625},{w:1,h:1,x_center:.296875,y_center:.140625},{w:1,h:1,x_center:.328125,y_center:.140625},{w:1,h:1,x_center:.328125,y_center:.140625},{w:1,h:1,x_center:.359375,y_center:.140625},{w:1,h:1,x_center:.359375,y_center:.140625},{w:1,h:1,x_center:.390625,y_center:.140625},{w:1,h:1,x_center:.390625,y_center:.140625},{w:1,h:1,x_center:.421875,y_center:.140625},{w:1,h:1,x_center:.421875,y_center:.140625},{w:1,h:1,x_center:.453125,y_center:.140625},{w:1,h:1,x_center:.453125,y_center:.140625},{w:1,h:1,x_center:.484375,y_center:.140625},{w:1,h:1,x_center:.484375,y_center:.140625},{w:1,h:1,x_center:.515625,y_center:.140625},{w:1,h:1,x_center:.515625,y_center:.140625},{w:1,h:1,x_center:.546875,y_center:.140625},{w:1,h:1,x_center:.546875,y_center:.140625},{w:1,h:1,x_center:.578125,y_center:.140625},{w:1,h:1,x_center:.578125,y_center:.140625},{w:1,h:1,x_center:.609375,y_center:.140625},{w:1,h:1,x_center:.609375,y_center:.140625},{w:1,h:1,x_center:.640625,y_center:.140625},{w:1,h:1,x_center:.640625,y_center:.140625},{w:1,h:1,x_center:.671875,y_center:.140625},{w:1,h:1,x_center:.671875,y_center:.140625},{w:1,h:1,x_center:.703125,y_center:.140625},{w:1,h:1,x_center:.703125,y_center:.140625},{w:1,h:1,x_center:.734375,y_center:.140625},{w:1,h:1,x_center:.734375,y_center:.140625},{w:1,h:1,x_center:.765625,y_center:.140625},{w:1,h:1,x_center:.765625,y_center:.140625},{w:1,h:1,x_center:.796875,y_center:.140625},{w:1,h:1,x_center:.796875,y_center:.140625},{w:1,h:1,x_center:.828125,y_center:.140625},{w:1,h:1,x_center:.828125,y_center:.140625},{w:1,h:1,x_center:.859375,y_center:.140625},{w:1,h:1,x_center:.859375,y_center:.140625},{w:1,h:1,x_center:.890625,y_center:.140625},{w:1,h:1,x_center:.890625,y_center:.140625},{w:1,h:1,x_center:.921875,y_center:.140625},{w:1,h:1,x_center:.921875,y_center:.140625},{w:1,h:1,x_center:.953125,y_center:.140625},{w:1,h:1,x_center:.953125,y_center:.140625},{w:1,h:1,x_center:.984375,y_center:.140625},{w:1,h:1,x_center:.984375,y_center:.140625},{w:1,h:1,x_center:.015625,y_center:.171875},{w:1,h:1,x_center:.015625,y_center:.171875},{w:1,h:1,x_center:.046875,y_center:.171875},{w:1,h:1,x_center:.046875,y_center:.171875},{w:1,h:1,x_center:.078125,y_center:.171875},{w:1,h:1,x_center:.078125,y_center:.171875},{w:1,h:1,x_center:.109375,y_center:.171875},{w:1,h:1,x_center:.109375,y_center:.171875},{w:1,h:1,x_center:.140625,y_center:.171875},{w:1,h:1,x_center:.140625,y_center:.171875},{w:1,h:1,x_center:.171875,y_center:.171875},{w:1,h:1,x_center:.171875,y_center:.171875},{w:1,h:1,x_center:.203125,y_center:.171875},{w:1,h:1,x_center:.203125,y_center:.171875},{w:1,h:1,x_center:.234375,y_center:.171875},{w:1,h:1,x_center:.234375,y_center:.171875},{w:1,h:1,x_center:.265625,y_center:.171875},{w:1,h:1,x_center:.265625,y_center:.171875},{w:1,h:1,x_center:.296875,y_center:.171875},{w:1,h:1,x_center:.296875,y_center:.171875},{w:1,h:1,x_center:.328125,y_center:.171875},{w:1,h:1,x_center:.328125,y_center:.171875},{w:1,h:1,x_center:.359375,y_center:.171875},{w:1,h:1,x_center:.359375,y_center:.171875},{w:1,h:1,x_center:.390625,y_center:.171875},{w:1,h:1,x_center:.390625,y_center:.171875},{w:1,h:1,x_center:.421875,y_center:.171875},{w:1,h:1,x_center:.421875,y_center:.171875},{w:1,h:1,x_center:.453125,y_center:.171875},{w:1,h:1,x_center:.453125,y_center:.171875},{w:1,h:1,x_center:.484375,y_center:.171875},{w:1,h:1,x_center:.484375,y_center:.171875},{w:1,h:1,x_center:.515625,y_center:.171875},{w:1,h:1,x_center:.515625,y_center:.171875},{w:1,h:1,x_center:.546875,y_center:.171875},{w:1,h:1,x_center:.546875,y_center:.171875},{w:1,h:1,x_center:.578125,y_center:.171875},{w:1,h:1,x_center:.578125,y_center:.171875},{w:1,h:1,x_center:.609375,y_center:.171875},{w:1,h:1,x_center:.609375,y_center:.171875},{w:1,h:1,x_center:.640625,y_center:.171875},{w:1,h:1,x_center:.640625,y_center:.171875},{w:1,h:1,x_center:.671875,y_center:.171875},{w:1,h:1,x_center:.671875,y_center:.171875},{w:1,h:1,x_center:.703125,y_center:.171875},{w:1,h:1,x_center:.703125,y_center:.171875},{w:1,h:1,x_center:.734375,y_center:.171875},{w:1,h:1,x_center:.734375,y_center:.171875},{w:1,h:1,x_center:.765625,y_center:.171875},{w:1,h:1,x_center:.765625,y_center:.171875},{w:1,h:1,x_center:.796875,y_center:.171875},{w:1,h:1,x_center:.796875,y_center:.171875},{w:1,h:1,x_center:.828125,y_center:.171875},{w:1,h:1,x_center:.828125,y_center:.171875},{w:1,h:1,x_center:.859375,y_center:.171875},{w:1,h:1,x_center:.859375,y_center:.171875},{w:1,h:1,x_center:.890625,y_center:.171875},{w:1,h:1,x_center:.890625,y_center:.171875},{w:1,h:1,x_center:.921875,y_center:.171875},{w:1,h:1,x_center:.921875,y_center:.171875},{w:1,h:1,x_center:.953125,y_center:.171875},{w:1,h:1,x_center:.953125,y_center:.171875},{w:1,h:1,x_center:.984375,y_center:.171875},{w:1,h:1,x_center:.984375,y_center:.171875},{w:1,h:1,x_center:.015625,y_center:.203125},{w:1,h:1,x_center:.015625,y_center:.203125},{w:1,h:1,x_center:.046875,y_center:.203125},{w:1,h:1,x_center:.046875,y_center:.203125},{w:1,h:1,x_center:.078125,y_center:.203125},{w:1,h:1,x_center:.078125,y_center:.203125},{w:1,h:1,x_center:.109375,y_center:.203125},{w:1,h:1,x_center:.109375,y_center:.203125},{w:1,h:1,x_center:.140625,y_center:.203125},{w:1,h:1,x_center:.140625,y_center:.203125},{w:1,h:1,x_center:.171875,y_center:.203125},{w:1,h:1,x_center:.171875,y_center:.203125},{w:1,h:1,x_center:.203125,y_center:.203125},{w:1,h:1,x_center:.203125,y_center:.203125},{w:1,h:1,x_center:.234375,y_center:.203125},{w:1,h:1,x_center:.234375,y_center:.203125},{w:1,h:1,x_center:.265625,y_center:.203125},{w:1,h:1,x_center:.265625,y_center:.203125},{w:1,h:1,x_center:.296875,y_center:.203125},{w:1,h:1,x_center:.296875,y_center:.203125},{w:1,h:1,x_center:.328125,y_center:.203125},{w:1,h:1,x_center:.328125,y_center:.203125},{w:1,h:1,x_center:.359375,y_center:.203125},{w:1,h:1,x_center:.359375,y_center:.203125},{w:1,h:1,x_center:.390625,y_center:.203125},{w:1,h:1,x_center:.390625,y_center:.203125},{w:1,h:1,x_center:.421875,y_center:.203125},{w:1,h:1,x_center:.421875,y_center:.203125},{w:1,h:1,x_center:.453125,y_center:.203125},{w:1,h:1,x_center:.453125,y_center:.203125},{w:1,h:1,x_center:.484375,y_center:.203125},{w:1,h:1,x_center:.484375,y_center:.203125},{w:1,h:1,x_center:.515625,y_center:.203125},{w:1,h:1,x_center:.515625,y_center:.203125},{w:1,h:1,x_center:.546875,y_center:.203125},{w:1,h:1,x_center:.546875,y_center:.203125},{w:1,h:1,x_center:.578125,y_center:.203125},{w:1,h:1,x_center:.578125,y_center:.203125},{w:1,h:1,x_center:.609375,y_center:.203125},{w:1,h:1,x_center:.609375,y_center:.203125},{w:1,h:1,x_center:.640625,y_center:.203125},{w:1,h:1,x_center:.640625,y_center:.203125},{w:1,h:1,x_center:.671875,y_center:.203125},{w:1,h:1,x_center:.671875,y_center:.203125},{w:1,h:1,x_center:.703125,y_center:.203125},{w:1,h:1,x_center:.703125,y_center:.203125},{w:1,h:1,x_center:.734375,y_center:.203125},{w:1,h:1,x_center:.734375,y_center:.203125},{w:1,h:1,x_center:.765625,y_center:.203125},{w:1,h:1,x_center:.765625,y_center:.203125},{w:1,h:1,x_center:.796875,y_center:.203125},{w:1,h:1,x_center:.796875,y_center:.203125},{w:1,h:1,x_center:.828125,y_center:.203125},{w:1,h:1,x_center:.828125,y_center:.203125},{w:1,h:1,x_center:.859375,y_center:.203125},{w:1,h:1,x_center:.859375,y_center:.203125},{w:1,h:1,x_center:.890625,y_center:.203125},{w:1,h:1,x_center:.890625,y_center:.203125},{w:1,h:1,x_center:.921875,y_center:.203125},{w:1,h:1,x_center:.921875,y_center:.203125},{w:1,h:1,x_center:.953125,y_center:.203125},{w:1,h:1,x_center:.953125,y_center:.203125},{w:1,h:1,x_center:.984375,y_center:.203125},{w:1,h:1,x_center:.984375,y_center:.203125},{w:1,h:1,x_center:.015625,y_center:.234375},{w:1,h:1,x_center:.015625,y_center:.234375},{w:1,h:1,x_center:.046875,y_center:.234375},{w:1,h:1,x_center:.046875,y_center:.234375},{w:1,h:1,x_center:.078125,y_center:.234375},{w:1,h:1,x_center:.078125,y_center:.234375},{w:1,h:1,x_center:.109375,y_center:.234375},{w:1,h:1,x_center:.109375,y_center:.234375},{w:1,h:1,x_center:.140625,y_center:.234375},{w:1,h:1,x_center:.140625,y_center:.234375},{w:1,h:1,x_center:.171875,y_center:.234375},{w:1,h:1,x_center:.171875,y_center:.234375},{w:1,h:1,x_center:.203125,y_center:.234375},{w:1,h:1,x_center:.203125,y_center:.234375},{w:1,h:1,x_center:.234375,y_center:.234375},{w:1,h:1,x_center:.234375,y_center:.234375},{w:1,h:1,x_center:.265625,y_center:.234375},{w:1,h:1,x_center:.265625,y_center:.234375},{w:1,h:1,x_center:.296875,y_center:.234375},{w:1,h:1,x_center:.296875,y_center:.234375},{w:1,h:1,x_center:.328125,y_center:.234375},{w:1,h:1,x_center:.328125,y_center:.234375},{w:1,h:1,x_center:.359375,y_center:.234375},{w:1,h:1,x_center:.359375,y_center:.234375},{w:1,h:1,x_center:.390625,y_center:.234375},{w:1,h:1,x_center:.390625,y_center:.234375},{w:1,h:1,x_center:.421875,y_center:.234375},{w:1,h:1,x_center:.421875,y_center:.234375},{w:1,h:1,x_center:.453125,y_center:.234375},{w:1,h:1,x_center:.453125,y_center:.234375},{w:1,h:1,x_center:.484375,y_center:.234375},{w:1,h:1,x_center:.484375,y_center:.234375},{w:1,h:1,x_center:.515625,y_center:.234375},{w:1,h:1,x_center:.515625,y_center:.234375},{w:1,h:1,x_center:.546875,y_center:.234375},{w:1,h:1,x_center:.546875,y_center:.234375},{w:1,h:1,x_center:.578125,y_center:.234375},{w:1,h:1,x_center:.578125,y_center:.234375},{w:1,h:1,x_center:.609375,y_center:.234375},{w:1,h:1,x_center:.609375,y_center:.234375},{w:1,h:1,x_center:.640625,y_center:.234375},{w:1,h:1,x_center:.640625,y_center:.234375},{w:1,h:1,x_center:.671875,y_center:.234375},{w:1,h:1,x_center:.671875,y_center:.234375},{w:1,h:1,x_center:.703125,y_center:.234375},{w:1,h:1,x_center:.703125,y_center:.234375},{w:1,h:1,x_center:.734375,y_center:.234375},{w:1,h:1,x_center:.734375,y_center:.234375},{w:1,h:1,x_center:.765625,y_center:.234375},{w:1,h:1,x_center:.765625,y_center:.234375},{w:1,h:1,x_center:.796875,y_center:.234375},{w:1,h:1,x_center:.796875,y_center:.234375},{w:1,h:1,x_center:.828125,y_center:.234375},{w:1,h:1,x_center:.828125,y_center:.234375},{w:1,h:1,x_center:.859375,y_center:.234375},{w:1,h:1,x_center:.859375,y_center:.234375},{w:1,h:1,x_center:.890625,y_center:.234375},{w:1,h:1,x_center:.890625,y_center:.234375},{w:1,h:1,x_center:.921875,y_center:.234375},{w:1,h:1,x_center:.921875,y_center:.234375},{w:1,h:1,x_center:.953125,y_center:.234375},{w:1,h:1,x_center:.953125,y_center:.234375},{w:1,h:1,x_center:.984375,y_center:.234375},{w:1,h:1,x_center:.984375,y_center:.234375},{w:1,h:1,x_center:.015625,y_center:.265625},{w:1,h:1,x_center:.015625,y_center:.265625},{w:1,h:1,x_center:.046875,y_center:.265625},{w:1,h:1,x_center:.046875,y_center:.265625},{w:1,h:1,x_center:.078125,y_center:.265625},{w:1,h:1,x_center:.078125,y_center:.265625},{w:1,h:1,x_center:.109375,y_center:.265625},{w:1,h:1,x_center:.109375,y_center:.265625},{w:1,h:1,x_center:.140625,y_center:.265625},{w:1,h:1,x_center:.140625,y_center:.265625},{w:1,h:1,x_center:.171875,y_center:.265625},{w:1,h:1,x_center:.171875,y_center:.265625},{w:1,h:1,x_center:.203125,y_center:.265625},{w:1,h:1,x_center:.203125,y_center:.265625},{w:1,h:1,x_center:.234375,y_center:.265625},{w:1,h:1,x_center:.234375,y_center:.265625},{w:1,h:1,x_center:.265625,y_center:.265625},{w:1,h:1,x_center:.265625,y_center:.265625},{w:1,h:1,x_center:.296875,y_center:.265625},{w:1,h:1,x_center:.296875,y_center:.265625},{w:1,h:1,x_center:.328125,y_center:.265625},{w:1,h:1,x_center:.328125,y_center:.265625},{w:1,h:1,x_center:.359375,y_center:.265625},{w:1,h:1,x_center:.359375,y_center:.265625},{w:1,h:1,x_center:.390625,y_center:.265625},{w:1,h:1,x_center:.390625,y_center:.265625},{w:1,h:1,x_center:.421875,y_center:.265625},{w:1,h:1,x_center:.421875,y_center:.265625},{w:1,h:1,x_center:.453125,y_center:.265625},{w:1,h:1,x_center:.453125,y_center:.265625},{w:1,h:1,x_center:.484375,y_center:.265625},{w:1,h:1,x_center:.484375,y_center:.265625},{w:1,h:1,x_center:.515625,y_center:.265625},{w:1,h:1,x_center:.515625,y_center:.265625},{w:1,h:1,x_center:.546875,y_center:.265625},{w:1,h:1,x_center:.546875,y_center:.265625},{w:1,h:1,x_center:.578125,y_center:.265625},{w:1,h:1,x_center:.578125,y_center:.265625},{w:1,h:1,x_center:.609375,y_center:.265625},{w:1,h:1,x_center:.609375,y_center:.265625},{w:1,h:1,x_center:.640625,y_center:.265625},{w:1,h:1,x_center:.640625,y_center:.265625},{w:1,h:1,x_center:.671875,y_center:.265625},{w:1,h:1,x_center:.671875,y_center:.265625},{w:1,h:1,x_center:.703125,y_center:.265625},{w:1,h:1,x_center:.703125,y_center:.265625},{w:1,h:1,x_center:.734375,y_center:.265625},{w:1,h:1,x_center:.734375,y_center:.265625},{w:1,h:1,x_center:.765625,y_center:.265625},{w:1,h:1,x_center:.765625,y_center:.265625},{w:1,h:1,x_center:.796875,y_center:.265625},{w:1,h:1,x_center:.796875,y_center:.265625},{w:1,h:1,x_center:.828125,y_center:.265625},{w:1,h:1,x_center:.828125,y_center:.265625},{w:1,h:1,x_center:.859375,y_center:.265625},{w:1,h:1,x_center:.859375,y_center:.265625},{w:1,h:1,x_center:.890625,y_center:.265625},{w:1,h:1,x_center:.890625,y_center:.265625},{w:1,h:1,x_center:.921875,y_center:.265625},{w:1,h:1,x_center:.921875,y_center:.265625},{w:1,h:1,x_center:.953125,y_center:.265625},{w:1,h:1,x_center:.953125,y_center:.265625},{w:1,h:1,x_center:.984375,y_center:.265625},{w:1,h:1,x_center:.984375,y_center:.265625},{w:1,h:1,x_center:.015625,y_center:.296875},{w:1,h:1,x_center:.015625,y_center:.296875},{w:1,h:1,x_center:.046875,y_center:.296875},{w:1,h:1,x_center:.046875,y_center:.296875},{w:1,h:1,x_center:.078125,y_center:.296875},{w:1,h:1,x_center:.078125,y_center:.296875},{w:1,h:1,x_center:.109375,y_center:.296875},{w:1,h:1,x_center:.109375,y_center:.296875},{w:1,h:1,x_center:.140625,y_center:.296875},{w:1,h:1,x_center:.140625,y_center:.296875},{w:1,h:1,x_center:.171875,y_center:.296875},{w:1,h:1,x_center:.171875,y_center:.296875},{w:1,h:1,x_center:.203125,y_center:.296875},{w:1,h:1,x_center:.203125,y_center:.296875},{w:1,h:1,x_center:.234375,y_center:.296875},{w:1,h:1,x_center:.234375,y_center:.296875},{w:1,h:1,x_center:.265625,y_center:.296875},{w:1,h:1,x_center:.265625,y_center:.296875},{w:1,h:1,x_center:.296875,y_center:.296875},{w:1,h:1,x_center:.296875,y_center:.296875},{w:1,h:1,x_center:.328125,y_center:.296875},{w:1,h:1,x_center:.328125,y_center:.296875},{w:1,h:1,x_center:.359375,y_center:.296875},{w:1,h:1,x_center:.359375,y_center:.296875},{w:1,h:1,x_center:.390625,y_center:.296875},{w:1,h:1,x_center:.390625,y_center:.296875},{w:1,h:1,x_center:.421875,y_center:.296875},{w:1,h:1,x_center:.421875,y_center:.296875},{w:1,h:1,x_center:.453125,y_center:.296875},{w:1,h:1,x_center:.453125,y_center:.296875},{w:1,h:1,x_center:.484375,y_center:.296875},{w:1,h:1,x_center:.484375,y_center:.296875},{w:1,h:1,x_center:.515625,y_center:.296875},{w:1,h:1,x_center:.515625,y_center:.296875},{w:1,h:1,x_center:.546875,y_center:.296875},{w:1,h:1,x_center:.546875,y_center:.296875},{w:1,h:1,x_center:.578125,y_center:.296875},{w:1,h:1,x_center:.578125,y_center:.296875},{w:1,h:1,x_center:.609375,y_center:.296875},{w:1,h:1,x_center:.609375,y_center:.296875},{w:1,h:1,x_center:.640625,y_center:.296875},{w:1,h:1,x_center:.640625,y_center:.296875},{w:1,h:1,x_center:.671875,y_center:.296875},{w:1,h:1,x_center:.671875,y_center:.296875},{w:1,h:1,x_center:.703125,y_center:.296875},{w:1,h:1,x_center:.703125,y_center:.296875},{w:1,h:1,x_center:.734375,y_center:.296875},{w:1,h:1,x_center:.734375,y_center:.296875},{w:1,h:1,x_center:.765625,y_center:.296875},{w:1,h:1,x_center:.765625,y_center:.296875},{w:1,h:1,x_center:.796875,y_center:.296875},{w:1,h:1,x_center:.796875,y_center:.296875},{w:1,h:1,x_center:.828125,y_center:.296875},{w:1,h:1,x_center:.828125,y_center:.296875},{w:1,h:1,x_center:.859375,y_center:.296875},{w:1,h:1,x_center:.859375,y_center:.296875},{w:1,h:1,x_center:.890625,y_center:.296875},{w:1,h:1,x_center:.890625,y_center:.296875},{w:1,h:1,x_center:.921875,y_center:.296875},{w:1,h:1,x_center:.921875,y_center:.296875},{w:1,h:1,x_center:.953125,y_center:.296875},{w:1,h:1,x_center:.953125,y_center:.296875},{w:1,h:1,x_center:.984375,y_center:.296875},{w:1,h:1,x_center:.984375,y_center:.296875},{w:1,h:1,x_center:.015625,y_center:.328125},{w:1,h:1,x_center:.015625,y_center:.328125},{w:1,h:1,x_center:.046875,y_center:.328125},{w:1,h:1,x_center:.046875,y_center:.328125},{w:1,h:1,x_center:.078125,y_center:.328125},{w:1,h:1,x_center:.078125,y_center:.328125},{w:1,h:1,x_center:.109375,y_center:.328125},{w:1,h:1,x_center:.109375,y_center:.328125},{w:1,h:1,x_center:.140625,y_center:.328125},{w:1,h:1,x_center:.140625,y_center:.328125},{w:1,h:1,x_center:.171875,y_center:.328125},{w:1,h:1,x_center:.171875,y_center:.328125},{w:1,h:1,x_center:.203125,y_center:.328125},{w:1,h:1,x_center:.203125,y_center:.328125},{w:1,h:1,x_center:.234375,y_center:.328125},{w:1,h:1,x_center:.234375,y_center:.328125},{w:1,h:1,x_center:.265625,y_center:.328125},{w:1,h:1,x_center:.265625,y_center:.328125},{w:1,h:1,x_center:.296875,y_center:.328125},{w:1,h:1,x_center:.296875,y_center:.328125},{w:1,h:1,x_center:.328125,y_center:.328125},{w:1,h:1,x_center:.328125,y_center:.328125},{w:1,h:1,x_center:.359375,y_center:.328125},{w:1,h:1,x_center:.359375,y_center:.328125},{w:1,h:1,x_center:.390625,y_center:.328125},{w:1,h:1,x_center:.390625,y_center:.328125},{w:1,h:1,x_center:.421875,y_center:.328125},{w:1,h:1,x_center:.421875,y_center:.328125},{w:1,h:1,x_center:.453125,y_center:.328125},{w:1,h:1,x_center:.453125,y_center:.328125},{w:1,h:1,x_center:.484375,y_center:.328125},{w:1,h:1,x_center:.484375,y_center:.328125},{w:1,h:1,x_center:.515625,y_center:.328125},{w:1,h:1,x_center:.515625,y_center:.328125},{w:1,h:1,x_center:.546875,y_center:.328125},{w:1,h:1,x_center:.546875,y_center:.328125},{w:1,h:1,x_center:.578125,y_center:.328125},{w:1,h:1,x_center:.578125,y_center:.328125},{w:1,h:1,x_center:.609375,y_center:.328125},{w:1,h:1,x_center:.609375,y_center:.328125},{w:1,h:1,x_center:.640625,y_center:.328125},{w:1,h:1,x_center:.640625,y_center:.328125},{w:1,h:1,x_center:.671875,y_center:.328125},{w:1,h:1,x_center:.671875,y_center:.328125},{w:1,h:1,x_center:.703125,y_center:.328125},{w:1,h:1,x_center:.703125,y_center:.328125},{w:1,h:1,x_center:.734375,y_center:.328125},{w:1,h:1,x_center:.734375,y_center:.328125},{w:1,h:1,x_center:.765625,y_center:.328125},{w:1,h:1,x_center:.765625,y_center:.328125},{w:1,h:1,x_center:.796875,y_center:.328125},{w:1,h:1,x_center:.796875,y_center:.328125},{w:1,h:1,x_center:.828125,y_center:.328125},{w:1,h:1,x_center:.828125,y_center:.328125},{w:1,h:1,x_center:.859375,y_center:.328125},{w:1,h:1,x_center:.859375,y_center:.328125},{w:1,h:1,x_center:.890625,y_center:.328125},{w:1,h:1,x_center:.890625,y_center:.328125},{w:1,h:1,x_center:.921875,y_center:.328125},{w:1,h:1,x_center:.921875,y_center:.328125},{w:1,h:1,x_center:.953125,y_center:.328125},{w:1,h:1,x_center:.953125,y_center:.328125},{w:1,h:1,x_center:.984375,y_center:.328125},{w:1,h:1,x_center:.984375,y_center:.328125},{w:1,h:1,x_center:.015625,y_center:.359375},{w:1,h:1,x_center:.015625,y_center:.359375},{w:1,h:1,x_center:.046875,y_center:.359375},{w:1,h:1,x_center:.046875,y_center:.359375},{w:1,h:1,x_center:.078125,y_center:.359375},{w:1,h:1,x_center:.078125,y_center:.359375},{w:1,h:1,x_center:.109375,y_center:.359375},{w:1,h:1,x_center:.109375,y_center:.359375},{w:1,h:1,x_center:.140625,y_center:.359375},{w:1,h:1,x_center:.140625,y_center:.359375},{w:1,h:1,x_center:.171875,y_center:.359375},{w:1,h:1,x_center:.171875,y_center:.359375},{w:1,h:1,x_center:.203125,y_center:.359375},{w:1,h:1,x_center:.203125,y_center:.359375},{w:1,h:1,x_center:.234375,y_center:.359375},{w:1,h:1,x_center:.234375,y_center:.359375},{w:1,h:1,x_center:.265625,y_center:.359375},{w:1,h:1,x_center:.265625,y_center:.359375},{w:1,h:1,x_center:.296875,y_center:.359375},{w:1,h:1,x_center:.296875,y_center:.359375},{w:1,h:1,x_center:.328125,y_center:.359375},{w:1,h:1,x_center:.328125,y_center:.359375},{w:1,h:1,x_center:.359375,y_center:.359375},{w:1,h:1,x_center:.359375,y_center:.359375},{w:1,h:1,x_center:.390625,y_center:.359375},{w:1,h:1,x_center:.390625,y_center:.359375},{w:1,h:1,x_center:.421875,y_center:.359375},{w:1,h:1,x_center:.421875,y_center:.359375},{w:1,h:1,x_center:.453125,y_center:.359375},{w:1,h:1,x_center:.453125,y_center:.359375},{w:1,h:1,x_center:.484375,y_center:.359375},{w:1,h:1,x_center:.484375,y_center:.359375},{w:1,h:1,x_center:.515625,y_center:.359375},{w:1,h:1,x_center:.515625,y_center:.359375},{w:1,h:1,x_center:.546875,y_center:.359375},{w:1,h:1,x_center:.546875,y_center:.359375},{w:1,h:1,x_center:.578125,y_center:.359375},{w:1,h:1,x_center:.578125,y_center:.359375},{w:1,h:1,x_center:.609375,y_center:.359375},{w:1,h:1,x_center:.609375,y_center:.359375},{w:1,h:1,x_center:.640625,y_center:.359375},{w:1,h:1,x_center:.640625,y_center:.359375},{w:1,h:1,x_center:.671875,y_center:.359375},{w:1,h:1,x_center:.671875,y_center:.359375},{w:1,h:1,x_center:.703125,y_center:.359375},{w:1,h:1,x_center:.703125,y_center:.359375},{w:1,h:1,x_center:.734375,y_center:.359375},{w:1,h:1,x_center:.734375,y_center:.359375},{w:1,h:1,x_center:.765625,y_center:.359375},{w:1,h:1,x_center:.765625,y_center:.359375},{w:1,h:1,x_center:.796875,y_center:.359375},{w:1,h:1,x_center:.796875,y_center:.359375},{w:1,h:1,x_center:.828125,y_center:.359375},{w:1,h:1,x_center:.828125,y_center:.359375},{w:1,h:1,x_center:.859375,y_center:.359375},{w:1,h:1,x_center:.859375,y_center:.359375},{w:1,h:1,x_center:.890625,y_center:.359375},{w:1,h:1,x_center:.890625,y_center:.359375},{w:1,h:1,x_center:.921875,y_center:.359375},{w:1,h:1,x_center:.921875,y_center:.359375},{w:1,h:1,x_center:.953125,y_center:.359375},{w:1,h:1,x_center:.953125,y_center:.359375},{w:1,h:1,x_center:.984375,y_center:.359375},{w:1,h:1,x_center:.984375,y_center:.359375},{w:1,h:1,x_center:.015625,y_center:.390625},{w:1,h:1,x_center:.015625,y_center:.390625},{w:1,h:1,x_center:.046875,y_center:.390625},{w:1,h:1,x_center:.046875,y_center:.390625},{w:1,h:1,x_center:.078125,y_center:.390625},{w:1,h:1,x_center:.078125,y_center:.390625},{w:1,h:1,x_center:.109375,y_center:.390625},{w:1,h:1,x_center:.109375,y_center:.390625},{w:1,h:1,x_center:.140625,y_center:.390625},{w:1,h:1,x_center:.140625,y_center:.390625},{w:1,h:1,x_center:.171875,y_center:.390625},{w:1,h:1,x_center:.171875,y_center:.390625},{w:1,h:1,x_center:.203125,y_center:.390625},{w:1,h:1,x_center:.203125,y_center:.390625},{w:1,h:1,x_center:.234375,y_center:.390625},{w:1,h:1,x_center:.234375,y_center:.390625},{w:1,h:1,x_center:.265625,y_center:.390625},{w:1,h:1,x_center:.265625,y_center:.390625},{w:1,h:1,x_center:.296875,y_center:.390625},{w:1,h:1,x_center:.296875,y_center:.390625},{w:1,h:1,x_center:.328125,y_center:.390625},{w:1,h:1,x_center:.328125,y_center:.390625},{w:1,h:1,x_center:.359375,y_center:.390625},{w:1,h:1,x_center:.359375,y_center:.390625},{w:1,h:1,x_center:.390625,y_center:.390625},{w:1,h:1,x_center:.390625,y_center:.390625},{w:1,h:1,x_center:.421875,y_center:.390625},{w:1,h:1,x_center:.421875,y_center:.390625},{w:1,h:1,x_center:.453125,y_center:.390625},{w:1,h:1,x_center:.453125,y_center:.390625},{w:1,h:1,x_center:.484375,y_center:.390625},{w:1,h:1,x_center:.484375,y_center:.390625},{w:1,h:1,x_center:.515625,y_center:.390625},{w:1,h:1,x_center:.515625,y_center:.390625},{w:1,h:1,x_center:.546875,y_center:.390625},{w:1,h:1,x_center:.546875,y_center:.390625},{w:1,h:1,x_center:.578125,y_center:.390625},{w:1,h:1,x_center:.578125,y_center:.390625},{w:1,h:1,x_center:.609375,y_center:.390625},{w:1,h:1,x_center:.609375,y_center:.390625},{w:1,h:1,x_center:.640625,y_center:.390625},{w:1,h:1,x_center:.640625,y_center:.390625},{w:1,h:1,x_center:.671875,y_center:.390625},{w:1,h:1,x_center:.671875,y_center:.390625},{w:1,h:1,x_center:.703125,y_center:.390625},{w:1,h:1,x_center:.703125,y_center:.390625},{w:1,h:1,x_center:.734375,y_center:.390625},{w:1,h:1,x_center:.734375,y_center:.390625},{w:1,h:1,x_center:.765625,y_center:.390625},{w:1,h:1,x_center:.765625,y_center:.390625},{w:1,h:1,x_center:.796875,y_center:.390625},{w:1,h:1,x_center:.796875,y_center:.390625},{w:1,h:1,x_center:.828125,y_center:.390625},{w:1,h:1,x_center:.828125,y_center:.390625},{w:1,h:1,x_center:.859375,y_center:.390625},{w:1,h:1,x_center:.859375,y_center:.390625},{w:1,h:1,x_center:.890625,y_center:.390625},{w:1,h:1,x_center:.890625,y_center:.390625},{w:1,h:1,x_center:.921875,y_center:.390625},{w:1,h:1,x_center:.921875,y_center:.390625},{w:1,h:1,x_center:.953125,y_center:.390625},{w:1,h:1,x_center:.953125,y_center:.390625},{w:1,h:1,x_center:.984375,y_center:.390625},{w:1,h:1,x_center:.984375,y_center:.390625},{w:1,h:1,x_center:.015625,y_center:.421875},{w:1,h:1,x_center:.015625,y_center:.421875},{w:1,h:1,x_center:.046875,y_center:.421875},{w:1,h:1,x_center:.046875,y_center:.421875},{w:1,h:1,x_center:.078125,y_center:.421875},{w:1,h:1,x_center:.078125,y_center:.421875},{w:1,h:1,x_center:.109375,y_center:.421875},{w:1,h:1,x_center:.109375,y_center:.421875},{w:1,h:1,x_center:.140625,y_center:.421875},{w:1,h:1,x_center:.140625,y_center:.421875},{w:1,h:1,x_center:.171875,y_center:.421875},{w:1,h:1,x_center:.171875,y_center:.421875},{w:1,h:1,x_center:.203125,y_center:.421875},{w:1,h:1,x_center:.203125,y_center:.421875},{w:1,h:1,x_center:.234375,y_center:.421875},{w:1,h:1,x_center:.234375,y_center:.421875},{w:1,h:1,x_center:.265625,y_center:.421875},{w:1,h:1,x_center:.265625,y_center:.421875},{w:1,h:1,x_center:.296875,y_center:.421875},{w:1,h:1,x_center:.296875,y_center:.421875},{w:1,h:1,x_center:.328125,y_center:.421875},{w:1,h:1,x_center:.328125,y_center:.421875},{w:1,h:1,x_center:.359375,y_center:.421875},{w:1,h:1,x_center:.359375,y_center:.421875},{w:1,h:1,x_center:.390625,y_center:.421875},{w:1,h:1,x_center:.390625,y_center:.421875},{w:1,h:1,x_center:.421875,y_center:.421875},{w:1,h:1,x_center:.421875,y_center:.421875},{w:1,h:1,x_center:.453125,y_center:.421875},{w:1,h:1,x_center:.453125,y_center:.421875},{w:1,h:1,x_center:.484375,y_center:.421875},{w:1,h:1,x_center:.484375,y_center:.421875},{w:1,h:1,x_center:.515625,y_center:.421875},{w:1,h:1,x_center:.515625,y_center:.421875},{w:1,h:1,x_center:.546875,y_center:.421875},{w:1,h:1,x_center:.546875,y_center:.421875},{w:1,h:1,x_center:.578125,y_center:.421875},{w:1,h:1,x_center:.578125,y_center:.421875},{w:1,h:1,x_center:.609375,y_center:.421875},{w:1,h:1,x_center:.609375,y_center:.421875},{w:1,h:1,x_center:.640625,y_center:.421875},{w:1,h:1,x_center:.640625,y_center:.421875},{w:1,h:1,x_center:.671875,y_center:.421875},{w:1,h:1,x_center:.671875,y_center:.421875},{w:1,h:1,x_center:.703125,y_center:.421875},{w:1,h:1,x_center:.703125,y_center:.421875},{w:1,h:1,x_center:.734375,y_center:.421875},{w:1,h:1,x_center:.734375,y_center:.421875},{w:1,h:1,x_center:.765625,y_center:.421875},{w:1,h:1,x_center:.765625,y_center:.421875},{w:1,h:1,x_center:.796875,y_center:.421875},{w:1,h:1,x_center:.796875,y_center:.421875},{w:1,h:1,x_center:.828125,y_center:.421875},{w:1,h:1,x_center:.828125,y_center:.421875},{w:1,h:1,x_center:.859375,y_center:.421875},{w:1,h:1,x_center:.859375,y_center:.421875},{w:1,h:1,x_center:.890625,y_center:.421875},{w:1,h:1,x_center:.890625,y_center:.421875},{w:1,h:1,x_center:.921875,y_center:.421875},{w:1,h:1,x_center:.921875,y_center:.421875},{w:1,h:1,x_center:.953125,y_center:.421875},{w:1,h:1,x_center:.953125,y_center:.421875},{w:1,h:1,x_center:.984375,y_center:.421875},{w:1,h:1,x_center:.984375,y_center:.421875},{w:1,h:1,x_center:.015625,y_center:.453125},{w:1,h:1,x_center:.015625,y_center:.453125},{w:1,h:1,x_center:.046875,y_center:.453125},{w:1,h:1,x_center:.046875,y_center:.453125},{w:1,h:1,x_center:.078125,y_center:.453125},{w:1,h:1,x_center:.078125,y_center:.453125},{w:1,h:1,x_center:.109375,y_center:.453125},{w:1,h:1,x_center:.109375,y_center:.453125},{w:1,h:1,x_center:.140625,y_center:.453125},{w:1,h:1,x_center:.140625,y_center:.453125},{w:1,h:1,x_center:.171875,y_center:.453125},{w:1,h:1,x_center:.171875,y_center:.453125},{w:1,h:1,x_center:.203125,y_center:.453125},{w:1,h:1,x_center:.203125,y_center:.453125},{w:1,h:1,x_center:.234375,y_center:.453125},{w:1,h:1,x_center:.234375,y_center:.453125},{w:1,h:1,x_center:.265625,y_center:.453125},{w:1,h:1,x_center:.265625,y_center:.453125},{w:1,h:1,x_center:.296875,y_center:.453125},{w:1,h:1,x_center:.296875,y_center:.453125},{w:1,h:1,x_center:.328125,y_center:.453125},{w:1,h:1,x_center:.328125,y_center:.453125},{w:1,h:1,x_center:.359375,y_center:.453125},{w:1,h:1,x_center:.359375,y_center:.453125},{w:1,h:1,x_center:.390625,y_center:.453125},{w:1,h:1,x_center:.390625,y_center:.453125},{w:1,h:1,x_center:.421875,y_center:.453125},{w:1,h:1,x_center:.421875,y_center:.453125},{w:1,h:1,x_center:.453125,y_center:.453125},{w:1,h:1,x_center:.453125,y_center:.453125},{w:1,h:1,x_center:.484375,y_center:.453125},{w:1,h:1,x_center:.484375,y_center:.453125},{w:1,h:1,x_center:.515625,y_center:.453125},{w:1,h:1,x_center:.515625,y_center:.453125},{w:1,h:1,x_center:.546875,y_center:.453125},{w:1,h:1,x_center:.546875,y_center:.453125},{w:1,h:1,x_center:.578125,y_center:.453125},{w:1,h:1,x_center:.578125,y_center:.453125},{w:1,h:1,x_center:.609375,y_center:.453125},{w:1,h:1,x_center:.609375,y_center:.453125},{w:1,h:1,x_center:.640625,y_center:.453125},{w:1,h:1,x_center:.640625,y_center:.453125},{w:1,h:1,x_center:.671875,y_center:.453125},{w:1,h:1,x_center:.671875,y_center:.453125},{w:1,h:1,x_center:.703125,y_center:.453125},{w:1,h:1,x_center:.703125,y_center:.453125},{w:1,h:1,x_center:.734375,y_center:.453125},{w:1,h:1,x_center:.734375,y_center:.453125},{w:1,h:1,x_center:.765625,y_center:.453125},{w:1,h:1,x_center:.765625,y_center:.453125},{w:1,h:1,x_center:.796875,y_center:.453125},{w:1,h:1,x_center:.796875,y_center:.453125},{w:1,h:1,x_center:.828125,y_center:.453125},{w:1,h:1,x_center:.828125,y_center:.453125},{w:1,h:1,x_center:.859375,y_center:.453125},{w:1,h:1,x_center:.859375,y_center:.453125},{w:1,h:1,x_center:.890625,y_center:.453125},{w:1,h:1,x_center:.890625,y_center:.453125},{w:1,h:1,x_center:.921875,y_center:.453125},{w:1,h:1,x_center:.921875,y_center:.453125},{w:1,h:1,x_center:.953125,y_center:.453125},{w:1,h:1,x_center:.953125,y_center:.453125},{w:1,h:1,x_center:.984375,y_center:.453125},{w:1,h:1,x_center:.984375,y_center:.453125},{w:1,h:1,x_center:.015625,y_center:.484375},{w:1,h:1,x_center:.015625,y_center:.484375},{w:1,h:1,x_center:.046875,y_center:.484375},{w:1,h:1,x_center:.046875,y_center:.484375},{w:1,h:1,x_center:.078125,y_center:.484375},{w:1,h:1,x_center:.078125,y_center:.484375},{w:1,h:1,x_center:.109375,y_center:.484375},{w:1,h:1,x_center:.109375,y_center:.484375},{w:1,h:1,x_center:.140625,y_center:.484375},{w:1,h:1,x_center:.140625,y_center:.484375},{w:1,h:1,x_center:.171875,y_center:.484375},{w:1,h:1,x_center:.171875,y_center:.484375},{w:1,h:1,x_center:.203125,y_center:.484375},{w:1,h:1,x_center:.203125,y_center:.484375},{w:1,h:1,x_center:.234375,y_center:.484375},{w:1,h:1,x_center:.234375,y_center:.484375},{w:1,h:1,x_center:.265625,y_center:.484375},{w:1,h:1,x_center:.265625,y_center:.484375},{w:1,h:1,x_center:.296875,y_center:.484375},{w:1,h:1,x_center:.296875,y_center:.484375},{w:1,h:1,x_center:.328125,y_center:.484375},{w:1,h:1,x_center:.328125,y_center:.484375},{w:1,h:1,x_center:.359375,y_center:.484375},{w:1,h:1,x_center:.359375,y_center:.484375},{w:1,h:1,x_center:.390625,y_center:.484375},{w:1,h:1,x_center:.390625,y_center:.484375},{w:1,h:1,x_center:.421875,y_center:.484375},{w:1,h:1,x_center:.421875,y_center:.484375},{w:1,h:1,x_center:.453125,y_center:.484375},{w:1,h:1,x_center:.453125,y_center:.484375},{w:1,h:1,x_center:.484375,y_center:.484375},{w:1,h:1,x_center:.484375,y_center:.484375},{w:1,h:1,x_center:.515625,y_center:.484375},{w:1,h:1,x_center:.515625,y_center:.484375},{w:1,h:1,x_center:.546875,y_center:.484375},{w:1,h:1,x_center:.546875,y_center:.484375},{w:1,h:1,x_center:.578125,y_center:.484375},{w:1,h:1,x_center:.578125,y_center:.484375},{w:1,h:1,x_center:.609375,y_center:.484375},{w:1,h:1,x_center:.609375,y_center:.484375},{w:1,h:1,x_center:.640625,y_center:.484375},{w:1,h:1,x_center:.640625,y_center:.484375},{w:1,h:1,x_center:.671875,y_center:.484375},{w:1,h:1,x_center:.671875,y_center:.484375},{w:1,h:1,x_center:.703125,y_center:.484375},{w:1,h:1,x_center:.703125,y_center:.484375},{w:1,h:1,x_center:.734375,y_center:.484375},{w:1,h:1,x_center:.734375,y_center:.484375},{w:1,h:1,x_center:.765625,y_center:.484375},{w:1,h:1,x_center:.765625,y_center:.484375},{w:1,h:1,x_center:.796875,y_center:.484375},{w:1,h:1,x_center:.796875,y_center:.484375},{w:1,h:1,x_center:.828125,y_center:.484375},{w:1,h:1,x_center:.828125,y_center:.484375},{w:1,h:1,x_center:.859375,y_center:.484375},{w:1,h:1,x_center:.859375,y_center:.484375},{w:1,h:1,x_center:.890625,y_center:.484375},{w:1,h:1,x_center:.890625,y_center:.484375},{w:1,h:1,x_center:.921875,y_center:.484375},{w:1,h:1,x_center:.921875,y_center:.484375},{w:1,h:1,x_center:.953125,y_center:.484375},{w:1,h:1,x_center:.953125,y_center:.484375},{w:1,h:1,x_center:.984375,y_center:.484375},{w:1,h:1,x_center:.984375,y_center:.484375},{w:1,h:1,x_center:.015625,y_center:.515625},{w:1,h:1,x_center:.015625,y_center:.515625},{w:1,h:1,x_center:.046875,y_center:.515625},{w:1,h:1,x_center:.046875,y_center:.515625},{w:1,h:1,x_center:.078125,y_center:.515625},{w:1,h:1,x_center:.078125,y_center:.515625},{w:1,h:1,x_center:.109375,y_center:.515625},{w:1,h:1,x_center:.109375,y_center:.515625},{w:1,h:1,x_center:.140625,y_center:.515625},{w:1,h:1,x_center:.140625,y_center:.515625},{w:1,h:1,x_center:.171875,y_center:.515625},{w:1,h:1,x_center:.171875,y_center:.515625},{w:1,h:1,x_center:.203125,y_center:.515625},{w:1,h:1,x_center:.203125,y_center:.515625},{w:1,h:1,x_center:.234375,y_center:.515625},{w:1,h:1,x_center:.234375,y_center:.515625},{w:1,h:1,x_center:.265625,y_center:.515625},{w:1,h:1,x_center:.265625,y_center:.515625},{w:1,h:1,x_center:.296875,y_center:.515625},{w:1,h:1,x_center:.296875,y_center:.515625},{w:1,h:1,x_center:.328125,y_center:.515625},{w:1,h:1,x_center:.328125,y_center:.515625},{w:1,h:1,x_center:.359375,y_center:.515625},{w:1,h:1,x_center:.359375,y_center:.515625},{w:1,h:1,x_center:.390625,y_center:.515625},{w:1,h:1,x_center:.390625,y_center:.515625},{w:1,h:1,x_center:.421875,y_center:.515625},{w:1,h:1,x_center:.421875,y_center:.515625},{w:1,h:1,x_center:.453125,y_center:.515625},{w:1,h:1,x_center:.453125,y_center:.515625},{w:1,h:1,x_center:.484375,y_center:.515625},{w:1,h:1,x_center:.484375,y_center:.515625},{w:1,h:1,x_center:.515625,y_center:.515625},{w:1,h:1,x_center:.515625,y_center:.515625},{w:1,h:1,x_center:.546875,y_center:.515625},{w:1,h:1,x_center:.546875,y_center:.515625},{w:1,h:1,x_center:.578125,y_center:.515625},{w:1,h:1,x_center:.578125,y_center:.515625},{w:1,h:1,x_center:.609375,y_center:.515625},{w:1,h:1,x_center:.609375,y_center:.515625},{w:1,h:1,x_center:.640625,y_center:.515625},{w:1,h:1,x_center:.640625,y_center:.515625},{w:1,h:1,x_center:.671875,y_center:.515625},{w:1,h:1,x_center:.671875,y_center:.515625},{w:1,h:1,x_center:.703125,y_center:.515625},{w:1,h:1,x_center:.703125,y_center:.515625},{w:1,h:1,x_center:.734375,y_center:.515625},{w:1,h:1,x_center:.734375,y_center:.515625},{w:1,h:1,x_center:.765625,y_center:.515625},{w:1,h:1,x_center:.765625,y_center:.515625},{w:1,h:1,x_center:.796875,y_center:.515625},{w:1,h:1,x_center:.796875,y_center:.515625},{w:1,h:1,x_center:.828125,y_center:.515625},{w:1,h:1,x_center:.828125,y_center:.515625},{w:1,h:1,x_center:.859375,y_center:.515625},{w:1,h:1,x_center:.859375,y_center:.515625},{w:1,h:1,x_center:.890625,y_center:.515625},{w:1,h:1,x_center:.890625,y_center:.515625},{w:1,h:1,x_center:.921875,y_center:.515625},{w:1,h:1,x_center:.921875,y_center:.515625},{w:1,h:1,x_center:.953125,y_center:.515625},{w:1,h:1,x_center:.953125,y_center:.515625},{w:1,h:1,x_center:.984375,y_center:.515625},{w:1,h:1,x_center:.984375,y_center:.515625},{w:1,h:1,x_center:.015625,y_center:.546875},{w:1,h:1,x_center:.015625,y_center:.546875},{w:1,h:1,x_center:.046875,y_center:.546875},{w:1,h:1,x_center:.046875,y_center:.546875},{w:1,h:1,x_center:.078125,y_center:.546875},{w:1,h:1,x_center:.078125,y_center:.546875},{w:1,h:1,x_center:.109375,y_center:.546875},{w:1,h:1,x_center:.109375,y_center:.546875},{w:1,h:1,x_center:.140625,y_center:.546875},{w:1,h:1,x_center:.140625,y_center:.546875},{w:1,h:1,x_center:.171875,y_center:.546875},{w:1,h:1,x_center:.171875,y_center:.546875},{w:1,h:1,x_center:.203125,y_center:.546875},{w:1,h:1,x_center:.203125,y_center:.546875},{w:1,h:1,x_center:.234375,y_center:.546875},{w:1,h:1,x_center:.234375,y_center:.546875},{w:1,h:1,x_center:.265625,y_center:.546875},{w:1,h:1,x_center:.265625,y_center:.546875},{w:1,h:1,x_center:.296875,y_center:.546875},{w:1,h:1,x_center:.296875,y_center:.546875},{w:1,h:1,x_center:.328125,y_center:.546875},{w:1,h:1,x_center:.328125,y_center:.546875},{w:1,h:1,x_center:.359375,y_center:.546875},{w:1,h:1,x_center:.359375,y_center:.546875},{w:1,h:1,x_center:.390625,y_center:.546875},{w:1,h:1,x_center:.390625,y_center:.546875},{w:1,h:1,x_center:.421875,y_center:.546875},{w:1,h:1,x_center:.421875,y_center:.546875},{w:1,h:1,x_center:.453125,y_center:.546875},{w:1,h:1,x_center:.453125,y_center:.546875},{w:1,h:1,x_center:.484375,y_center:.546875},{w:1,h:1,x_center:.484375,y_center:.546875},{w:1,h:1,x_center:.515625,y_center:.546875},{w:1,h:1,x_center:.515625,y_center:.546875},{w:1,h:1,x_center:.546875,y_center:.546875},{w:1,h:1,x_center:.546875,y_center:.546875},{w:1,h:1,x_center:.578125,y_center:.546875},{w:1,h:1,x_center:.578125,y_center:.546875},{w:1,h:1,x_center:.609375,y_center:.546875},{w:1,h:1,x_center:.609375,y_center:.546875},{w:1,h:1,x_center:.640625,y_center:.546875},{w:1,h:1,x_center:.640625,y_center:.546875},{w:1,h:1,x_center:.671875,y_center:.546875},{w:1,h:1,x_center:.671875,y_center:.546875},{w:1,h:1,x_center:.703125,y_center:.546875},{w:1,h:1,x_center:.703125,y_center:.546875},{w:1,h:1,x_center:.734375,y_center:.546875},{w:1,h:1,x_center:.734375,y_center:.546875},{w:1,h:1,x_center:.765625,y_center:.546875},{w:1,h:1,x_center:.765625,y_center:.546875},{w:1,h:1,x_center:.796875,y_center:.546875},{w:1,h:1,x_center:.796875,y_center:.546875},{w:1,h:1,x_center:.828125,y_center:.546875},{w:1,h:1,x_center:.828125,y_center:.546875},{w:1,h:1,x_center:.859375,y_center:.546875},{w:1,h:1,x_center:.859375,y_center:.546875},{w:1,h:1,x_center:.890625,y_center:.546875},{w:1,h:1,x_center:.890625,y_center:.546875},{w:1,h:1,x_center:.921875,y_center:.546875},{w:1,h:1,x_center:.921875,y_center:.546875},{w:1,h:1,x_center:.953125,y_center:.546875},{w:1,h:1,x_center:.953125,y_center:.546875},{w:1,h:1,x_center:.984375,y_center:.546875},{w:1,h:1,x_center:.984375,y_center:.546875},{w:1,h:1,x_center:.015625,y_center:.578125},{w:1,h:1,x_center:.015625,y_center:.578125},{w:1,h:1,x_center:.046875,y_center:.578125},{w:1,h:1,x_center:.046875,y_center:.578125},{w:1,h:1,x_center:.078125,y_center:.578125},{w:1,h:1,x_center:.078125,y_center:.578125},{w:1,h:1,x_center:.109375,y_center:.578125},{w:1,h:1,x_center:.109375,y_center:.578125},{w:1,h:1,x_center:.140625,y_center:.578125},{w:1,h:1,x_center:.140625,y_center:.578125},{w:1,h:1,x_center:.171875,y_center:.578125},{w:1,h:1,x_center:.171875,y_center:.578125},{w:1,h:1,x_center:.203125,y_center:.578125},{w:1,h:1,x_center:.203125,y_center:.578125},{w:1,h:1,x_center:.234375,y_center:.578125},{w:1,h:1,x_center:.234375,y_center:.578125},{w:1,h:1,x_center:.265625,y_center:.578125},{w:1,h:1,x_center:.265625,y_center:.578125},{w:1,h:1,x_center:.296875,y_center:.578125},{w:1,h:1,x_center:.296875,y_center:.578125},{w:1,h:1,x_center:.328125,y_center:.578125},{w:1,h:1,x_center:.328125,y_center:.578125},{w:1,h:1,x_center:.359375,y_center:.578125},{w:1,h:1,x_center:.359375,y_center:.578125},{w:1,h:1,x_center:.390625,y_center:.578125},{w:1,h:1,x_center:.390625,y_center:.578125},{w:1,h:1,x_center:.421875,y_center:.578125},{w:1,h:1,x_center:.421875,y_center:.578125},{w:1,h:1,x_center:.453125,y_center:.578125},{w:1,h:1,x_center:.453125,y_center:.578125},{w:1,h:1,x_center:.484375,y_center:.578125},{w:1,h:1,x_center:.484375,y_center:.578125},{w:1,h:1,x_center:.515625,y_center:.578125},{w:1,h:1,x_center:.515625,y_center:.578125},{w:1,h:1,x_center:.546875,y_center:.578125},{w:1,h:1,x_center:.546875,y_center:.578125},{w:1,h:1,x_center:.578125,y_center:.578125},{w:1,h:1,x_center:.578125,y_center:.578125},{w:1,h:1,x_center:.609375,y_center:.578125},{w:1,h:1,x_center:.609375,y_center:.578125},{w:1,h:1,x_center:.640625,y_center:.578125},{w:1,h:1,x_center:.640625,y_center:.578125},{w:1,h:1,x_center:.671875,y_center:.578125},{w:1,h:1,x_center:.671875,y_center:.578125},{w:1,h:1,x_center:.703125,y_center:.578125},{w:1,h:1,x_center:.703125,y_center:.578125},{w:1,h:1,x_center:.734375,y_center:.578125},{w:1,h:1,x_center:.734375,y_center:.578125},{w:1,h:1,x_center:.765625,y_center:.578125},{w:1,h:1,x_center:.765625,y_center:.578125},{w:1,h:1,x_center:.796875,y_center:.578125},{w:1,h:1,x_center:.796875,y_center:.578125},{w:1,h:1,x_center:.828125,y_center:.578125},{w:1,h:1,x_center:.828125,y_center:.578125},{w:1,h:1,x_center:.859375,y_center:.578125},{w:1,h:1,x_center:.859375,y_center:.578125},{w:1,h:1,x_center:.890625,y_center:.578125},{w:1,h:1,x_center:.890625,y_center:.578125},{w:1,h:1,x_center:.921875,y_center:.578125},{w:1,h:1,x_center:.921875,y_center:.578125},{w:1,h:1,x_center:.953125,y_center:.578125},{w:1,h:1,x_center:.953125,y_center:.578125},{w:1,h:1,x_center:.984375,y_center:.578125},{w:1,h:1,x_center:.984375,y_center:.578125},{w:1,h:1,x_center:.015625,y_center:.609375},{w:1,h:1,x_center:.015625,y_center:.609375},{w:1,h:1,x_center:.046875,y_center:.609375},{w:1,h:1,x_center:.046875,y_center:.609375},{w:1,h:1,x_center:.078125,y_center:.609375},{w:1,h:1,x_center:.078125,y_center:.609375},{w:1,h:1,x_center:.109375,y_center:.609375},{w:1,h:1,x_center:.109375,y_center:.609375},{w:1,h:1,x_center:.140625,y_center:.609375},{w:1,h:1,x_center:.140625,y_center:.609375},{w:1,h:1,x_center:.171875,y_center:.609375},{w:1,h:1,x_center:.171875,y_center:.609375},{w:1,h:1,x_center:.203125,y_center:.609375},{w:1,h:1,x_center:.203125,y_center:.609375},{w:1,h:1,x_center:.234375,y_center:.609375},{w:1,h:1,x_center:.234375,y_center:.609375},{w:1,h:1,x_center:.265625,y_center:.609375},{w:1,h:1,x_center:.265625,y_center:.609375},{w:1,h:1,x_center:.296875,y_center:.609375},{w:1,h:1,x_center:.296875,y_center:.609375},{w:1,h:1,x_center:.328125,y_center:.609375},{w:1,h:1,x_center:.328125,y_center:.609375},{w:1,h:1,x_center:.359375,y_center:.609375},{w:1,h:1,x_center:.359375,y_center:.609375},{w:1,h:1,x_center:.390625,y_center:.609375},{w:1,h:1,x_center:.390625,y_center:.609375},{w:1,h:1,x_center:.421875,y_center:.609375},{w:1,h:1,x_center:.421875,y_center:.609375},{w:1,h:1,x_center:.453125,y_center:.609375},{w:1,h:1,x_center:.453125,y_center:.609375},{w:1,h:1,x_center:.484375,y_center:.609375},{w:1,h:1,x_center:.484375,y_center:.609375},{w:1,h:1,x_center:.515625,y_center:.609375},{w:1,h:1,x_center:.515625,y_center:.609375},{w:1,h:1,x_center:.546875,y_center:.609375},{w:1,h:1,x_center:.546875,y_center:.609375},{w:1,h:1,x_center:.578125,y_center:.609375},{w:1,h:1,x_center:.578125,y_center:.609375},{w:1,h:1,x_center:.609375,y_center:.609375},{w:1,h:1,x_center:.609375,y_center:.609375},{w:1,h:1,x_center:.640625,y_center:.609375},{w:1,h:1,x_center:.640625,y_center:.609375},{w:1,h:1,x_center:.671875,y_center:.609375},{w:1,h:1,x_center:.671875,y_center:.609375},{w:1,h:1,x_center:.703125,y_center:.609375},{w:1,h:1,x_center:.703125,y_center:.609375},{w:1,h:1,x_center:.734375,y_center:.609375},{w:1,h:1,x_center:.734375,y_center:.609375},{w:1,h:1,x_center:.765625,y_center:.609375},{w:1,h:1,x_center:.765625,y_center:.609375},{w:1,h:1,x_center:.796875,y_center:.609375},{w:1,h:1,x_center:.796875,y_center:.609375},{w:1,h:1,x_center:.828125,y_center:.609375},{w:1,h:1,x_center:.828125,y_center:.609375},{w:1,h:1,x_center:.859375,y_center:.609375},{w:1,h:1,x_center:.859375,y_center:.609375},{w:1,h:1,x_center:.890625,y_center:.609375},{w:1,h:1,x_center:.890625,y_center:.609375},{w:1,h:1,x_center:.921875,y_center:.609375},{w:1,h:1,x_center:.921875,y_center:.609375},{w:1,h:1,x_center:.953125,y_center:.609375},{w:1,h:1,x_center:.953125,y_center:.609375},{w:1,h:1,x_center:.984375,y_center:.609375},{w:1,h:1,x_center:.984375,y_center:.609375},{w:1,h:1,x_center:.015625,y_center:.640625},{w:1,h:1,x_center:.015625,y_center:.640625},{w:1,h:1,x_center:.046875,y_center:.640625},{w:1,h:1,x_center:.046875,y_center:.640625},{w:1,h:1,x_center:.078125,y_center:.640625},{w:1,h:1,x_center:.078125,y_center:.640625},{w:1,h:1,x_center:.109375,y_center:.640625},{w:1,h:1,x_center:.109375,y_center:.640625},{w:1,h:1,x_center:.140625,y_center:.640625},{w:1,h:1,x_center:.140625,y_center:.640625},{w:1,h:1,x_center:.171875,y_center:.640625},{w:1,h:1,x_center:.171875,y_center:.640625},{w:1,h:1,x_center:.203125,y_center:.640625},{w:1,h:1,x_center:.203125,y_center:.640625},{w:1,h:1,x_center:.234375,y_center:.640625},{w:1,h:1,x_center:.234375,y_center:.640625},{w:1,h:1,x_center:.265625,y_center:.640625},{w:1,h:1,x_center:.265625,y_center:.640625},{w:1,h:1,x_center:.296875,y_center:.640625},{w:1,h:1,x_center:.296875,y_center:.640625},{w:1,h:1,x_center:.328125,y_center:.640625},{w:1,h:1,x_center:.328125,y_center:.640625},{w:1,h:1,x_center:.359375,y_center:.640625},{w:1,h:1,x_center:.359375,y_center:.640625},{w:1,h:1,x_center:.390625,y_center:.640625},{w:1,h:1,x_center:.390625,y_center:.640625},{w:1,h:1,x_center:.421875,y_center:.640625},{w:1,h:1,x_center:.421875,y_center:.640625},{w:1,h:1,x_center:.453125,y_center:.640625},{w:1,h:1,x_center:.453125,y_center:.640625},{w:1,h:1,x_center:.484375,y_center:.640625},{w:1,h:1,x_center:.484375,y_center:.640625},{w:1,h:1,x_center:.515625,y_center:.640625},{w:1,h:1,x_center:.515625,y_center:.640625},{w:1,h:1,x_center:.546875,y_center:.640625},{w:1,h:1,x_center:.546875,y_center:.640625},{w:1,h:1,x_center:.578125,y_center:.640625},{w:1,h:1,x_center:.578125,y_center:.640625},{w:1,h:1,x_center:.609375,y_center:.640625},{w:1,h:1,x_center:.609375,y_center:.640625},{w:1,h:1,x_center:.640625,y_center:.640625},{w:1,h:1,x_center:.640625,y_center:.640625},{w:1,h:1,x_center:.671875,y_center:.640625},{w:1,h:1,x_center:.671875,y_center:.640625},{w:1,h:1,x_center:.703125,y_center:.640625},{w:1,h:1,x_center:.703125,y_center:.640625},{w:1,h:1,x_center:.734375,y_center:.640625},{w:1,h:1,x_center:.734375,y_center:.640625},{w:1,h:1,x_center:.765625,y_center:.640625},{w:1,h:1,x_center:.765625,y_center:.640625},{w:1,h:1,x_center:.796875,y_center:.640625},{w:1,h:1,x_center:.796875,y_center:.640625},{w:1,h:1,x_center:.828125,y_center:.640625},{w:1,h:1,x_center:.828125,y_center:.640625},{w:1,h:1,x_center:.859375,y_center:.640625},{w:1,h:1,x_center:.859375,y_center:.640625},{w:1,h:1,x_center:.890625,y_center:.640625},{w:1,h:1,x_center:.890625,y_center:.640625},{w:1,h:1,x_center:.921875,y_center:.640625},{w:1,h:1,x_center:.921875,y_center:.640625},{w:1,h:1,x_center:.953125,y_center:.640625},{w:1,h:1,x_center:.953125,y_center:.640625},{w:1,h:1,x_center:.984375,y_center:.640625},{w:1,h:1,x_center:.984375,y_center:.640625},{w:1,h:1,x_center:.015625,y_center:.671875},{w:1,h:1,x_center:.015625,y_center:.671875},{w:1,h:1,x_center:.046875,y_center:.671875},{w:1,h:1,x_center:.046875,y_center:.671875},{w:1,h:1,x_center:.078125,y_center:.671875},{w:1,h:1,x_center:.078125,y_center:.671875},{w:1,h:1,x_center:.109375,y_center:.671875},{w:1,h:1,x_center:.109375,y_center:.671875},{w:1,h:1,x_center:.140625,y_center:.671875},{w:1,h:1,x_center:.140625,y_center:.671875},{w:1,h:1,x_center:.171875,y_center:.671875},{w:1,h:1,x_center:.171875,y_center:.671875},{w:1,h:1,x_center:.203125,y_center:.671875},{w:1,h:1,x_center:.203125,y_center:.671875},{w:1,h:1,x_center:.234375,y_center:.671875},{w:1,h:1,x_center:.234375,y_center:.671875},{w:1,h:1,x_center:.265625,y_center:.671875},{w:1,h:1,x_center:.265625,y_center:.671875},{w:1,h:1,x_center:.296875,y_center:.671875},{w:1,h:1,x_center:.296875,y_center:.671875},{w:1,h:1,x_center:.328125,y_center:.671875},{w:1,h:1,x_center:.328125,y_center:.671875},{w:1,h:1,x_center:.359375,y_center:.671875},{w:1,h:1,x_center:.359375,y_center:.671875},{w:1,h:1,x_center:.390625,y_center:.671875},{w:1,h:1,x_center:.390625,y_center:.671875},{w:1,h:1,x_center:.421875,y_center:.671875},{w:1,h:1,x_center:.421875,y_center:.671875},{w:1,h:1,x_center:.453125,y_center:.671875},{w:1,h:1,x_center:.453125,y_center:.671875},{w:1,h:1,x_center:.484375,y_center:.671875},{w:1,h:1,x_center:.484375,y_center:.671875},{w:1,h:1,x_center:.515625,y_center:.671875},{w:1,h:1,x_center:.515625,y_center:.671875},{w:1,h:1,x_center:.546875,y_center:.671875},{w:1,h:1,x_center:.546875,y_center:.671875},{w:1,h:1,x_center:.578125,y_center:.671875},{w:1,h:1,x_center:.578125,y_center:.671875},{w:1,h:1,x_center:.609375,y_center:.671875},{w:1,h:1,x_center:.609375,y_center:.671875},{w:1,h:1,x_center:.640625,y_center:.671875},{w:1,h:1,x_center:.640625,y_center:.671875},{w:1,h:1,x_center:.671875,y_center:.671875},{w:1,h:1,x_center:.671875,y_center:.671875},{w:1,h:1,x_center:.703125,y_center:.671875},{w:1,h:1,x_center:.703125,y_center:.671875},{w:1,h:1,x_center:.734375,y_center:.671875},{w:1,h:1,x_center:.734375,y_center:.671875},{w:1,h:1,x_center:.765625,y_center:.671875},{w:1,h:1,x_center:.765625,y_center:.671875},{w:1,h:1,x_center:.796875,y_center:.671875},{w:1,h:1,x_center:.796875,y_center:.671875},{w:1,h:1,x_center:.828125,y_center:.671875},{w:1,h:1,x_center:.828125,y_center:.671875},{w:1,h:1,x_center:.859375,y_center:.671875},{w:1,h:1,x_center:.859375,y_center:.671875},{w:1,h:1,x_center:.890625,y_center:.671875},{w:1,h:1,x_center:.890625,y_center:.671875},{w:1,h:1,x_center:.921875,y_center:.671875},{w:1,h:1,x_center:.921875,y_center:.671875},{w:1,h:1,x_center:.953125,y_center:.671875},{w:1,h:1,x_center:.953125,y_center:.671875},{w:1,h:1,x_center:.984375,y_center:.671875},{w:1,h:1,x_center:.984375,y_center:.671875},{w:1,h:1,x_center:.015625,y_center:.703125},{w:1,h:1,x_center:.015625,y_center:.703125},{w:1,h:1,x_center:.046875,y_center:.703125},{w:1,h:1,x_center:.046875,y_center:.703125},{w:1,h:1,x_center:.078125,y_center:.703125},{w:1,h:1,x_center:.078125,y_center:.703125},{w:1,h:1,x_center:.109375,y_center:.703125},{w:1,h:1,x_center:.109375,y_center:.703125},{w:1,h:1,x_center:.140625,y_center:.703125},{w:1,h:1,x_center:.140625,y_center:.703125},{w:1,h:1,x_center:.171875,y_center:.703125},{w:1,h:1,x_center:.171875,y_center:.703125},{w:1,h:1,x_center:.203125,y_center:.703125},{w:1,h:1,x_center:.203125,y_center:.703125},{w:1,h:1,x_center:.234375,y_center:.703125},{w:1,h:1,x_center:.234375,y_center:.703125},{w:1,h:1,x_center:.265625,y_center:.703125},{w:1,h:1,x_center:.265625,y_center:.703125},{w:1,h:1,x_center:.296875,y_center:.703125},{w:1,h:1,x_center:.296875,y_center:.703125},{w:1,h:1,x_center:.328125,y_center:.703125},{w:1,h:1,x_center:.328125,y_center:.703125},{w:1,h:1,x_center:.359375,y_center:.703125},{w:1,h:1,x_center:.359375,y_center:.703125},{w:1,h:1,x_center:.390625,y_center:.703125},{w:1,h:1,x_center:.390625,y_center:.703125},{w:1,h:1,x_center:.421875,y_center:.703125},{w:1,h:1,x_center:.421875,y_center:.703125},{w:1,h:1,x_center:.453125,y_center:.703125},{w:1,h:1,x_center:.453125,y_center:.703125},{w:1,h:1,x_center:.484375,y_center:.703125},{w:1,h:1,x_center:.484375,y_center:.703125},{w:1,h:1,x_center:.515625,y_center:.703125},{w:1,h:1,x_center:.515625,y_center:.703125},{w:1,h:1,x_center:.546875,y_center:.703125},{w:1,h:1,x_center:.546875,y_center:.703125},{w:1,h:1,x_center:.578125,y_center:.703125},{w:1,h:1,x_center:.578125,y_center:.703125},{w:1,h:1,x_center:.609375,y_center:.703125},{w:1,h:1,x_center:.609375,y_center:.703125},{w:1,h:1,x_center:.640625,y_center:.703125},{w:1,h:1,x_center:.640625,y_center:.703125},{w:1,h:1,x_center:.671875,y_center:.703125},{w:1,h:1,x_center:.671875,y_center:.703125},{w:1,h:1,x_center:.703125,y_center:.703125},{w:1,h:1,x_center:.703125,y_center:.703125},{w:1,h:1,x_center:.734375,y_center:.703125},{w:1,h:1,x_center:.734375,y_center:.703125},{w:1,h:1,x_center:.765625,y_center:.703125},{w:1,h:1,x_center:.765625,y_center:.703125},{w:1,h:1,x_center:.796875,y_center:.703125},{w:1,h:1,x_center:.796875,y_center:.703125},{w:1,h:1,x_center:.828125,y_center:.703125},{w:1,h:1,x_center:.828125,y_center:.703125},{w:1,h:1,x_center:.859375,y_center:.703125},{w:1,h:1,x_center:.859375,y_center:.703125},{w:1,h:1,x_center:.890625,y_center:.703125},{w:1,h:1,x_center:.890625,y_center:.703125},{w:1,h:1,x_center:.921875,y_center:.703125},{w:1,h:1,x_center:.921875,y_center:.703125},{w:1,h:1,x_center:.953125,y_center:.703125},{w:1,h:1,x_center:.953125,y_center:.703125},{w:1,h:1,x_center:.984375,y_center:.703125},{w:1,h:1,x_center:.984375,y_center:.703125},{w:1,h:1,x_center:.015625,y_center:.734375},{w:1,h:1,x_center:.015625,y_center:.734375},{w:1,h:1,x_center:.046875,y_center:.734375},{w:1,h:1,x_center:.046875,y_center:.734375},{w:1,h:1,x_center:.078125,y_center:.734375},{w:1,h:1,x_center:.078125,y_center:.734375},{w:1,h:1,x_center:.109375,y_center:.734375},{w:1,h:1,x_center:.109375,y_center:.734375},{w:1,h:1,x_center:.140625,y_center:.734375},{w:1,h:1,x_center:.140625,y_center:.734375},{w:1,h:1,x_center:.171875,y_center:.734375},{w:1,h:1,x_center:.171875,y_center:.734375},{w:1,h:1,x_center:.203125,y_center:.734375},{w:1,h:1,x_center:.203125,y_center:.734375},{w:1,h:1,x_center:.234375,y_center:.734375},{w:1,h:1,x_center:.234375,y_center:.734375},{w:1,h:1,x_center:.265625,y_center:.734375},{w:1,h:1,x_center:.265625,y_center:.734375},{w:1,h:1,x_center:.296875,y_center:.734375},{w:1,h:1,x_center:.296875,y_center:.734375},{w:1,h:1,x_center:.328125,y_center:.734375},{w:1,h:1,x_center:.328125,y_center:.734375},{w:1,h:1,x_center:.359375,y_center:.734375},{w:1,h:1,x_center:.359375,y_center:.734375},{w:1,h:1,x_center:.390625,y_center:.734375},{w:1,h:1,x_center:.390625,y_center:.734375},{w:1,h:1,x_center:.421875,y_center:.734375},{w:1,h:1,x_center:.421875,y_center:.734375},{w:1,h:1,x_center:.453125,y_center:.734375},{w:1,h:1,x_center:.453125,y_center:.734375},{w:1,h:1,x_center:.484375,y_center:.734375},{w:1,h:1,x_center:.484375,y_center:.734375},{w:1,h:1,x_center:.515625,y_center:.734375},{w:1,h:1,x_center:.515625,y_center:.734375},{w:1,h:1,x_center:.546875,y_center:.734375},{w:1,h:1,x_center:.546875,y_center:.734375},{w:1,h:1,x_center:.578125,y_center:.734375},{w:1,h:1,x_center:.578125,y_center:.734375},{w:1,h:1,x_center:.609375,y_center:.734375},{w:1,h:1,x_center:.609375,y_center:.734375},{w:1,h:1,x_center:.640625,y_center:.734375},{w:1,h:1,x_center:.640625,y_center:.734375},{w:1,h:1,x_center:.671875,y_center:.734375},{w:1,h:1,x_center:.671875,y_center:.734375},{w:1,h:1,x_center:.703125,y_center:.734375},{w:1,h:1,x_center:.703125,y_center:.734375},{w:1,h:1,x_center:.734375,y_center:.734375},{w:1,h:1,x_center:.734375,y_center:.734375},{w:1,h:1,x_center:.765625,y_center:.734375},{w:1,h:1,x_center:.765625,y_center:.734375},{w:1,h:1,x_center:.796875,y_center:.734375},{w:1,h:1,x_center:.796875,y_center:.734375},{w:1,h:1,x_center:.828125,y_center:.734375},{w:1,h:1,x_center:.828125,y_center:.734375},{w:1,h:1,x_center:.859375,y_center:.734375},{w:1,h:1,x_center:.859375,y_center:.734375},{w:1,h:1,x_center:.890625,y_center:.734375},{w:1,h:1,x_center:.890625,y_center:.734375},{w:1,h:1,x_center:.921875,y_center:.734375},{w:1,h:1,x_center:.921875,y_center:.734375},{w:1,h:1,x_center:.953125,y_center:.734375},{w:1,h:1,x_center:.953125,y_center:.734375},{w:1,h:1,x_center:.984375,y_center:.734375},{w:1,h:1,x_center:.984375,y_center:.734375},{w:1,h:1,x_center:.015625,y_center:.765625},{w:1,h:1,x_center:.015625,y_center:.765625},{w:1,h:1,x_center:.046875,y_center:.765625},{w:1,h:1,x_center:.046875,y_center:.765625},{w:1,h:1,x_center:.078125,y_center:.765625},{w:1,h:1,x_center:.078125,y_center:.765625},{w:1,h:1,x_center:.109375,y_center:.765625},{w:1,h:1,x_center:.109375,y_center:.765625},{w:1,h:1,x_center:.140625,y_center:.765625},{w:1,h:1,x_center:.140625,y_center:.765625},{w:1,h:1,x_center:.171875,y_center:.765625},{w:1,h:1,x_center:.171875,y_center:.765625},{w:1,h:1,x_center:.203125,y_center:.765625},{w:1,h:1,x_center:.203125,y_center:.765625},{w:1,h:1,x_center:.234375,y_center:.765625},{w:1,h:1,x_center:.234375,y_center:.765625},{w:1,h:1,x_center:.265625,y_center:.765625},{w:1,h:1,x_center:.265625,y_center:.765625},{w:1,h:1,x_center:.296875,y_center:.765625},{w:1,h:1,x_center:.296875,y_center:.765625},{w:1,h:1,x_center:.328125,y_center:.765625},{w:1,h:1,x_center:.328125,y_center:.765625},{w:1,h:1,x_center:.359375,y_center:.765625},{w:1,h:1,x_center:.359375,y_center:.765625},{w:1,h:1,x_center:.390625,y_center:.765625},{w:1,h:1,x_center:.390625,y_center:.765625},{w:1,h:1,x_center:.421875,y_center:.765625},{w:1,h:1,x_center:.421875,y_center:.765625},{w:1,h:1,x_center:.453125,y_center:.765625},{w:1,h:1,x_center:.453125,y_center:.765625},{w:1,h:1,x_center:.484375,y_center:.765625},{w:1,h:1,x_center:.484375,y_center:.765625},{w:1,h:1,x_center:.515625,y_center:.765625},{w:1,h:1,x_center:.515625,y_center:.765625},{w:1,h:1,x_center:.546875,y_center:.765625},{w:1,h:1,x_center:.546875,y_center:.765625},{w:1,h:1,x_center:.578125,y_center:.765625},{w:1,h:1,x_center:.578125,y_center:.765625},{w:1,h:1,x_center:.609375,y_center:.765625},{w:1,h:1,x_center:.609375,y_center:.765625},{w:1,h:1,x_center:.640625,y_center:.765625},{w:1,h:1,x_center:.640625,y_center:.765625},{w:1,h:1,x_center:.671875,y_center:.765625},{w:1,h:1,x_center:.671875,y_center:.765625},{w:1,h:1,x_center:.703125,y_center:.765625},{w:1,h:1,x_center:.703125,y_center:.765625},{w:1,h:1,x_center:.734375,y_center:.765625},{w:1,h:1,x_center:.734375,y_center:.765625},{w:1,h:1,x_center:.765625,y_center:.765625},{w:1,h:1,x_center:.765625,y_center:.765625},{w:1,h:1,x_center:.796875,y_center:.765625},{w:1,h:1,x_center:.796875,y_center:.765625},{w:1,h:1,x_center:.828125,y_center:.765625},{w:1,h:1,x_center:.828125,y_center:.765625},{w:1,h:1,x_center:.859375,y_center:.765625},{w:1,h:1,x_center:.859375,y_center:.765625},{w:1,h:1,x_center:.890625,y_center:.765625},{w:1,h:1,x_center:.890625,y_center:.765625},{w:1,h:1,x_center:.921875,y_center:.765625},{w:1,h:1,x_center:.921875,y_center:.765625},{w:1,h:1,x_center:.953125,y_center:.765625},{w:1,h:1,x_center:.953125,y_center:.765625},{w:1,h:1,x_center:.984375,y_center:.765625},{w:1,h:1,x_center:.984375,y_center:.765625},{w:1,h:1,x_center:.015625,y_center:.796875},{w:1,h:1,x_center:.015625,y_center:.796875},{w:1,h:1,x_center:.046875,y_center:.796875},{w:1,h:1,x_center:.046875,y_center:.796875},{w:1,h:1,x_center:.078125,y_center:.796875},{w:1,h:1,x_center:.078125,y_center:.796875},{w:1,h:1,x_center:.109375,y_center:.796875},{w:1,h:1,x_center:.109375,y_center:.796875},{w:1,h:1,x_center:.140625,y_center:.796875},{w:1,h:1,x_center:.140625,y_center:.796875},{w:1,h:1,x_center:.171875,y_center:.796875},{w:1,h:1,x_center:.171875,y_center:.796875},{w:1,h:1,x_center:.203125,y_center:.796875},{w:1,h:1,x_center:.203125,y_center:.796875},{w:1,h:1,x_center:.234375,y_center:.796875},{w:1,h:1,x_center:.234375,y_center:.796875},{w:1,h:1,x_center:.265625,y_center:.796875},{w:1,h:1,x_center:.265625,y_center:.796875},{w:1,h:1,x_center:.296875,y_center:.796875},{w:1,h:1,x_center:.296875,y_center:.796875},{w:1,h:1,x_center:.328125,y_center:.796875},{w:1,h:1,x_center:.328125,y_center:.796875},{w:1,h:1,x_center:.359375,y_center:.796875},{w:1,h:1,x_center:.359375,y_center:.796875},{w:1,h:1,x_center:.390625,y_center:.796875},{w:1,h:1,x_center:.390625,y_center:.796875},{w:1,h:1,x_center:.421875,y_center:.796875},{w:1,h:1,x_center:.421875,y_center:.796875},{w:1,h:1,x_center:.453125,y_center:.796875},{w:1,h:1,x_center:.453125,y_center:.796875},{w:1,h:1,x_center:.484375,y_center:.796875},{w:1,h:1,x_center:.484375,y_center:.796875},{w:1,h:1,x_center:.515625,y_center:.796875},{w:1,h:1,x_center:.515625,y_center:.796875},{w:1,h:1,x_center:.546875,y_center:.796875},{w:1,h:1,x_center:.546875,y_center:.796875},{w:1,h:1,x_center:.578125,y_center:.796875},{w:1,h:1,x_center:.578125,y_center:.796875},{w:1,h:1,x_center:.609375,y_center:.796875},{w:1,h:1,x_center:.609375,y_center:.796875},{w:1,h:1,x_center:.640625,y_center:.796875},{w:1,h:1,x_center:.640625,y_center:.796875},{w:1,h:1,x_center:.671875,y_center:.796875},{w:1,h:1,x_center:.671875,y_center:.796875},{w:1,h:1,x_center:.703125,y_center:.796875},{w:1,h:1,x_center:.703125,y_center:.796875},{w:1,h:1,x_center:.734375,y_center:.796875},{w:1,h:1,x_center:.734375,y_center:.796875},{w:1,h:1,x_center:.765625,y_center:.796875},{w:1,h:1,x_center:.765625,y_center:.796875},{w:1,h:1,x_center:.796875,y_center:.796875},{w:1,h:1,x_center:.796875,y_center:.796875},{w:1,h:1,x_center:.828125,y_center:.796875},{w:1,h:1,x_center:.828125,y_center:.796875},{w:1,h:1,x_center:.859375,y_center:.796875},{w:1,h:1,x_center:.859375,y_center:.796875},{w:1,h:1,x_center:.890625,y_center:.796875},{w:1,h:1,x_center:.890625,y_center:.796875},{w:1,h:1,x_center:.921875,y_center:.796875},{w:1,h:1,x_center:.921875,y_center:.796875},{w:1,h:1,x_center:.953125,y_center:.796875},{w:1,h:1,x_center:.953125,y_center:.796875},{w:1,h:1,x_center:.984375,y_center:.796875},{w:1,h:1,x_center:.984375,y_center:.796875},{w:1,h:1,x_center:.015625,y_center:.828125},{w:1,h:1,x_center:.015625,y_center:.828125},{w:1,h:1,x_center:.046875,y_center:.828125},{w:1,h:1,x_center:.046875,y_center:.828125},{w:1,h:1,x_center:.078125,y_center:.828125},{w:1,h:1,x_center:.078125,y_center:.828125},{w:1,h:1,x_center:.109375,y_center:.828125},{w:1,h:1,x_center:.109375,y_center:.828125},{w:1,h:1,x_center:.140625,y_center:.828125},{w:1,h:1,x_center:.140625,y_center:.828125},{w:1,h:1,x_center:.171875,y_center:.828125},{w:1,h:1,x_center:.171875,y_center:.828125},{w:1,h:1,x_center:.203125,y_center:.828125},{w:1,h:1,x_center:.203125,y_center:.828125},{w:1,h:1,x_center:.234375,y_center:.828125},{w:1,h:1,x_center:.234375,y_center:.828125},{w:1,h:1,x_center:.265625,y_center:.828125},{w:1,h:1,x_center:.265625,y_center:.828125},{w:1,h:1,x_center:.296875,y_center:.828125},{w:1,h:1,x_center:.296875,y_center:.828125},{w:1,h:1,x_center:.328125,y_center:.828125},{w:1,h:1,x_center:.328125,y_center:.828125},{w:1,h:1,x_center:.359375,y_center:.828125},{w:1,h:1,x_center:.359375,y_center:.828125},{w:1,h:1,x_center:.390625,y_center:.828125},{w:1,h:1,x_center:.390625,y_center:.828125},{w:1,h:1,x_center:.421875,y_center:.828125},{w:1,h:1,x_center:.421875,y_center:.828125},{w:1,h:1,x_center:.453125,y_center:.828125},{w:1,h:1,x_center:.453125,y_center:.828125},{w:1,h:1,x_center:.484375,y_center:.828125},{w:1,h:1,x_center:.484375,y_center:.828125},{w:1,h:1,x_center:.515625,y_center:.828125},{w:1,h:1,x_center:.515625,y_center:.828125},{w:1,h:1,x_center:.546875,y_center:.828125},{w:1,h:1,x_center:.546875,y_center:.828125},{w:1,h:1,x_center:.578125,y_center:.828125},{w:1,h:1,x_center:.578125,y_center:.828125},{w:1,h:1,x_center:.609375,y_center:.828125},{w:1,h:1,x_center:.609375,y_center:.828125},{w:1,h:1,x_center:.640625,y_center:.828125},{w:1,h:1,x_center:.640625,y_center:.828125},{w:1,h:1,x_center:.671875,y_center:.828125},{w:1,h:1,x_center:.671875,y_center:.828125},{w:1,h:1,x_center:.703125,y_center:.828125},{w:1,h:1,x_center:.703125,y_center:.828125},{w:1,h:1,x_center:.734375,y_center:.828125},{w:1,h:1,x_center:.734375,y_center:.828125},{w:1,h:1,x_center:.765625,y_center:.828125},{w:1,h:1,x_center:.765625,y_center:.828125},{w:1,h:1,x_center:.796875,y_center:.828125},{w:1,h:1,x_center:.796875,y_center:.828125},{w:1,h:1,x_center:.828125,y_center:.828125},{w:1,h:1,x_center:.828125,y_center:.828125},{w:1,h:1,x_center:.859375,y_center:.828125},{w:1,h:1,x_center:.859375,y_center:.828125},{w:1,h:1,x_center:.890625,y_center:.828125},{w:1,h:1,x_center:.890625,y_center:.828125},{w:1,h:1,x_center:.921875,y_center:.828125},{w:1,h:1,x_center:.921875,y_center:.828125},{w:1,h:1,x_center:.953125,y_center:.828125},{w:1,h:1,x_center:.953125,y_center:.828125},{w:1,h:1,x_center:.984375,y_center:.828125},{w:1,h:1,x_center:.984375,y_center:.828125},{w:1,h:1,x_center:.015625,y_center:.859375},{w:1,h:1,x_center:.015625,y_center:.859375},{w:1,h:1,x_center:.046875,y_center:.859375},{w:1,h:1,x_center:.046875,y_center:.859375},{w:1,h:1,x_center:.078125,y_center:.859375},{w:1,h:1,x_center:.078125,y_center:.859375},{w:1,h:1,x_center:.109375,y_center:.859375},{w:1,h:1,x_center:.109375,y_center:.859375},{w:1,h:1,x_center:.140625,y_center:.859375},{w:1,h:1,x_center:.140625,y_center:.859375},{w:1,h:1,x_center:.171875,y_center:.859375},{w:1,h:1,x_center:.171875,y_center:.859375},{w:1,h:1,x_center:.203125,y_center:.859375},{w:1,h:1,x_center:.203125,y_center:.859375},{w:1,h:1,x_center:.234375,y_center:.859375},{w:1,h:1,x_center:.234375,y_center:.859375},{w:1,h:1,x_center:.265625,y_center:.859375},{w:1,h:1,x_center:.265625,y_center:.859375},{w:1,h:1,x_center:.296875,y_center:.859375},{w:1,h:1,x_center:.296875,y_center:.859375},{w:1,h:1,x_center:.328125,y_center:.859375},{w:1,h:1,x_center:.328125,y_center:.859375},{w:1,h:1,x_center:.359375,y_center:.859375},{w:1,h:1,x_center:.359375,y_center:.859375},{w:1,h:1,x_center:.390625,y_center:.859375},{w:1,h:1,x_center:.390625,y_center:.859375},{w:1,h:1,x_center:.421875,y_center:.859375},{w:1,h:1,x_center:.421875,y_center:.859375},{w:1,h:1,x_center:.453125,y_center:.859375},{w:1,h:1,x_center:.453125,y_center:.859375},{w:1,h:1,x_center:.484375,y_center:.859375},{w:1,h:1,x_center:.484375,y_center:.859375},{w:1,h:1,x_center:.515625,y_center:.859375},{w:1,h:1,x_center:.515625,y_center:.859375},{w:1,h:1,x_center:.546875,y_center:.859375},{w:1,h:1,x_center:.546875,y_center:.859375},{w:1,h:1,x_center:.578125,y_center:.859375},{w:1,h:1,x_center:.578125,y_center:.859375},{w:1,h:1,x_center:.609375,y_center:.859375},{w:1,h:1,x_center:.609375,y_center:.859375},{w:1,h:1,x_center:.640625,y_center:.859375},{w:1,h:1,x_center:.640625,y_center:.859375},{w:1,h:1,x_center:.671875,y_center:.859375},{w:1,h:1,x_center:.671875,y_center:.859375},{w:1,h:1,x_center:.703125,y_center:.859375},{w:1,h:1,x_center:.703125,y_center:.859375},{w:1,h:1,x_center:.734375,y_center:.859375},{w:1,h:1,x_center:.734375,y_center:.859375},{w:1,h:1,x_center:.765625,y_center:.859375},{w:1,h:1,x_center:.765625,y_center:.859375},{w:1,h:1,x_center:.796875,y_center:.859375},{w:1,h:1,x_center:.796875,y_center:.859375},{w:1,h:1,x_center:.828125,y_center:.859375},{w:1,h:1,x_center:.828125,y_center:.859375},{w:1,h:1,x_center:.859375,y_center:.859375},{w:1,h:1,x_center:.859375,y_center:.859375},{w:1,h:1,x_center:.890625,y_center:.859375},{w:1,h:1,x_center:.890625,y_center:.859375},{w:1,h:1,x_center:.921875,y_center:.859375},{w:1,h:1,x_center:.921875,y_center:.859375},{w:1,h:1,x_center:.953125,y_center:.859375},{w:1,h:1,x_center:.953125,y_center:.859375},{w:1,h:1,x_center:.984375,y_center:.859375},{w:1,h:1,x_center:.984375,y_center:.859375},{w:1,h:1,x_center:.015625,y_center:.890625},{w:1,h:1,x_center:.015625,y_center:.890625},{w:1,h:1,x_center:.046875,y_center:.890625},{w:1,h:1,x_center:.046875,y_center:.890625},{w:1,h:1,x_center:.078125,y_center:.890625},{w:1,h:1,x_center:.078125,y_center:.890625},{w:1,h:1,x_center:.109375,y_center:.890625},{w:1,h:1,x_center:.109375,y_center:.890625},{w:1,h:1,x_center:.140625,y_center:.890625},{w:1,h:1,x_center:.140625,y_center:.890625},{w:1,h:1,x_center:.171875,y_center:.890625},{w:1,h:1,x_center:.171875,y_center:.890625},{w:1,h:1,x_center:.203125,y_center:.890625},{w:1,h:1,x_center:.203125,y_center:.890625},{w:1,h:1,x_center:.234375,y_center:.890625},{w:1,h:1,x_center:.234375,y_center:.890625},{w:1,h:1,x_center:.265625,y_center:.890625},{w:1,h:1,x_center:.265625,y_center:.890625},{w:1,h:1,x_center:.296875,y_center:.890625},{w:1,h:1,x_center:.296875,y_center:.890625},{w:1,h:1,x_center:.328125,y_center:.890625},{w:1,h:1,x_center:.328125,y_center:.890625},{w:1,h:1,x_center:.359375,y_center:.890625},{w:1,h:1,x_center:.359375,y_center:.890625},{w:1,h:1,x_center:.390625,y_center:.890625},{w:1,h:1,x_center:.390625,y_center:.890625},{w:1,h:1,x_center:.421875,y_center:.890625},{w:1,h:1,x_center:.421875,y_center:.890625},{w:1,h:1,x_center:.453125,y_center:.890625},{w:1,h:1,x_center:.453125,y_center:.890625},{w:1,h:1,x_center:.484375,y_center:.890625},{w:1,h:1,x_center:.484375,y_center:.890625},{w:1,h:1,x_center:.515625,y_center:.890625},{w:1,h:1,x_center:.515625,y_center:.890625},{w:1,h:1,x_center:.546875,y_center:.890625},{w:1,h:1,x_center:.546875,y_center:.890625},{w:1,h:1,x_center:.578125,y_center:.890625},{w:1,h:1,x_center:.578125,y_center:.890625},{w:1,h:1,x_center:.609375,y_center:.890625},{w:1,h:1,x_center:.609375,y_center:.890625},{w:1,h:1,x_center:.640625,y_center:.890625},{w:1,h:1,x_center:.640625,y_center:.890625},{w:1,h:1,x_center:.671875,y_center:.890625},{w:1,h:1,x_center:.671875,y_center:.890625},{w:1,h:1,x_center:.703125,y_center:.890625},{w:1,h:1,x_center:.703125,y_center:.890625},{w:1,h:1,x_center:.734375,y_center:.890625},{w:1,h:1,x_center:.734375,y_center:.890625},{w:1,h:1,x_center:.765625,y_center:.890625},{w:1,h:1,x_center:.765625,y_center:.890625},{w:1,h:1,x_center:.796875,y_center:.890625},{w:1,h:1,x_center:.796875,y_center:.890625},{w:1,h:1,x_center:.828125,y_center:.890625},{w:1,h:1,x_center:.828125,y_center:.890625},{w:1,h:1,x_center:.859375,y_center:.890625},{w:1,h:1,x_center:.859375,y_center:.890625},{w:1,h:1,x_center:.890625,y_center:.890625},{w:1,h:1,x_center:.890625,y_center:.890625},{w:1,h:1,x_center:.921875,y_center:.890625},{w:1,h:1,x_center:.921875,y_center:.890625},{w:1,h:1,x_center:.953125,y_center:.890625},{w:1,h:1,x_center:.953125,y_center:.890625},{w:1,h:1,x_center:.984375,y_center:.890625},{w:1,h:1,x_center:.984375,y_center:.890625},{w:1,h:1,x_center:.015625,y_center:.921875},{w:1,h:1,x_center:.015625,y_center:.921875},{w:1,h:1,x_center:.046875,y_center:.921875},{w:1,h:1,x_center:.046875,y_center:.921875},{w:1,h:1,x_center:.078125,y_center:.921875},{w:1,h:1,x_center:.078125,y_center:.921875},{w:1,h:1,x_center:.109375,y_center:.921875},{w:1,h:1,x_center:.109375,y_center:.921875},{w:1,h:1,x_center:.140625,y_center:.921875},{w:1,h:1,x_center:.140625,y_center:.921875},{w:1,h:1,x_center:.171875,y_center:.921875},{w:1,h:1,x_center:.171875,y_center:.921875},{w:1,h:1,x_center:.203125,y_center:.921875},{w:1,h:1,x_center:.203125,y_center:.921875},{w:1,h:1,x_center:.234375,y_center:.921875},{w:1,h:1,x_center:.234375,y_center:.921875},{w:1,h:1,x_center:.265625,y_center:.921875},{w:1,h:1,x_center:.265625,y_center:.921875},{w:1,h:1,x_center:.296875,y_center:.921875},{w:1,h:1,x_center:.296875,y_center:.921875},{w:1,h:1,x_center:.328125,y_center:.921875},{w:1,h:1,x_center:.328125,y_center:.921875},{w:1,h:1,x_center:.359375,y_center:.921875},{w:1,h:1,x_center:.359375,y_center:.921875},{w:1,h:1,x_center:.390625,y_center:.921875},{w:1,h:1,x_center:.390625,y_center:.921875},{w:1,h:1,x_center:.421875,y_center:.921875},{w:1,h:1,x_center:.421875,y_center:.921875},{w:1,h:1,x_center:.453125,y_center:.921875},{w:1,h:1,x_center:.453125,y_center:.921875},{w:1,h:1,x_center:.484375,y_center:.921875},{w:1,h:1,x_center:.484375,y_center:.921875},{w:1,h:1,x_center:.515625,y_center:.921875},{w:1,h:1,x_center:.515625,y_center:.921875},{w:1,h:1,x_center:.546875,y_center:.921875},{w:1,h:1,x_center:.546875,y_center:.921875},{w:1,h:1,x_center:.578125,y_center:.921875},{w:1,h:1,x_center:.578125,y_center:.921875},{w:1,h:1,x_center:.609375,y_center:.921875},{w:1,h:1,x_center:.609375,y_center:.921875},{w:1,h:1,x_center:.640625,y_center:.921875},{w:1,h:1,x_center:.640625,y_center:.921875},{w:1,h:1,x_center:.671875,y_center:.921875},{w:1,h:1,x_center:.671875,y_center:.921875},{w:1,h:1,x_center:.703125,y_center:.921875},{w:1,h:1,x_center:.703125,y_center:.921875},{w:1,h:1,x_center:.734375,y_center:.921875},{w:1,h:1,x_center:.734375,y_center:.921875},{w:1,h:1,x_center:.765625,y_center:.921875},{w:1,h:1,x_center:.765625,y_center:.921875},{w:1,h:1,x_center:.796875,y_center:.921875},{w:1,h:1,x_center:.796875,y_center:.921875},{w:1,h:1,x_center:.828125,y_center:.921875},{w:1,h:1,x_center:.828125,y_center:.921875},{w:1,h:1,x_center:.859375,y_center:.921875},{w:1,h:1,x_center:.859375,y_center:.921875},{w:1,h:1,x_center:.890625,y_center:.921875},{w:1,h:1,x_center:.890625,y_center:.921875},{w:1,h:1,x_center:.921875,y_center:.921875},{w:1,h:1,x_center:.921875,y_center:.921875},{w:1,h:1,x_center:.953125,y_center:.921875},{w:1,h:1,x_center:.953125,y_center:.921875},{w:1,h:1,x_center:.984375,y_center:.921875},{w:1,h:1,x_center:.984375,y_center:.921875},{w:1,h:1,x_center:.015625,y_center:.953125},{w:1,h:1,x_center:.015625,y_center:.953125},{w:1,h:1,x_center:.046875,y_center:.953125},{w:1,h:1,x_center:.046875,y_center:.953125},{w:1,h:1,x_center:.078125,y_center:.953125},{w:1,h:1,x_center:.078125,y_center:.953125},{w:1,h:1,x_center:.109375,y_center:.953125},{w:1,h:1,x_center:.109375,y_center:.953125},{w:1,h:1,x_center:.140625,y_center:.953125},{w:1,h:1,x_center:.140625,y_center:.953125},{w:1,h:1,x_center:.171875,y_center:.953125},{w:1,h:1,x_center:.171875,y_center:.953125},{w:1,h:1,x_center:.203125,y_center:.953125},{w:1,h:1,x_center:.203125,y_center:.953125},{w:1,h:1,x_center:.234375,y_center:.953125},{w:1,h:1,x_center:.234375,y_center:.953125},{w:1,h:1,x_center:.265625,y_center:.953125},{w:1,h:1,x_center:.265625,y_center:.953125},{w:1,h:1,x_center:.296875,y_center:.953125},{w:1,h:1,x_center:.296875,y_center:.953125},{w:1,h:1,x_center:.328125,y_center:.953125},{w:1,h:1,x_center:.328125,y_center:.953125},{w:1,h:1,x_center:.359375,y_center:.953125},{w:1,h:1,x_center:.359375,y_center:.953125},{w:1,h:1,x_center:.390625,y_center:.953125},{w:1,h:1,x_center:.390625,y_center:.953125},{w:1,h:1,x_center:.421875,y_center:.953125},{w:1,h:1,x_center:.421875,y_center:.953125},{w:1,h:1,x_center:.453125,y_center:.953125},{w:1,h:1,x_center:.453125,y_center:.953125},{w:1,h:1,x_center:.484375,y_center:.953125},{w:1,h:1,x_center:.484375,y_center:.953125},{w:1,h:1,x_center:.515625,y_center:.953125},{w:1,h:1,x_center:.515625,y_center:.953125},{w:1,h:1,x_center:.546875,y_center:.953125},{w:1,h:1,x_center:.546875,y_center:.953125},{w:1,h:1,x_center:.578125,y_center:.953125},{w:1,h:1,x_center:.578125,y_center:.953125},{w:1,h:1,x_center:.609375,y_center:.953125},{w:1,h:1,x_center:.609375,y_center:.953125},{w:1,h:1,x_center:.640625,y_center:.953125},{w:1,h:1,x_center:.640625,y_center:.953125},{w:1,h:1,x_center:.671875,y_center:.953125},{w:1,h:1,x_center:.671875,y_center:.953125},{w:1,h:1,x_center:.703125,y_center:.953125},{w:1,h:1,x_center:.703125,y_center:.953125},{w:1,h:1,x_center:.734375,y_center:.953125},{w:1,h:1,x_center:.734375,y_center:.953125},{w:1,h:1,x_center:.765625,y_center:.953125},{w:1,h:1,x_center:.765625,y_center:.953125},{w:1,h:1,x_center:.796875,y_center:.953125},{w:1,h:1,x_center:.796875,y_center:.953125},{w:1,h:1,x_center:.828125,y_center:.953125},{w:1,h:1,x_center:.828125,y_center:.953125},{w:1,h:1,x_center:.859375,y_center:.953125},{w:1,h:1,x_center:.859375,y_center:.953125},{w:1,h:1,x_center:.890625,y_center:.953125},{w:1,h:1,x_center:.890625,y_center:.953125},{w:1,h:1,x_center:.921875,y_center:.953125},{w:1,h:1,x_center:.921875,y_center:.953125},{w:1,h:1,x_center:.953125,y_center:.953125},{w:1,h:1,x_center:.953125,y_center:.953125},{w:1,h:1,x_center:.984375,y_center:.953125},{w:1,h:1,x_center:.984375,y_center:.953125},{w:1,h:1,x_center:.015625,y_center:.984375},{w:1,h:1,x_center:.015625,y_center:.984375},{w:1,h:1,x_center:.046875,y_center:.984375},{w:1,h:1,x_center:.046875,y_center:.984375},{w:1,h:1,x_center:.078125,y_center:.984375},{w:1,h:1,x_center:.078125,y_center:.984375},{w:1,h:1,x_center:.109375,y_center:.984375},{w:1,h:1,x_center:.109375,y_center:.984375},{w:1,h:1,x_center:.140625,y_center:.984375},{w:1,h:1,x_center:.140625,y_center:.984375},{w:1,h:1,x_center:.171875,y_center:.984375},{w:1,h:1,x_center:.171875,y_center:.984375},{w:1,h:1,x_center:.203125,y_center:.984375},{w:1,h:1,x_center:.203125,y_center:.984375},{w:1,h:1,x_center:.234375,y_center:.984375},{w:1,h:1,x_center:.234375,y_center:.984375},{w:1,h:1,x_center:.265625,y_center:.984375},{w:1,h:1,x_center:.265625,y_center:.984375},{w:1,h:1,x_center:.296875,y_center:.984375},{w:1,h:1,x_center:.296875,y_center:.984375},{w:1,h:1,x_center:.328125,y_center:.984375},{w:1,h:1,x_center:.328125,y_center:.984375},{w:1,h:1,x_center:.359375,y_center:.984375},{w:1,h:1,x_center:.359375,y_center:.984375},{w:1,h:1,x_center:.390625,y_center:.984375},{w:1,h:1,x_center:.390625,y_center:.984375},{w:1,h:1,x_center:.421875,y_center:.984375},{w:1,h:1,x_center:.421875,y_center:.984375},{w:1,h:1,x_center:.453125,y_center:.984375},{w:1,h:1,x_center:.453125,y_center:.984375},{w:1,h:1,x_center:.484375,y_center:.984375},{w:1,h:1,x_center:.484375,y_center:.984375},{w:1,h:1,x_center:.515625,y_center:.984375},{w:1,h:1,x_center:.515625,y_center:.984375},{w:1,h:1,x_center:.546875,y_center:.984375},{w:1,h:1,x_center:.546875,y_center:.984375},{w:1,h:1,x_center:.578125,y_center:.984375},{w:1,h:1,x_center:.578125,y_center:.984375},{w:1,h:1,x_center:.609375,y_center:.984375},{w:1,h:1,x_center:.609375,y_center:.984375},{w:1,h:1,x_center:.640625,y_center:.984375},{w:1,h:1,x_center:.640625,y_center:.984375},{w:1,h:1,x_center:.671875,y_center:.984375},{w:1,h:1,x_center:.671875,y_center:.984375},{w:1,h:1,x_center:.703125,y_center:.984375},{w:1,h:1,x_center:.703125,y_center:.984375},{w:1,h:1,x_center:.734375,y_center:.984375},{w:1,h:1,x_center:.734375,y_center:.984375},{w:1,h:1,x_center:.765625,y_center:.984375},{w:1,h:1,x_center:.765625,y_center:.984375},{w:1,h:1,x_center:.796875,y_center:.984375},{w:1,h:1,x_center:.796875,y_center:.984375},{w:1,h:1,x_center:.828125,y_center:.984375},{w:1,h:1,x_center:.828125,y_center:.984375},{w:1,h:1,x_center:.859375,y_center:.984375},{w:1,h:1,x_center:.859375,y_center:.984375},{w:1,h:1,x_center:.890625,y_center:.984375},{w:1,h:1,x_center:.890625,y_center:.984375},{w:1,h:1,x_center:.921875,y_center:.984375},{w:1,h:1,x_center:.921875,y_center:.984375},{w:1,h:1,x_center:.953125,y_center:.984375},{w:1,h:1,x_center:.953125,y_center:.984375},{w:1,h:1,x_center:.984375,y_center:.984375},{w:1,h:1,x_center:.984375,y_center:.984375},{w:1,h:1,x_center:.03125,y_center:.03125},{w:1,h:1,x_center:.03125,y_center:.03125},{w:1,h:1,x_center:.09375,y_center:.03125},{w:1,h:1,x_center:.09375,y_center:.03125},{w:1,h:1,x_center:.15625,y_center:.03125},{w:1,h:1,x_center:.15625,y_center:.03125},{w:1,h:1,x_center:.21875,y_center:.03125},{w:1,h:1,x_center:.21875,y_center:.03125},{w:1,h:1,x_center:.28125,y_center:.03125},{w:1,h:1,x_center:.28125,y_center:.03125},{w:1,h:1,x_center:.34375,y_center:.03125},{w:1,h:1,x_center:.34375,y_center:.03125},{w:1,h:1,x_center:.40625,y_center:.03125},{w:1,h:1,x_center:.40625,y_center:.03125},{w:1,h:1,x_center:.46875,y_center:.03125},{w:1,h:1,x_center:.46875,y_center:.03125},{w:1,h:1,x_center:.53125,y_center:.03125},{w:1,h:1,x_center:.53125,y_center:.03125},{w:1,h:1,x_center:.59375,y_center:.03125},{w:1,h:1,x_center:.59375,y_center:.03125},{w:1,h:1,x_center:.65625,y_center:.03125},{w:1,h:1,x_center:.65625,y_center:.03125},{w:1,h:1,x_center:.71875,y_center:.03125},{w:1,h:1,x_center:.71875,y_center:.03125},{w:1,h:1,x_center:.78125,y_center:.03125},{w:1,h:1,x_center:.78125,y_center:.03125},{w:1,h:1,x_center:.84375,y_center:.03125},{w:1,h:1,x_center:.84375,y_center:.03125},{w:1,h:1,x_center:.90625,y_center:.03125},{w:1,h:1,x_center:.90625,y_center:.03125},{w:1,h:1,x_center:.96875,y_center:.03125},{w:1,h:1,x_center:.96875,y_center:.03125},{w:1,h:1,x_center:.03125,y_center:.09375},{w:1,h:1,x_center:.03125,y_center:.09375},{w:1,h:1,x_center:.09375,y_center:.09375},{w:1,h:1,x_center:.09375,y_center:.09375},{w:1,h:1,x_center:.15625,y_center:.09375},{w:1,h:1,x_center:.15625,y_center:.09375},{w:1,h:1,x_center:.21875,y_center:.09375},{w:1,h:1,x_center:.21875,y_center:.09375},{w:1,h:1,x_center:.28125,y_center:.09375},{w:1,h:1,x_center:.28125,y_center:.09375},{w:1,h:1,x_center:.34375,y_center:.09375},{w:1,h:1,x_center:.34375,y_center:.09375},{w:1,h:1,x_center:.40625,y_center:.09375},{w:1,h:1,x_center:.40625,y_center:.09375},{w:1,h:1,x_center:.46875,y_center:.09375},{w:1,h:1,x_center:.46875,y_center:.09375},{w:1,h:1,x_center:.53125,y_center:.09375},{w:1,h:1,x_center:.53125,y_center:.09375},{w:1,h:1,x_center:.59375,y_center:.09375},{w:1,h:1,x_center:.59375,y_center:.09375},{w:1,h:1,x_center:.65625,y_center:.09375},{w:1,h:1,x_center:.65625,y_center:.09375},{w:1,h:1,x_center:.71875,y_center:.09375},{w:1,h:1,x_center:.71875,y_center:.09375},{w:1,h:1,x_center:.78125,y_center:.09375},{w:1,h:1,x_center:.78125,y_center:.09375},{w:1,h:1,x_center:.84375,y_center:.09375},{w:1,h:1,x_center:.84375,y_center:.09375},{w:1,h:1,x_center:.90625,y_center:.09375},{w:1,h:1,x_center:.90625,y_center:.09375},{w:1,h:1,x_center:.96875,y_center:.09375},{w:1,h:1,x_center:.96875,y_center:.09375},{w:1,h:1,x_center:.03125,y_center:.15625},{w:1,h:1,x_center:.03125,y_center:.15625},{w:1,h:1,x_center:.09375,y_center:.15625},{w:1,h:1,x_center:.09375,y_center:.15625},{w:1,h:1,x_center:.15625,y_center:.15625},{w:1,h:1,x_center:.15625,y_center:.15625},{w:1,h:1,x_center:.21875,y_center:.15625},{w:1,h:1,x_center:.21875,y_center:.15625},{w:1,h:1,x_center:.28125,y_center:.15625},{w:1,h:1,x_center:.28125,y_center:.15625},{w:1,h:1,x_center:.34375,y_center:.15625},{w:1,h:1,x_center:.34375,y_center:.15625},{w:1,h:1,x_center:.40625,y_center:.15625},{w:1,h:1,x_center:.40625,y_center:.15625},{w:1,h:1,x_center:.46875,y_center:.15625},{w:1,h:1,x_center:.46875,y_center:.15625},{w:1,h:1,x_center:.53125,y_center:.15625},{w:1,h:1,x_center:.53125,y_center:.15625},{w:1,h:1,x_center:.59375,y_center:.15625},{w:1,h:1,x_center:.59375,y_center:.15625},{w:1,h:1,x_center:.65625,y_center:.15625},{w:1,h:1,x_center:.65625,y_center:.15625},{w:1,h:1,x_center:.71875,y_center:.15625},{w:1,h:1,x_center:.71875,y_center:.15625},{w:1,h:1,x_center:.78125,y_center:.15625},{w:1,h:1,x_center:.78125,y_center:.15625},{w:1,h:1,x_center:.84375,y_center:.15625},{w:1,h:1,x_center:.84375,y_center:.15625},{w:1,h:1,x_center:.90625,y_center:.15625},{w:1,h:1,x_center:.90625,y_center:.15625},{w:1,h:1,x_center:.96875,y_center:.15625},{w:1,h:1,x_center:.96875,y_center:.15625},{w:1,h:1,x_center:.03125,y_center:.21875},{w:1,h:1,x_center:.03125,y_center:.21875},{w:1,h:1,x_center:.09375,y_center:.21875},{w:1,h:1,x_center:.09375,y_center:.21875},{w:1,h:1,x_center:.15625,y_center:.21875},{w:1,h:1,x_center:.15625,y_center:.21875},{w:1,h:1,x_center:.21875,y_center:.21875},{w:1,h:1,x_center:.21875,y_center:.21875},{w:1,h:1,x_center:.28125,y_center:.21875},{w:1,h:1,x_center:.28125,y_center:.21875},{w:1,h:1,x_center:.34375,y_center:.21875},{w:1,h:1,x_center:.34375,y_center:.21875},{w:1,h:1,x_center:.40625,y_center:.21875},{w:1,h:1,x_center:.40625,y_center:.21875},{w:1,h:1,x_center:.46875,y_center:.21875},{w:1,h:1,x_center:.46875,y_center:.21875},{w:1,h:1,x_center:.53125,y_center:.21875},{w:1,h:1,x_center:.53125,y_center:.21875},{w:1,h:1,x_center:.59375,y_center:.21875},{w:1,h:1,x_center:.59375,y_center:.21875},{w:1,h:1,x_center:.65625,y_center:.21875},{w:1,h:1,x_center:.65625,y_center:.21875},{w:1,h:1,x_center:.71875,y_center:.21875},{w:1,h:1,x_center:.71875,y_center:.21875},{w:1,h:1,x_center:.78125,y_center:.21875},{w:1,h:1,x_center:.78125,y_center:.21875},{w:1,h:1,x_center:.84375,y_center:.21875},{w:1,h:1,x_center:.84375,y_center:.21875},{w:1,h:1,x_center:.90625,y_center:.21875},{w:1,h:1,x_center:.90625,y_center:.21875},{w:1,h:1,x_center:.96875,y_center:.21875},{w:1,h:1,x_center:.96875,y_center:.21875},{w:1,h:1,x_center:.03125,y_center:.28125},{w:1,h:1,x_center:.03125,y_center:.28125},{w:1,h:1,x_center:.09375,y_center:.28125},{w:1,h:1,x_center:.09375,y_center:.28125},{w:1,h:1,x_center:.15625,y_center:.28125},{w:1,h:1,x_center:.15625,y_center:.28125},{w:1,h:1,x_center:.21875,y_center:.28125},{w:1,h:1,x_center:.21875,y_center:.28125},{w:1,h:1,x_center:.28125,y_center:.28125},{w:1,h:1,x_center:.28125,y_center:.28125},{w:1,h:1,x_center:.34375,y_center:.28125},{w:1,h:1,x_center:.34375,y_center:.28125},{w:1,h:1,x_center:.40625,y_center:.28125},{w:1,h:1,x_center:.40625,y_center:.28125},{w:1,h:1,x_center:.46875,y_center:.28125},{w:1,h:1,x_center:.46875,y_center:.28125},{w:1,h:1,x_center:.53125,y_center:.28125},{w:1,h:1,x_center:.53125,y_center:.28125},{w:1,h:1,x_center:.59375,y_center:.28125},{w:1,h:1,x_center:.59375,y_center:.28125},{w:1,h:1,x_center:.65625,y_center:.28125},{w:1,h:1,x_center:.65625,y_center:.28125},{w:1,h:1,x_center:.71875,y_center:.28125},{w:1,h:1,x_center:.71875,y_center:.28125},{w:1,h:1,x_center:.78125,y_center:.28125},{w:1,h:1,x_center:.78125,y_center:.28125},{w:1,h:1,x_center:.84375,y_center:.28125},{w:1,h:1,x_center:.84375,y_center:.28125},{w:1,h:1,x_center:.90625,y_center:.28125},{w:1,h:1,x_center:.90625,y_center:.28125},{w:1,h:1,x_center:.96875,y_center:.28125},{w:1,h:1,x_center:.96875,y_center:.28125},{w:1,h:1,x_center:.03125,y_center:.34375},{w:1,h:1,x_center:.03125,y_center:.34375},{w:1,h:1,x_center:.09375,y_center:.34375},{w:1,h:1,x_center:.09375,y_center:.34375},{w:1,h:1,x_center:.15625,y_center:.34375},{w:1,h:1,x_center:.15625,y_center:.34375},{w:1,h:1,x_center:.21875,y_center:.34375},{w:1,h:1,x_center:.21875,y_center:.34375},{w:1,h:1,x_center:.28125,y_center:.34375},{w:1,h:1,x_center:.28125,y_center:.34375},{w:1,h:1,x_center:.34375,y_center:.34375},{w:1,h:1,x_center:.34375,y_center:.34375},{w:1,h:1,x_center:.40625,y_center:.34375},{w:1,h:1,x_center:.40625,y_center:.34375},{w:1,h:1,x_center:.46875,y_center:.34375},{w:1,h:1,x_center:.46875,y_center:.34375},{w:1,h:1,x_center:.53125,y_center:.34375},{w:1,h:1,x_center:.53125,y_center:.34375},{w:1,h:1,x_center:.59375,y_center:.34375},{w:1,h:1,x_center:.59375,y_center:.34375},{w:1,h:1,x_center:.65625,y_center:.34375},{w:1,h:1,x_center:.65625,y_center:.34375},{w:1,h:1,x_center:.71875,y_center:.34375},{w:1,h:1,x_center:.71875,y_center:.34375},{w:1,h:1,x_center:.78125,y_center:.34375},{w:1,h:1,x_center:.78125,y_center:.34375},{w:1,h:1,x_center:.84375,y_center:.34375},{w:1,h:1,x_center:.84375,y_center:.34375},{w:1,h:1,x_center:.90625,y_center:.34375},{w:1,h:1,x_center:.90625,y_center:.34375},{w:1,h:1,x_center:.96875,y_center:.34375},{w:1,h:1,x_center:.96875,y_center:.34375},{w:1,h:1,x_center:.03125,y_center:.40625},{w:1,h:1,x_center:.03125,y_center:.40625},{w:1,h:1,x_center:.09375,y_center:.40625},{w:1,h:1,x_center:.09375,y_center:.40625},{w:1,h:1,x_center:.15625,y_center:.40625},{w:1,h:1,x_center:.15625,y_center:.40625},{w:1,h:1,x_center:.21875,y_center:.40625},{w:1,h:1,x_center:.21875,y_center:.40625},{w:1,h:1,x_center:.28125,y_center:.40625},{w:1,h:1,x_center:.28125,y_center:.40625},{w:1,h:1,x_center:.34375,y_center:.40625},{w:1,h:1,x_center:.34375,y_center:.40625},{w:1,h:1,x_center:.40625,y_center:.40625},{w:1,h:1,x_center:.40625,y_center:.40625},{w:1,h:1,x_center:.46875,y_center:.40625},{w:1,h:1,x_center:.46875,y_center:.40625},{w:1,h:1,x_center:.53125,y_center:.40625},{w:1,h:1,x_center:.53125,y_center:.40625},{w:1,h:1,x_center:.59375,y_center:.40625},{w:1,h:1,x_center:.59375,y_center:.40625},{w:1,h:1,x_center:.65625,y_center:.40625},{w:1,h:1,x_center:.65625,y_center:.40625},{w:1,h:1,x_center:.71875,y_center:.40625},{w:1,h:1,x_center:.71875,y_center:.40625},{w:1,h:1,x_center:.78125,y_center:.40625},{w:1,h:1,x_center:.78125,y_center:.40625},{w:1,h:1,x_center:.84375,y_center:.40625},{w:1,h:1,x_center:.84375,y_center:.40625},{w:1,h:1,x_center:.90625,y_center:.40625},{w:1,h:1,x_center:.90625,y_center:.40625},{w:1,h:1,x_center:.96875,y_center:.40625},{w:1,h:1,x_center:.96875,y_center:.40625},{w:1,h:1,x_center:.03125,y_center:.46875},{w:1,h:1,x_center:.03125,y_center:.46875},{w:1,h:1,x_center:.09375,y_center:.46875},{w:1,h:1,x_center:.09375,y_center:.46875},{w:1,h:1,x_center:.15625,y_center:.46875},{w:1,h:1,x_center:.15625,y_center:.46875},{w:1,h:1,x_center:.21875,y_center:.46875},{w:1,h:1,x_center:.21875,y_center:.46875},{w:1,h:1,x_center:.28125,y_center:.46875},{w:1,h:1,x_center:.28125,y_center:.46875},{w:1,h:1,x_center:.34375,y_center:.46875},{w:1,h:1,x_center:.34375,y_center:.46875},{w:1,h:1,x_center:.40625,y_center:.46875},{w:1,h:1,x_center:.40625,y_center:.46875},{w:1,h:1,x_center:.46875,y_center:.46875},{w:1,h:1,x_center:.46875,y_center:.46875},{w:1,h:1,x_center:.53125,y_center:.46875},{w:1,h:1,x_center:.53125,y_center:.46875},{w:1,h:1,x_center:.59375,y_center:.46875},{w:1,h:1,x_center:.59375,y_center:.46875},{w:1,h:1,x_center:.65625,y_center:.46875},{w:1,h:1,x_center:.65625,y_center:.46875},{w:1,h:1,x_center:.71875,y_center:.46875},{w:1,h:1,x_center:.71875,y_center:.46875},{w:1,h:1,x_center:.78125,y_center:.46875},{w:1,h:1,x_center:.78125,y_center:.46875},{w:1,h:1,x_center:.84375,y_center:.46875},{w:1,h:1,x_center:.84375,y_center:.46875},{w:1,h:1,x_center:.90625,y_center:.46875},{w:1,h:1,x_center:.90625,y_center:.46875},{w:1,h:1,x_center:.96875,y_center:.46875},{w:1,h:1,x_center:.96875,y_center:.46875},{w:1,h:1,x_center:.03125,y_center:.53125},{w:1,h:1,x_center:.03125,y_center:.53125},{w:1,h:1,x_center:.09375,y_center:.53125},{w:1,h:1,x_center:.09375,y_center:.53125},{w:1,h:1,x_center:.15625,y_center:.53125},{w:1,h:1,x_center:.15625,y_center:.53125},{w:1,h:1,x_center:.21875,y_center:.53125},{w:1,h:1,x_center:.21875,y_center:.53125},{w:1,h:1,x_center:.28125,y_center:.53125},{w:1,h:1,x_center:.28125,y_center:.53125},{w:1,h:1,x_center:.34375,y_center:.53125},{w:1,h:1,x_center:.34375,y_center:.53125},{w:1,h:1,x_center:.40625,y_center:.53125},{w:1,h:1,x_center:.40625,y_center:.53125},{w:1,h:1,x_center:.46875,y_center:.53125},{w:1,h:1,x_center:.46875,y_center:.53125},{w:1,h:1,x_center:.53125,y_center:.53125},{w:1,h:1,x_center:.53125,y_center:.53125},{w:1,h:1,x_center:.59375,y_center:.53125},{w:1,h:1,x_center:.59375,y_center:.53125},{w:1,h:1,x_center:.65625,y_center:.53125},{w:1,h:1,x_center:.65625,y_center:.53125},{w:1,h:1,x_center:.71875,y_center:.53125},{w:1,h:1,x_center:.71875,y_center:.53125},{w:1,h:1,x_center:.78125,y_center:.53125},{w:1,h:1,x_center:.78125,y_center:.53125},{w:1,h:1,x_center:.84375,y_center:.53125},{w:1,h:1,x_center:.84375,y_center:.53125},{w:1,h:1,x_center:.90625,y_center:.53125},{w:1,h:1,x_center:.90625,y_center:.53125},{w:1,h:1,x_center:.96875,y_center:.53125},{w:1,h:1,x_center:.96875,y_center:.53125},{w:1,h:1,x_center:.03125,y_center:.59375},{w:1,h:1,x_center:.03125,y_center:.59375},{w:1,h:1,x_center:.09375,y_center:.59375},{w:1,h:1,x_center:.09375,y_center:.59375},{w:1,h:1,x_center:.15625,y_center:.59375},{w:1,h:1,x_center:.15625,y_center:.59375},{w:1,h:1,x_center:.21875,y_center:.59375},{w:1,h:1,x_center:.21875,y_center:.59375},{w:1,h:1,x_center:.28125,y_center:.59375},{w:1,h:1,x_center:.28125,y_center:.59375},{w:1,h:1,x_center:.34375,y_center:.59375},{w:1,h:1,x_center:.34375,y_center:.59375},{w:1,h:1,x_center:.40625,y_center:.59375},{w:1,h:1,x_center:.40625,y_center:.59375},{w:1,h:1,x_center:.46875,y_center:.59375},{w:1,h:1,x_center:.46875,y_center:.59375},{w:1,h:1,x_center:.53125,y_center:.59375},{w:1,h:1,x_center:.53125,y_center:.59375},{w:1,h:1,x_center:.59375,y_center:.59375},{w:1,h:1,x_center:.59375,y_center:.59375},{w:1,h:1,x_center:.65625,y_center:.59375},{w:1,h:1,x_center:.65625,y_center:.59375},{w:1,h:1,x_center:.71875,y_center:.59375},{w:1,h:1,x_center:.71875,y_center:.59375},{w:1,h:1,x_center:.78125,y_center:.59375},{w:1,h:1,x_center:.78125,y_center:.59375},{w:1,h:1,x_center:.84375,y_center:.59375},{w:1,h:1,x_center:.84375,y_center:.59375},{w:1,h:1,x_center:.90625,y_center:.59375},{w:1,h:1,x_center:.90625,y_center:.59375},{w:1,h:1,x_center:.96875,y_center:.59375},{w:1,h:1,x_center:.96875,y_center:.59375},{w:1,h:1,x_center:.03125,y_center:.65625},{w:1,h:1,x_center:.03125,y_center:.65625},{w:1,h:1,x_center:.09375,y_center:.65625},{w:1,h:1,x_center:.09375,y_center:.65625},{w:1,h:1,x_center:.15625,y_center:.65625},{w:1,h:1,x_center:.15625,y_center:.65625},{w:1,h:1,x_center:.21875,y_center:.65625},{w:1,h:1,x_center:.21875,y_center:.65625},{w:1,h:1,x_center:.28125,y_center:.65625},{w:1,h:1,x_center:.28125,y_center:.65625},{w:1,h:1,x_center:.34375,y_center:.65625},{w:1,h:1,x_center:.34375,y_center:.65625},{w:1,h:1,x_center:.40625,y_center:.65625},{w:1,h:1,x_center:.40625,y_center:.65625},{w:1,h:1,x_center:.46875,y_center:.65625},{w:1,h:1,x_center:.46875,y_center:.65625},{w:1,h:1,x_center:.53125,y_center:.65625},{w:1,h:1,x_center:.53125,y_center:.65625},{w:1,h:1,x_center:.59375,y_center:.65625},{w:1,h:1,x_center:.59375,y_center:.65625},{w:1,h:1,x_center:.65625,y_center:.65625},{w:1,h:1,x_center:.65625,y_center:.65625},{w:1,h:1,x_center:.71875,y_center:.65625},{w:1,h:1,x_center:.71875,y_center:.65625},{w:1,h:1,x_center:.78125,y_center:.65625},{w:1,h:1,x_center:.78125,y_center:.65625},{w:1,h:1,x_center:.84375,y_center:.65625},{w:1,h:1,x_center:.84375,y_center:.65625},{w:1,h:1,x_center:.90625,y_center:.65625},{w:1,h:1,x_center:.90625,y_center:.65625},{w:1,h:1,x_center:.96875,y_center:.65625},{w:1,h:1,x_center:.96875,y_center:.65625},{w:1,h:1,x_center:.03125,y_center:.71875},{w:1,h:1,x_center:.03125,y_center:.71875},{w:1,h:1,x_center:.09375,y_center:.71875},{w:1,h:1,x_center:.09375,y_center:.71875},{w:1,h:1,x_center:.15625,y_center:.71875},{w:1,h:1,x_center:.15625,y_center:.71875},{w:1,h:1,x_center:.21875,y_center:.71875},{w:1,h:1,x_center:.21875,y_center:.71875},{w:1,h:1,x_center:.28125,y_center:.71875},{w:1,h:1,x_center:.28125,y_center:.71875},{w:1,h:1,x_center:.34375,y_center:.71875},{w:1,h:1,x_center:.34375,y_center:.71875},{w:1,h:1,x_center:.40625,y_center:.71875},{w:1,h:1,x_center:.40625,y_center:.71875},{w:1,h:1,x_center:.46875,y_center:.71875},{w:1,h:1,x_center:.46875,y_center:.71875},{w:1,h:1,x_center:.53125,y_center:.71875},{w:1,h:1,x_center:.53125,y_center:.71875},{w:1,h:1,x_center:.59375,y_center:.71875},{w:1,h:1,x_center:.59375,y_center:.71875},{w:1,h:1,x_center:.65625,y_center:.71875},{w:1,h:1,x_center:.65625,y_center:.71875},{w:1,h:1,x_center:.71875,y_center:.71875},{w:1,h:1,x_center:.71875,y_center:.71875},{w:1,h:1,x_center:.78125,y_center:.71875},{w:1,h:1,x_center:.78125,y_center:.71875},{w:1,h:1,x_center:.84375,y_center:.71875},{w:1,h:1,x_center:.84375,y_center:.71875},{w:1,h:1,x_center:.90625,y_center:.71875},{w:1,h:1,x_center:.90625,y_center:.71875},{w:1,h:1,x_center:.96875,y_center:.71875},{w:1,h:1,x_center:.96875,y_center:.71875},{w:1,h:1,x_center:.03125,y_center:.78125},{w:1,h:1,x_center:.03125,y_center:.78125},{w:1,h:1,x_center:.09375,y_center:.78125},{w:1,h:1,x_center:.09375,y_center:.78125},{w:1,h:1,x_center:.15625,y_center:.78125},{w:1,h:1,x_center:.15625,y_center:.78125},{w:1,h:1,x_center:.21875,y_center:.78125},{w:1,h:1,x_center:.21875,y_center:.78125},{w:1,h:1,x_center:.28125,y_center:.78125},{w:1,h:1,x_center:.28125,y_center:.78125},{w:1,h:1,x_center:.34375,y_center:.78125},{w:1,h:1,x_center:.34375,y_center:.78125},{w:1,h:1,x_center:.40625,y_center:.78125},{w:1,h:1,x_center:.40625,y_center:.78125},{w:1,h:1,x_center:.46875,y_center:.78125},{w:1,h:1,x_center:.46875,y_center:.78125},{w:1,h:1,x_center:.53125,y_center:.78125},{w:1,h:1,x_center:.53125,y_center:.78125},{w:1,h:1,x_center:.59375,y_center:.78125},{w:1,h:1,x_center:.59375,y_center:.78125},{w:1,h:1,x_center:.65625,y_center:.78125},{w:1,h:1,x_center:.65625,y_center:.78125},{w:1,h:1,x_center:.71875,y_center:.78125},{w:1,h:1,x_center:.71875,y_center:.78125},{w:1,h:1,x_center:.78125,y_center:.78125},{w:1,h:1,x_center:.78125,y_center:.78125},{w:1,h:1,x_center:.84375,y_center:.78125},{w:1,h:1,x_center:.84375,y_center:.78125},{w:1,h:1,x_center:.90625,y_center:.78125},{w:1,h:1,x_center:.90625,y_center:.78125},{w:1,h:1,x_center:.96875,y_center:.78125},{w:1,h:1,x_center:.96875,y_center:.78125},{w:1,h:1,x_center:.03125,y_center:.84375},{w:1,h:1,x_center:.03125,y_center:.84375},{w:1,h:1,x_center:.09375,y_center:.84375},{w:1,h:1,x_center:.09375,y_center:.84375},{w:1,h:1,x_center:.15625,y_center:.84375},{w:1,h:1,x_center:.15625,y_center:.84375},{w:1,h:1,x_center:.21875,y_center:.84375},{w:1,h:1,x_center:.21875,y_center:.84375},{w:1,h:1,x_center:.28125,y_center:.84375},{w:1,h:1,x_center:.28125,y_center:.84375},{w:1,h:1,x_center:.34375,y_center:.84375},{w:1,h:1,x_center:.34375,y_center:.84375},{w:1,h:1,x_center:.40625,y_center:.84375},{w:1,h:1,x_center:.40625,y_center:.84375},{w:1,h:1,x_center:.46875,y_center:.84375},{w:1,h:1,x_center:.46875,y_center:.84375},{w:1,h:1,x_center:.53125,y_center:.84375},{w:1,h:1,x_center:.53125,y_center:.84375},{w:1,h:1,x_center:.59375,y_center:.84375},{w:1,h:1,x_center:.59375,y_center:.84375},{w:1,h:1,x_center:.65625,y_center:.84375},{w:1,h:1,x_center:.65625,y_center:.84375},{w:1,h:1,x_center:.71875,y_center:.84375},{w:1,h:1,x_center:.71875,y_center:.84375},{w:1,h:1,x_center:.78125,y_center:.84375},{w:1,h:1,x_center:.78125,y_center:.84375},{w:1,h:1,x_center:.84375,y_center:.84375},{w:1,h:1,x_center:.84375,y_center:.84375},{w:1,h:1,x_center:.90625,y_center:.84375},{w:1,h:1,x_center:.90625,y_center:.84375},{w:1,h:1,x_center:.96875,y_center:.84375},{w:1,h:1,x_center:.96875,y_center:.84375},{w:1,h:1,x_center:.03125,y_center:.90625},{w:1,h:1,x_center:.03125,y_center:.90625},{w:1,h:1,x_center:.09375,y_center:.90625},{w:1,h:1,x_center:.09375,y_center:.90625},{w:1,h:1,x_center:.15625,y_center:.90625},{w:1,h:1,x_center:.15625,y_center:.90625},{w:1,h:1,x_center:.21875,y_center:.90625},{w:1,h:1,x_center:.21875,y_center:.90625},{w:1,h:1,x_center:.28125,y_center:.90625},{w:1,h:1,x_center:.28125,y_center:.90625},{w:1,h:1,x_center:.34375,y_center:.90625},{w:1,h:1,x_center:.34375,y_center:.90625},{w:1,h:1,x_center:.40625,y_center:.90625},{w:1,h:1,x_center:.40625,y_center:.90625},{w:1,h:1,x_center:.46875,y_center:.90625},{w:1,h:1,x_center:.46875,y_center:.90625},{w:1,h:1,x_center:.53125,y_center:.90625},{w:1,h:1,x_center:.53125,y_center:.90625},{w:1,h:1,x_center:.59375,y_center:.90625},{w:1,h:1,x_center:.59375,y_center:.90625},{w:1,h:1,x_center:.65625,y_center:.90625},{w:1,h:1,x_center:.65625,y_center:.90625},{w:1,h:1,x_center:.71875,y_center:.90625},{w:1,h:1,x_center:.71875,y_center:.90625},{w:1,h:1,x_center:.78125,y_center:.90625},{w:1,h:1,x_center:.78125,y_center:.90625},{w:1,h:1,x_center:.84375,y_center:.90625},{w:1,h:1,x_center:.84375,y_center:.90625},{w:1,h:1,x_center:.90625,y_center:.90625},{w:1,h:1,x_center:.90625,y_center:.90625},{w:1,h:1,x_center:.96875,y_center:.90625},{w:1,h:1,x_center:.96875,y_center:.90625},{w:1,h:1,x_center:.03125,y_center:.96875},{w:1,h:1,x_center:.03125,y_center:.96875},{w:1,h:1,x_center:.09375,y_center:.96875},{w:1,h:1,x_center:.09375,y_center:.96875},{w:1,h:1,x_center:.15625,y_center:.96875},{w:1,h:1,x_center:.15625,y_center:.96875},{w:1,h:1,x_center:.21875,y_center:.96875},{w:1,h:1,x_center:.21875,y_center:.96875},{w:1,h:1,x_center:.28125,y_center:.96875},{w:1,h:1,x_center:.28125,y_center:.96875},{w:1,h:1,x_center:.34375,y_center:.96875},{w:1,h:1,x_center:.34375,y_center:.96875},{w:1,h:1,x_center:.40625,y_center:.96875},{w:1,h:1,x_center:.40625,y_center:.96875},{w:1,h:1,x_center:.46875,y_center:.96875},{w:1,h:1,x_center:.46875,y_center:.96875},{w:1,h:1,x_center:.53125,y_center:.96875},{w:1,h:1,x_center:.53125,y_center:.96875},{w:1,h:1,x_center:.59375,y_center:.96875},{w:1,h:1,x_center:.59375,y_center:.96875},{w:1,h:1,x_center:.65625,y_center:.96875},{w:1,h:1,x_center:.65625,y_center:.96875},{w:1,h:1,x_center:.71875,y_center:.96875},{w:1,h:1,x_center:.71875,y_center:.96875},{w:1,h:1,x_center:.78125,y_center:.96875},{w:1,h:1,x_center:.78125,y_center:.96875},{w:1,h:1,x_center:.84375,y_center:.96875},{w:1,h:1,x_center:.84375,y_center:.96875},{w:1,h:1,x_center:.90625,y_center:.96875},{w:1,h:1,x_center:.90625,y_center:.96875},{w:1,h:1,x_center:.96875,y_center:.96875},{w:1,h:1,x_center:.96875,y_center:.96875},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375}];var At={thumb:[1,2,3,4],indexFinger:[5,6,7,8],middleFinger:[9,10,11,12],ringFinger:[13,14,15,16],pinky:[17,18,19,20],palmBase:[0]},_t=class{constructor(t){this.handPipeline=t}static getAnnotations(){return At}async estimateHands(t,n){let c=await this.handPipeline.estimateHands(t,n);if(!c)return[];let r=[];for(let A of c){let _={};if(A.landmarks)for(let i of Object.keys(At))_[i]=At[i].map(x=>A.landmarks[x]);let o=A.box?[Math.max(0,A.box.topLeft[0]),Math.max(0,A.box.topLeft[1]),Math.min(t.shape[2],A.box.bottomRight[0])-Math.max(0,A.box.topLeft[0]),Math.min(t.shape[1],A.box.bottomRight[1])-Math.max(0,A.box.topLeft[1])]:[],s=[A.box.topLeft[0]/t.shape[2],A.box.topLeft[1]/t.shape[1],(A.box.bottomRight[0]-A.box.topLeft[0])/t.shape[2],(A.box.bottomRight[1]-A.box.topLeft[1])/t.shape[1]];r.push({confidence:A.confidence,box:o,boxRaw:s,landmarks:A.landmarks,annotations:_})}return r}};async function ot(e){let[t,n]=await Promise.all([e.hand.enabled?ct.loadGraphModel(e.hand.detector.modelPath,{fromTFHub:e.hand.detector.modelPath.includes("tfhub.dev")}):null,e.hand.landmarks?ct.loadGraphModel(e.hand.skeleton.modelPath,{fromTFHub:e.hand.skeleton.modelPath.includes("tfhub.dev")}):null]),c=new $1(t,t==null?void 0:t.inputs[0].shape[2],w0),r=new nt(c,n,n==null?void 0:n.inputs[0].shape[2]),A=new _t(r);return e.hand.enabled&&e.debug&&b(`load model: ${e.hand.detector.modelPath.match(/\/(.*)\./)[1]}`),e.hand.landmarks&&e.debug&&b(`load model: ${e.hand.skeleton.modelPath.match(/\/(.*)\./)[1]}`),A}var st={};J(st,{load:()=>ht,predict:()=>it});var ie=N();var l0=["nose","leftEyeInside","leftEye","leftEyeOutside","rightEyeInside","rightEye","rightEyeOutside","leftEar","rightEar","leftMouth","rightMouth","leftShoulder","rightShoulder","leftElbow","rightElbow","leftWrist","rightWrist","leftPalm","rightPalm","leftIndex","rightIndex","leftPinky","rightPinky","leftHip","rightHip","leftKnee","rightKnee","leftAnkle","rightAnkle","leftHeel","rightHeel","leftFoot","rightFoot","midHip","forehead","leftThumb","leftHand","rightThumb","rightHand"],d0=["nose","leftEyeInside","leftEye","leftEyeOutside","rightEyeInside","rightEye","rightEyeOutside","leftEar","rightEar","leftMouth","rightMouth","leftShoulder","rightShoulder","leftElbow","rightElbow","left:15","right:16","left:17","right:18","left:19","right:20","left:21","right:22","leftChest","rightChest","neck","forehead","left:27","right:28","left:29","right:30"];var U;async function ht(e){return U||(U=await ie.loadGraphModel(e.body.modelPath),U.width=parseInt(U.signature.inputs["input_1:0"].tensorShape.dim[2].size),U.height=parseInt(U.signature.inputs["input_1:0"].tensorShape.dim[1].size),e.debug&&b(`load model: ${e.body.modelPath.match(/\/(.*)\./)[1]}`)),U}async function it(e,t){if(!U||!t.body.enabled)return null;let n={width:e.shape[2],height:e.shape[1]},c=ie.image.resizeBilinear(e,[U.width,U.height],!1),r=ie.div(c,[255]);c.dispose();let A;if(t.profile){let i=await ie.profile(()=>U.predict(r));A=i.result.find(x=>x.size===195||x.size===155).dataSync(),i.result.forEach(x=>x.dispose()),C("blazepose",i)}else{let i=await U.predict(r);A=i.find(x=>x.size===195||x.size===155).dataSync(),i.forEach(x=>x.dispose())}r.dispose();let _=[],o=A.length===195?l0:d0,s=5;for(let i=0;iyt,predict:()=>wt});var D=N();var f0=[{class:1,label:"person"},{class:2,label:"bicycle"},{class:3,label:"car"},{class:4,label:"motorcycle"},{class:5,label:"airplane"},{class:6,label:"bus"},{class:7,label:"train"},{class:8,label:"truck"},{class:9,label:"boat"},{class:10,label:"traffic light"},{class:11,label:"fire hydrant"},{class:12,label:"stop sign"},{class:13,label:"parking meter"},{class:14,label:"bench"},{class:15,label:"bird"},{class:16,label:"cat"},{class:17,label:"dog"},{class:18,label:"horse"},{class:19,label:"sheep"},{class:20,label:"cow"},{class:21,label:"elephant"},{class:22,label:"bear"},{class:23,label:"zebra"},{class:24,label:"giraffe"},{class:25,label:"backpack"},{class:26,label:"umbrella"},{class:27,label:"handbag"},{class:28,label:"tie"},{class:29,label:"suitcase"},{class:30,label:"frisbee"},{class:31,label:"skis"},{class:32,label:"snowboard"},{class:33,label:"sports ball"},{class:34,label:"kite"},{class:35,label:"baseball bat"},{class:36,label:"baseball glove"},{class:37,label:"skateboard"},{class:38,label:"surfboard"},{class:39,label:"tennis racket"},{class:40,label:"bottle"},{class:41,label:"wine glass"},{class:42,label:"cup"},{class:43,label:"fork"},{class:44,label:"knife"},{class:45,label:"spoon"},{class:46,label:"bowl"},{class:47,label:"banana"},{class:48,label:"apple"},{class:49,label:"sandwich"},{class:50,label:"orange"},{class:51,label:"broccoli"},{class:52,label:"carrot"},{class:53,label:"hot dog"},{class:54,label:"pizza"},{class:55,label:"donut"},{class:56,label:"cake"},{class:57,label:"chair"},{class:58,label:"couch"},{class:59,label:"potted plant"},{class:60,label:"bed"},{class:61,label:"dining table"},{class:62,label:"toilet"},{class:63,label:"tv"},{class:64,label:"laptop"},{class:65,label:"mouse"},{class:66,label:"remote"},{class:67,label:"keyboard"},{class:68,label:"cell phone"},{class:69,label:"microwave"},{class:70,label:"oven"},{class:71,label:"toaster"},{class:72,label:"sink"},{class:73,label:"refrigerator"},{class:74,label:"book"},{class:75,label:"clock"},{class:76,label:"vase"},{class:77,label:"scissors"},{class:78,label:"teddy bear"},{class:79,label:"hair drier"},{class:80,label:"toothbrush"}];var G,xt=[],e1=Number.MAX_SAFE_INTEGER,t1=2.5,m0=!1;async function yt(e){return G||(G=await D.loadGraphModel(e.object.modelPath),G.inputSize=parseInt(Object.values(G.modelSignature.inputs)[0].tensorShape.dim[2].size),e.debug&&b(`load model: ${e.object.modelPath.match(/\/(.*)\./)[1]}`)),G}async function On(e,t,n,c){let r=0,A=[];for(let x of[1,2,4])D.tidy(()=>{var g,W;let h=x*13,w=(g=e.find(E=>E.shape[1]===h**2&&E.shape[2]===80))==null?void 0:g.squeeze(),f=(W=e.find(E=>E.shape[1]===h**2&&E.shape[2]<80))==null?void 0:W.squeeze(),a=f.reshape([-1,4,f.shape[1]/4]).argMax(2).arraySync(),M=m0?w.exp(1).arraySync():w.arraySync();for(let E=0;Ec.object.minConfidence){let d=(.5+Math.trunc(E%h))/h,p=(.5+Math.trunc(E/h))/h,v=a[E].map(Ae=>Ae*(h/x/t)),R=[d-t1/x*v[0],p-t1/x*v[1],d+t1/x*v[2],p+t1/x*v[3]];R=R.map(Ae=>Math.max(0,Math.min(Ae,1)));let q=[R[0]*n[0],R[1]*n[1],R[2]*n[0],R[3]*n[1]],ut={id:r++,strideSize:x,score:u,class:X+1,label:f0[X].label,center:[Math.trunc(n[0]*d),Math.trunc(n[1]*p)],centerRaw:[d,p],box:q.map(Ae=>Math.trunc(Ae)),boxRaw:R};A.push(ut)}}});e.forEach(x=>D.dispose(x));let _=A.map(x=>x.boxRaw),o=A.map(x=>x.score),s=await D.image.nonMaxSuppressionAsync(_,o,c.object.maxResults,c.object.iouThreshold,c.object.minConfidence),i=s.dataSync();return D.dispose(s),A=A.filter((x,h)=>i.includes(h)).sort((x,h)=>h.score-x.score),A}async function wt(e,t){return G?e10?(e1++,xt):(t.videoOptimized?e1=0:e1=Number.MAX_SAFE_INTEGER,new Promise(async n=>{let c=[e.shape[2],e.shape[1]],r=D.image.resizeBilinear(e,[G.inputSize,G.inputSize],!1),A=r.div(255);r.dispose();let _=A.transpose([0,3,1,2]);A.dispose();let o;if(!t.profile)t.object.enabled&&(o=await G.predict(_));else{let i=t.object.enabled?await D.profile(()=>G.predict(_)):{};o=i.result.clone(),i.result.dispose(),C("object",i)}_.dispose();let s=await On(o,G.inputSize,c,t);xt=s,n(s)})):null}var p0=e=>{if(!e)return[];let t=[];for(let n=0;ns.part==="leftWrist"),r=e[n].keypoints.find(s=>s.part==="rightWrist"),A=e[n].keypoints.find(s=>s.part==="nose");A&&c&&r&&c.position.ys.part==="leftShoulder"),o=e[n].keypoints.find(s=>s.part==="rightShoulder");_&&o&&t.push({body:n,gesture:`leaning ${_.position.y>o.position.y?"left":"right"}`})}return t},u0=e=>{if(!e)return[];let t=[];for(let n=0;n0){let c=e[n].mesh[33][2]-e[n].mesh[263][2];Math.abs(c)<10?t.push({face:n,gesture:"facing camera"}):t.push({face:n,gesture:`facing ${c<0?"right":"left"}`}),Math.abs(e[n].mesh[374][1]-e[n].mesh[386][1])/Math.abs(e[n].mesh[443][1]-e[n].mesh[450][1])<.2&&t.push({face:n,gesture:"blink left eye"}),Math.abs(e[n].mesh[145][1]-e[n].mesh[159][1])/Math.abs(e[n].mesh[223][1]-e[n].mesh[230][1])<.2&&t.push({face:n,gesture:"blink right eye"});let _=Math.min(100,500*Math.abs(e[n].mesh[13][1]-e[n].mesh[14][1])/Math.abs(e[n].mesh[10][1]-e[n].mesh[152][1]));_>10&&t.push({face:n,gesture:`mouth ${Math.trunc(_)}% open`});let o=e[n].mesh[152][2];Math.abs(o)>10&&t.push({face:n,gesture:`head ${o<0?"up":"down"}`})}return t},b0=e=>{if(!e)return[];let t=[];for(let n=0;n{if(!e)return[];let t=[];for(let n=0;n0){let r=c.reduce((_,o)=>_.position[2]_.position[1](i[w]=0,h))},r=function(o,s){let i=e.createShader(s);if(e.shaderSource(i,o),e.compileShader(i),!e.getShaderParameter(i,e.COMPILE_STATUS))throw new Error("Filter: GL compile failed",e.getShaderInfoLog(i));return i};this.uniform={},this.attribute={};let A=r(t,e.VERTEX_SHADER),_=r(n,e.FRAGMENT_SHADER);if(this.id=e.createProgram(),e.attachShader(this.id,A),e.attachShader(this.id,_),e.linkProgram(this.id),!e.getProgramParameter(this.id,e.LINK_STATUS))throw new Error("Filter: GL link failed",e.getProgramInfoLog(this.id));e.useProgram(this.id),c(t,"attribute",this.attribute);for(let o in this.attribute)this.attribute[o]=e.getAttribLocation(this.id,o);c(t,"uniform",this.uniform),c(n,"uniform",this.uniform);for(let o in this.uniform)this.uniform[o]=e.getUniformLocation(this.id,o)}function T0(e){e||(e={});let t=0,n=null,c=!1,r=-1,A=[null,null],_=[],o=-1,s=-1,i=null,x=null,h={},w=e.canvas||document.createElement("canvas"),f={},m={INTERMEDIATE:1},a=w.getContext("webgl");if(!a)throw new Error("Filter: getContext() failed");this.addFilter=function(u){let d=Array.prototype.slice.call(arguments,1),p=h[u];_.push({func:p,args:d})},this.reset=function(){_=[]};let M=function(u,d){if(!(u===o&&d===s)){if(w.width=u,o=u,w.height=d,s=d,!i){let p=new Float32Array([-1,-1,0,1,1,-1,1,1,-1,1,0,0,-1,1,0,0,1,-1,1,1,1,1,1,0]);i=a.createBuffer(),a.bindBuffer(a.ARRAY_BUFFER,i),a.bufferData(a.ARRAY_BUFFER,p,a.STATIC_DRAW),a.pixelStorei(a.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0)}a.viewport(0,0,o,s),A=[null,null]}},g=function(u,d){let p=a.createFramebuffer();a.bindFramebuffer(a.FRAMEBUFFER,p);let v=a.createRenderbuffer();a.bindRenderbuffer(a.RENDERBUFFER,v);let R=a.createTexture();return a.bindTexture(a.TEXTURE_2D,R),a.texImage2D(a.TEXTURE_2D,0,a.RGBA,u,d,0,a.RGBA,a.UNSIGNED_BYTE,null),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_MAG_FILTER,a.LINEAR),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_MIN_FILTER,a.LINEAR),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_WRAP_S,a.CLAMP_TO_EDGE),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_WRAP_T,a.CLAMP_TO_EDGE),a.framebufferTexture2D(a.FRAMEBUFFER,a.COLOR_ATTACHMENT0,a.TEXTURE_2D,R,0),a.bindTexture(a.TEXTURE_2D,null),a.bindFramebuffer(a.FRAMEBUFFER,null),{fbo:p,texture:R}},W=function(u){return A[u]=A[u]||g(o,s),A[u]},E=function(u=null){var R,q;let d=null,p=null,v=!1;t===0?d=n:d=(R=W(r))==null?void 0:R.texture,t++,c&&!(u&m.INTERMEDIATE)?(p=null,v=t%2==0):(r=(r+1)%2,p=(q=W(r))==null?void 0:q.fbo),a.bindTexture(a.TEXTURE_2D,d),a.bindFramebuffer(a.FRAMEBUFFER,p),a.uniform1f(x.uniform.flipY,v?-1:1),a.drawArrays(a.TRIANGLES,0,6)};this.apply=function(u){if(M(u.width,u.height),t=0,n||(n=a.createTexture()),a.bindTexture(a.TEXTURE_2D,n),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_WRAP_S,a.CLAMP_TO_EDGE),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_WRAP_T,a.CLAMP_TO_EDGE),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_MIN_FILTER,a.NEAREST),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_MAG_FILTER,a.NEAREST),a.texImage2D(a.TEXTURE_2D,0,a.RGBA,a.RGBA,a.UNSIGNED_BYTE,u),_.length===0)return E(),w;for(let d=0;d<_.length;d++){c=d===_.length-1;let p=_[d];p.func.apply(this,p.args||[])}return w};let X=function(u){if(f[u])return x=f[u],a.useProgram(x.id),x;let d={};d.VERTEX_IDENTITY=["precision highp float;","attribute vec2 pos;","attribute vec2 uv;","varying vec2 vUv;","uniform float flipY;","void main(void) {","vUv = uv;","gl_Position = vec4(pos.x, pos.y*flipY, 0.0, 1.);","}"].join(` -`),d.FRAGMENT_IDENTITY=["precision highp float;","varying vec2 vUv;","uniform sampler2D texture;","void main(void) {","gl_FragColor = texture2D(texture, vUv);","}"].join(` -`),x=new In(a,d.VERTEX_IDENTITY,u);let p=Float32Array.BYTES_PER_ELEMENT,v=4*p;return a.enableVertexAttribArray(x.attribute.pos),a.vertexAttribPointer(x.attribute.pos,2,a.FLOAT,!1,v,0*p),a.enableVertexAttribArray(x.attribute.uv),a.vertexAttribPointer(x.attribute.uv,2,a.FLOAT,!1,v,2*p),f[u]=x,x};h.colorMatrix=function(u){let d=new Float32Array(u);d[4]/=255,d[9]/=255,d[14]/=255,d[19]/=255;let p=d[18]===1&&d[3]===0&&d[8]===0&&d[13]===0&&d[15]===0&&d[16]===0&&d[17]===0&&d[19]===0?h.colorMatrix.SHADER.WITHOUT_ALPHA:h.colorMatrix.SHADER.WITH_ALPHA,v=X(p);a.uniform1fv(v.uniform.m,d),E()},h.colorMatrix.SHADER={},h.colorMatrix.SHADER.WITH_ALPHA=["precision highp float;","varying vec2 vUv;","uniform sampler2D texture;","uniform float m[20];","void main(void) {","vec4 c = texture2D(texture, vUv);","gl_FragColor.r = m[0] * c.r + m[1] * c.g + m[2] * c.b + m[3] * c.a + m[4];","gl_FragColor.g = m[5] * c.r + m[6] * c.g + m[7] * c.b + m[8] * c.a + m[9];","gl_FragColor.b = m[10] * c.r + m[11] * c.g + m[12] * c.b + m[13] * c.a + m[14];","gl_FragColor.a = m[15] * c.r + m[16] * c.g + m[17] * c.b + m[18] * c.a + m[19];","}"].join(` -`),h.colorMatrix.SHADER.WITHOUT_ALPHA=["precision highp float;","varying vec2 vUv;","uniform sampler2D texture;","uniform float m[20];","void main(void) {","vec4 c = texture2D(texture, vUv);","gl_FragColor.r = m[0] * c.r + m[1] * c.g + m[2] * c.b + m[4];","gl_FragColor.g = m[5] * c.r + m[6] * c.g + m[7] * c.b + m[9];","gl_FragColor.b = m[10] * c.r + m[11] * c.g + m[12] * c.b + m[14];","gl_FragColor.a = c.a;","}"].join(` -`),h.brightness=function(u){let d=(u||0)+1;h.colorMatrix([d,0,0,0,0,0,d,0,0,0,0,0,d,0,0,0,0,0,1,0])},h.saturation=function(u){let d=(u||0)*2/3+1,p=(d-1)*-.5;h.colorMatrix([d,p,p,0,0,p,d,p,0,0,p,p,d,0,0,0,0,0,1,0])},h.desaturate=function(){h.saturation(-1)},h.contrast=function(u){let d=(u||0)+1,p=-128*(d-1);h.colorMatrix([d,0,0,0,p,0,d,0,0,p,0,0,d,0,p,0,0,0,1,0])},h.negative=function(){h.contrast(-2)},h.hue=function(u){u=(u||0)/180*Math.PI;let d=Math.cos(u),p=Math.sin(u),v=.213,R=.715,q=.072;h.colorMatrix([v+d*(1-v)+p*-v,R+d*-R+p*-R,q+d*-q+p*(1-q),0,0,v+d*-v+p*.143,R+d*(1-R)+p*.14,q+d*-q+p*-.283,0,0,v+d*-v+p*-(1-v),R+d*-R+p*R,q+d*(1-q)+p*q,0,0,0,0,0,1,0])},h.desaturateLuminance=function(){h.colorMatrix([.2764723,.929708,.0938197,0,-37.1,.2764723,.929708,.0938197,0,-37.1,.2764723,.929708,.0938197,0,-37.1,0,0,0,1,0])},h.sepia=function(){h.colorMatrix([.393,.7689999,.18899999,0,0,.349,.6859999,.16799999,0,0,.272,.5339999,.13099999,0,0,0,0,0,1,0])},h.brownie=function(){h.colorMatrix([.5997023498159715,.34553243048391263,-.2708298674538042,0,47.43192855600873,-.037703249837783157,.8609577587992641,.15059552388459913,0,-36.96841498319127,.24113635128153335,-.07441037908422492,.44972182064877153,0,-7.562075277591283,0,0,0,1,0])},h.vintagePinhole=function(){h.colorMatrix([.6279345635605994,.3202183420819367,-.03965408211312453,0,9.651285835294123,.02578397704808868,.6441188644374771,.03259127616149294,0,7.462829176470591,.0466055556782719,-.0851232987247891,.5241648018700465,0,5.159190588235296,0,0,0,1,0])},h.kodachrome=function(){h.colorMatrix([1.1285582396593525,-.3967382283601348,-.03992559172921793,0,63.72958762196502,-.16404339962244616,1.0835251566291304,-.05498805115633132,0,24.732407896706203,-.16786010706155763,-.5603416277695248,1.6014850761964943,0,35.62982807460946,0,0,0,1,0])},h.technicolor=function(){h.colorMatrix([1.9125277891456083,-.8545344976951645,-.09155508482755585,0,11.793603434377337,-.3087833385928097,1.7658908555458428,-.10601743074722245,0,-70.35205161461398,-.231103377548616,-.7501899197440212,1.847597816108189,0,30.950940869491138,0,0,0,1,0])},h.polaroid=function(){h.colorMatrix([1.438,-.062,-.062,0,0,-.122,1.378,-.122,0,0,-.016,-.016,1.483,0,0,0,0,0,1,0])},h.shiftToBGR=function(){h.colorMatrix([0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,0])},h.convolution=function(u){let d=new Float32Array(u),p=1/o,v=1/s,R=X(h.convolution.SHADER);a.uniform1fv(R.uniform.m,d),a.uniform2f(R.uniform.px,p,v),E()},h.convolution.SHADER=["precision highp float;","varying vec2 vUv;","uniform sampler2D texture;","uniform vec2 px;","uniform float m[9];","void main(void) {","vec4 c11 = texture2D(texture, vUv - px);","vec4 c12 = texture2D(texture, vec2(vUv.x, vUv.y - px.y));","vec4 c13 = texture2D(texture, vec2(vUv.x + px.x, vUv.y - px.y));","vec4 c21 = texture2D(texture, vec2(vUv.x - px.x, vUv.y) );","vec4 c22 = texture2D(texture, vUv);","vec4 c23 = texture2D(texture, vec2(vUv.x + px.x, vUv.y) );","vec4 c31 = texture2D(texture, vec2(vUv.x - px.x, vUv.y + px.y) );","vec4 c32 = texture2D(texture, vec2(vUv.x, vUv.y + px.y) );","vec4 c33 = texture2D(texture, vUv + px );","gl_FragColor = ","c11 * m[0] + c12 * m[1] + c22 * m[2] +","c21 * m[3] + c22 * m[4] + c23 * m[5] +","c31 * m[6] + c32 * m[7] + c33 * m[8];","gl_FragColor.a = c22.a;","}"].join(` -`),h.detectEdges=function(){h.convolution.call(this,[0,1,0,1,-4,1,0,1,0])},h.sobelX=function(){h.convolution.call(this,[-1,0,1,-2,0,2,-1,0,1])},h.sobelY=function(){h.convolution.call(this,[-1,-2,-1,0,0,0,1,2,1])},h.sharpen=function(u){let d=u||1;h.convolution.call(this,[0,-1*d,0,-1*d,1+4*d,-1*d,0,-1*d,0])},h.emboss=function(u){let d=u||1;h.convolution.call(this,[-2*d,-1*d,0,-1*d,1,1*d,0,1*d,2*d])},h.blur=function(u){let d=u/7/o,p=u/7/s,v=X(h.blur.SHADER);a.uniform2f(v.uniform.px,0,p),E(m.INTERMEDIATE),a.uniform2f(v.uniform.px,d,0),E()},h.blur.SHADER=["precision highp float;","varying vec2 vUv;","uniform sampler2D texture;","uniform vec2 px;","void main(void) {","gl_FragColor = vec4(0.0);","gl_FragColor += texture2D(texture, vUv + vec2(-7.0*px.x, -7.0*px.y))*0.0044299121055113265;","gl_FragColor += texture2D(texture, vUv + vec2(-6.0*px.x, -6.0*px.y))*0.00895781211794;","gl_FragColor += texture2D(texture, vUv + vec2(-5.0*px.x, -5.0*px.y))*0.0215963866053;","gl_FragColor += texture2D(texture, vUv + vec2(-4.0*px.x, -4.0*px.y))*0.0443683338718;","gl_FragColor += texture2D(texture, vUv + vec2(-3.0*px.x, -3.0*px.y))*0.0776744219933;","gl_FragColor += texture2D(texture, vUv + vec2(-2.0*px.x, -2.0*px.y))*0.115876621105;","gl_FragColor += texture2D(texture, vUv + vec2(-1.0*px.x, -1.0*px.y))*0.147308056121;","gl_FragColor += texture2D(texture, vUv )*0.159576912161;","gl_FragColor += texture2D(texture, vUv + vec2( 1.0*px.x, 1.0*px.y))*0.147308056121;","gl_FragColor += texture2D(texture, vUv + vec2( 2.0*px.x, 2.0*px.y))*0.115876621105;","gl_FragColor += texture2D(texture, vUv + vec2( 3.0*px.x, 3.0*px.y))*0.0776744219933;","gl_FragColor += texture2D(texture, vUv + vec2( 4.0*px.x, 4.0*px.y))*0.0443683338718;","gl_FragColor += texture2D(texture, vUv + vec2( 5.0*px.x, 5.0*px.y))*0.0215963866053;","gl_FragColor += texture2D(texture, vUv + vec2( 6.0*px.x, 6.0*px.y))*0.00895781211794;","gl_FragColor += texture2D(texture, vUv + vec2( 7.0*px.x, 7.0*px.y))*0.0044299121055113265;","}"].join(` -`),h.pixelate=function(u){let d=u/o,p=u/s,v=X(h.pixelate.SHADER);a.uniform2f(v.uniform.size,d,p),E()},h.pixelate.SHADER=["precision highp float;","varying vec2 vUv;","uniform vec2 size;","uniform sampler2D texture;","vec2 pixelate(vec2 coord, vec2 size) {","return floor( coord / size ) * size;","}","void main(void) {","gl_FragColor = vec4(0.0);","vec2 coord = pixelate(vUv, size);","gl_FragColor += texture2D(texture, coord);","}"].join(` -`)}var n1=2048,k=null,L=null,O=null;function lt(e,t){let n;if(e instanceof Q.Tensor)n=Q.clone(e);else{let r=e.naturalWidth||e.videoWidth||e.width||e.shape&&e.shape[1]>0,A=e.naturalHeight||e.videoHeight||e.height||e.shape&&e.shape[2]>0,_=r,o=A;if(_>n1&&(_=n1,o=_*A/r),o>n1&&(o=n1,_=o*r/A),t.filter.width>0?_=t.filter.width:t.filter.height>0&&(_=r*(t.filter.height/A)),t.filter.height>0?o=t.filter.height:t.filter.width>0&&(o=A*(t.filter.width/r)),!_||!o)return b("Human: invalid input",e),{tensor:null,canvas:null};(!k||k.width!==_||k.height!==o)&&(k=typeof OffscreenCanvas!="undefined"?new OffscreenCanvas(_,o):document.createElement("canvas"),k.width!==_&&(k.width=_),k.height!==o&&(k.height=o));let s=k.getContext("2d");if(e instanceof ImageData?s.putImageData(e,0,0):s.drawImage(e,0,0,r,A,0,0,k.width,k.height),t.filter.enabled){if((!O||!L||k.width!==L.width||k.height!==L.height)&&(L=typeof OffscreenCanvas!="undefined"?new OffscreenCanvas(k.width,k.height):document.createElement("canvas"),L.width!==k.width&&(L.width=k.width),L.height!==k.height&&(L.height=k.height),O=Q.ENV.flags.IS_BROWSER?new T0({canvas:L}):null),!O)return{tensor:null,canvas:k};O.reset(),O.addFilter("brightness",t.filter.brightness),t.filter.contrast!==0&&O.addFilter("contrast",t.filter.contrast),t.filter.sharpness!==0&&O.addFilter("sharpen",t.filter.sharpness),t.filter.blur!==0&&O.addFilter("blur",t.filter.blur),t.filter.saturation!==0&&O.addFilter("saturation",t.filter.saturation),t.filter.hue!==0&&O.addFilter("hue",t.filter.hue),t.filter.negative&&O.addFilter("negative"),t.filter.sepia&&O.addFilter("sepia"),t.filter.vintage&&O.addFilter("brownie"),t.filter.sepia&&O.addFilter("sepia"),t.filter.kodachrome&&O.addFilter("kodachrome"),t.filter.technicolor&&O.addFilter("technicolor"),t.filter.polaroid&&O.addFilter("polaroid"),t.filter.pixelate!==0&&O.addFilter("pixelate",t.filter.pixelate),O.apply(k)}else L=k,O&&(O=null);let i;if(L.data){let h=[L.height,L.width,3];i=Q.tensor3d(L.data,h,"int32")}else if(t.backend==="webgl"||L instanceof ImageData)i=Q.browser.fromPixels(L);else{let h=typeof OffscreenCanvas!="undefined"?new OffscreenCanvas(_,o):document.createElement("canvas");h.width=_,h.height=o;let w=h.getContext("2d");w==null||w.drawImage(L,0,0);let f=w==null?void 0:w.getImageData(0,0,_,o);i=Q.browser.fromPixels(f)}let x=i.toFloat();n=x.expandDims(0),i.dispose(),x.dispose()}let c=t.filter.return?L:null;return{tensor:n,canvas:c}}var dt={};J(dt,{all:()=>Ln,body:()=>z0,canvas:()=>Zn,drawOptions:()=>l,face:()=>v0,gesture:()=>P0,hand:()=>M0,object:()=>R0});var j={backend:"webgl",wasmPath:"../assets/",debug:!0,async:!0,profile:!1,deallocate:!1,scoped:!1,videoOptimized:!0,warmup:"face",filter:{enabled:!0,width:0,height:0,return:!0,brightness:0,contrast:0,sharpness:0,blur:0,saturation:0,hue:0,negative:!1,sepia:!1,vintage:!1,kodachrome:!1,technicolor:!1,polaroid:!1,pixelate:0},gesture:{enabled:!0},face:{enabled:!0,detector:{modelPath:"../models/blazeface-back.json",rotation:!1,maxFaces:10,skipFrames:21,skipInitial:!1,minConfidence:.2,iouThreshold:.1,scoreThreshold:.2,return:!1},mesh:{enabled:!0,modelPath:"../models/facemesh.json"},iris:{enabled:!0,modelPath:"../models/iris.json"},description:{enabled:!0,modelPath:"../models/faceres.json",skipFrames:31},emotion:{enabled:!0,minConfidence:.1,skipFrames:32,modelPath:"../models/emotion.json"},age:{enabled:!1,modelPath:"../models/age.json",skipFrames:33},gender:{enabled:!1,minConfidence:.1,modelPath:"../models/gender.json",skipFrames:34},embedding:{enabled:!1,modelPath:"../models/mobileface.json"}},body:{enabled:!0,modelPath:"../models/posenet.json",maxDetections:10,scoreThreshold:.3,nmsRadius:20},hand:{enabled:!0,rotation:!1,skipFrames:12,skipInitial:!1,minConfidence:.1,iouThreshold:.1,scoreThreshold:.5,maxHands:1,landmarks:!0,detector:{modelPath:"../models/handdetect.json"},skeleton:{modelPath:"../models/handskeleton.json"}},object:{enabled:!1,modelPath:"../models/nanodet.json",minConfidence:.2,iouThreshold:.4,maxResults:10,skipFrames:41}};var l={color:"rgba(173, 216, 230, 0.3)",labelColor:"rgba(173, 216, 230, 1)",shadowColor:"black",font:'small-caps 16px "Segoe UI"',lineHeight:20,lineWidth:6,pointSize:2,roundRect:28,drawPoints:!1,drawLabels:!0,drawBoxes:!0,drawPolygons:!0,fillPolygons:!1,useDepth:!0,useCurves:!1,bufferedOutput:!1,useRawBoxes:!1};function r1(e,t,n,c=null){e.fillStyle=l.useDepth&&c?`rgba(${127.5+2*(c||0)}, ${127.5-2*(c||0)}, 255, 0.3)`:l.color,e.beginPath(),e.arc(t,n,l.pointSize,0,2*Math.PI),e.fill()}function be(e,t,n,c,r){if(e.beginPath(),l.useCurves){let A=(t+t+c)/2,_=(n+n+r)/2;e.ellipse(A,_,c/2,r/2,0,0,2*Math.PI)}else e.lineWidth=l.lineWidth,e.moveTo(t+l.roundRect,n),e.lineTo(t+c-l.roundRect,n),e.quadraticCurveTo(t+c,n,t+c,n+l.roundRect),e.lineTo(t+c,n+r-l.roundRect),e.quadraticCurveTo(t+c,n+r,t+c-l.roundRect,n+r),e.lineTo(t+l.roundRect,n+r),e.quadraticCurveTo(t,n+r,t,n+r-l.roundRect),e.lineTo(t,n+l.roundRect),e.quadraticCurveTo(t,n,t+l.roundRect,n),e.closePath();e.stroke()}function ft(e,t=[]){if(!(t===void 0||t.length===0)){e.beginPath(),e.moveTo(t[0][0],t[0][1]);for(let n of t)e.strokeStyle=l.useDepth&&n[2]?`rgba(${127.5+2*n[2]}, ${127.5-2*n[2]}, 255, 0.3)`:l.color,e.fillStyle=l.useDepth&&n[2]?`rgba(${127.5+2*n[2]}, ${127.5-2*n[2]}, 255, 0.3)`:l.color,e.lineTo(n[0],parseInt(n[1]));e.stroke(),l.fillPolygons&&(e.closePath(),e.fill())}}function c1(e,t=[]){if(!(t===void 0||t.length===0)){if(!l.useCurves||t.length<=2){ft(e,t);return}e.moveTo(t[0][0],t[0][1]);for(let n=0;n1&&_[1].length>0){let o=A[1]>0?`#${A[1]}`:"",s=`${A[0]} ${o}: ${_[1]}`;l.shadowColor&&l.shadowColor!==""&&(n.fillStyle=l.shadowColor,n.fillText(s,8,2+c*l.lineHeight)),n.fillStyle=l.labelColor,n.fillText(s,6,0+c*l.lineHeight),c+=1}}}async function v0(e,t){if(!t||!e||!(e instanceof HTMLCanvasElement))return;let n=e.getContext("2d");if(!!n)for(let c of t){n.font=l.font,n.strokeStyle=l.color,n.fillStyle=l.color,l.drawBoxes&&(l.useRawBoxes?be(n,e.width*c.boxRaw[0],e.height*c.boxRaw[1],e.width*c.boxRaw[2],e.height*c.boxRaw[3]):be(n,c.box[0],c.box[1],c.box[2],c.box[3]));let r=[];if(r.push(`face confidence: ${Math.trunc(100*c.confidence)}%`),c.genderConfidence&&r.push(`${c.gender||""} ${Math.trunc(100*c.genderConfidence)}% confident`),c.age&&r.push(`age: ${c.age||""}`),c.iris&&r.push(`iris distance: ${c.iris}`),c.emotion&&c.emotion.length>0){let A=c.emotion.map(_=>`${Math.trunc(100*_.score)}% ${_.emotion}`);r.push(A.join(" "))}c.angle&&c.angle.roll&&r.push(`roll: ${Math.trunc(100*c.angle.roll)/100} yaw:${Math.trunc(100*c.angle.yaw)/100} pitch:${Math.trunc(100*c.angle.pitch)/100}`),r.length===0&&r.push("face"),n.fillStyle=l.color;for(let A=r.length-1;A>=0;A--){let _=Math.max(c.box[0],0),o=A*l.lineHeight+c.box[1];l.shadowColor&&l.shadowColor!==""&&(n.fillStyle=l.shadowColor,n.fillText(r[A],_+5,o+16)),n.fillStyle=l.labelColor,n.fillText(r[A],_+4,o+15)}if(n.lineWidth=1,c.mesh&&c.mesh.length>0){if(l.drawPoints)for(let A of c.mesh)r1(n,A[0],A[1],A[2]);if(l.drawPolygons){n.lineWidth=1;for(let A=0;Ac.mesh[o]);ft(n,_)}if(c.annotations&&c.annotations.leftEyeIris){n.strokeStyle=l.useDepth?"rgba(255, 200, 255, 0.3)":l.color,n.beginPath();let A=Math.abs(c.annotations.leftEyeIris[3][0]-c.annotations.leftEyeIris[1][0])/2,_=Math.abs(c.annotations.leftEyeIris[4][1]-c.annotations.leftEyeIris[2][1])/2;n.ellipse(c.annotations.leftEyeIris[0][0],c.annotations.leftEyeIris[0][1],A,_,0,0,2*Math.PI),n.stroke(),l.fillPolygons&&(n.fillStyle=l.useDepth?"rgba(255, 255, 200, 0.3)":l.color,n.fill())}if(c.annotations&&c.annotations.rightEyeIris){n.strokeStyle=l.useDepth?"rgba(255, 200, 255, 0.3)":l.color,n.beginPath();let A=Math.abs(c.annotations.rightEyeIris[3][0]-c.annotations.rightEyeIris[1][0])/2,_=Math.abs(c.annotations.rightEyeIris[4][1]-c.annotations.rightEyeIris[2][1])/2;n.ellipse(c.annotations.rightEyeIris[0][0],c.annotations.rightEyeIris[0][1],A,_,0,0,2*Math.PI),n.stroke(),l.fillPolygons&&(n.fillStyle=l.useDepth?"rgba(255, 255, 200, 0.3)":l.color,n.fill())}}}}}var ae=[];async function z0(e,t){if(!t||!e||!(e instanceof HTMLCanvasElement))return;let n=e.getContext("2d");if(!!n){n.lineJoin="round";for(let c=0;c_.part==="leftShoulder"),r&&r.score>j.body.scoreThreshold&&A.push([r.position.x,r.position.y]),r=t[c].keypoints.find(_=>_.part==="rightShoulder"),r&&r.score>j.body.scoreThreshold&&A.push([r.position.x,r.position.y]),r=t[c].keypoints.find(_=>_.part==="rightHip"),r&&r.score>j.body.scoreThreshold&&A.push([r.position.x,r.position.y]),r=t[c].keypoints.find(_=>_.part==="leftHip"),r&&r.score>j.body.scoreThreshold&&A.push([r.position.x,r.position.y]),r=t[c].keypoints.find(_=>_.part==="leftShoulder"),r&&r.score>j.body.scoreThreshold&&A.push([r.position.x,r.position.y]),A.length===5&&ft(n,A),A.length=0,r=t[c].keypoints.find(_=>_.part==="leftHip"),r&&r.score>j.body.scoreThreshold&&A.push([r.position.x,r.position.y]),r=t[c].keypoints.find(_=>_.part==="leftKnee"),r&&r.score>j.body.scoreThreshold&&A.push([r.position.x,r.position.y]),r=t[c].keypoints.find(_=>_.part==="leftAnkle"),r&&r.score>j.body.scoreThreshold&&A.push([r.position.x,r.position.y]),r=t[c].keypoints.find(_=>_.part==="leftHeel"),r&&r.score>j.body.scoreThreshold&&A.push([r.position.x,r.position.y]),r=t[c].keypoints.find(_=>_.part==="leftFoot"),r&&r.score>j.body.scoreThreshold&&A.push([r.position.x,r.position.y]),c1(n,A),A.length=0,r=t[c].keypoints.find(_=>_.part==="rightHip"),r&&r.score>j.body.scoreThreshold&&A.push([r.position.x,r.position.y]),r=t[c].keypoints.find(_=>_.part==="rightKnee"),r&&r.score>j.body.scoreThreshold&&A.push([r.position.x,r.position.y]),r=t[c].keypoints.find(_=>_.part==="rightAnkle"),r&&r.score>j.body.scoreThreshold&&A.push([r.position.x,r.position.y]),r=t[c].keypoints.find(_=>_.part==="rightHeel"),r&&r.score>j.body.scoreThreshold&&A.push([r.position.x,r.position.y]),r=t[c].keypoints.find(_=>_.part==="rightFoot"),r&&r.score>j.body.scoreThreshold&&A.push([r.position.x,r.position.y]),c1(n,A),A.length=0,r=t[c].keypoints.find(_=>_.part==="leftShoulder"),r&&r.score>j.body.scoreThreshold&&A.push([r.position.x,r.position.y]),r=t[c].keypoints.find(_=>_.part==="leftElbow"),r&&r.score>j.body.scoreThreshold&&A.push([r.position.x,r.position.y]),r=t[c].keypoints.find(_=>_.part==="leftWrist"),r&&r.score>j.body.scoreThreshold&&A.push([r.position.x,r.position.y]),r=t[c].keypoints.find(_=>_.part==="leftPalm"),r&&r.score>j.body.scoreThreshold&&A.push([r.position.x,r.position.y]),c1(n,A),A.length=0,r=t[c].keypoints.find(_=>_.part==="rightShoulder"),r&&r.score>j.body.scoreThreshold&&A.push([r.position.x,r.position.y]),r=t[c].keypoints.find(_=>_.part==="rightElbow"),r&&r.score>j.body.scoreThreshold&&A.push([r.position.x,r.position.y]),r=t[c].keypoints.find(_=>_.part==="rightWrist"),r&&r.score>j.body.scoreThreshold&&A.push([r.position.x,r.position.y]),r=t[c].keypoints.find(_=>_.part==="rightPalm"),r&&r.score>j.body.scoreThreshold&&A.push([r.position.x,r.position.y]),c1(n,A)}}}}async function M0(e,t){if(!t||!e||!(e instanceof HTMLCanvasElement))return;let n=e.getContext("2d");if(!!n){n.lineJoin="round",n.font=l.font;for(let c of t){if(l.drawBoxes&&(n.strokeStyle=l.color,n.fillStyle=l.color,l.useRawBoxes?be(n,e.width*c.boxRaw[0],e.height*c.boxRaw[1],e.width*c.boxRaw[2],e.height*c.boxRaw[3]):be(n,c.box[0],c.box[1],c.box[2],c.box[3]),l.drawLabels&&(l.shadowColor&&l.shadowColor!==""&&(n.fillStyle=l.shadowColor,n.fillText("hand",c.box[0]+3,1+c.box[1]+l.lineHeight,c.box[2])),n.fillStyle=l.labelColor,n.fillText("hand",c.box[0]+2,0+c.box[1]+l.lineHeight,c.box[2])),n.stroke()),l.drawPoints&&c.landmarks&&c.landmarks.length>0)for(let r of c.landmarks)n.fillStyle=l.useDepth?`rgba(${127.5+2*r[2]}, ${127.5-2*r[2]}, 255, 0.5)`:l.color,r1(n,r[0],r[1]);if(l.drawPolygons){let r=A=>{if(!!A)for(let _=0;_0?_-1:0][0],A[_>0?_-1:0][1]),n.lineTo(A[_][0],A[_][1]),n.stroke()};r(c.annotations.indexFinger),r(c.annotations.middleFinger),r(c.annotations.ringFinger),r(c.annotations.pinky),r(c.annotations.thumb)}}}}async function R0(e,t){if(!t||!e||!(e instanceof HTMLCanvasElement))return;let n=e.getContext("2d");if(!!n){n.lineJoin="round",n.font=l.font;for(let c of t)if(l.drawBoxes){if(n.strokeStyle=l.color,n.fillStyle=l.color,l.useRawBoxes?be(n,e.width*c.boxRaw[0],e.height*c.boxRaw[1],e.width*c.boxRaw[2],e.height*c.boxRaw[3]):be(n,c.box[0],c.box[1],c.box[2],c.box[3]),l.drawLabels){let r=`${Math.round(100*c.score)}% ${c.label}`;l.shadowColor&&l.shadowColor!==""&&(n.fillStyle=l.shadowColor,n.fillText(r,c.box[0]+3,1+c.box[1]+l.lineHeight,c.box[2])),n.fillStyle=l.labelColor,n.fillText(r,c.box[0]+2,0+c.box[1]+l.lineHeight,c.box[2])}n.stroke()}}}async function Zn(e,t){if(!e||!t||!(e instanceof HTMLCanvasElement)||!(t instanceof HTMLCanvasElement))return;let n=e.getContext("2d");n==null||n.drawImage(e,0,0)}async function Ln(e,t){!t||!e||e instanceof HTMLCanvasElement&&(v0(e,t.face),z0(e,t.body),M0(e,t.hand),P0(e,t.gesture),R0(e,t.object))}var A1=` +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __markAsModule = (target) => __defProp(target, "__esModule", {value: true}); +var __commonJS = (callback, module) => () => { + if (!module) { + module = {exports: {}}; + callback(module.exports, module); + } + return module.exports; +}; +var __export = (target, all2) => { + for (var name in all2) + __defProp(target, name, {get: all2[name], enumerable: true}); +}; +var __exportStar = (target, module, desc) => { + if (module && typeof module === "object" || typeof module === "function") { + for (let key of __getOwnPropNames(module)) + if (!__hasOwnProp.call(target, key) && key !== "default") + __defProp(target, key, {get: () => module[key], enumerable: !(desc = __getOwnPropDesc(module, key)) || desc.enumerable}); + } + return target; +}; +var __toModule = (module) => { + return __exportStar(__markAsModule(__defProp(module != null ? __create(__getProtoOf(module)) : {}, "default", module && module.__esModule && "default" in module ? {get: () => module.default, enumerable: true} : {value: module, enumerable: true})), module); +}; +var __accessCheck = (obj, member, msg) => { + if (!member.has(obj)) + throw TypeError("Cannot " + msg); +}; +var __privateGet = (obj, member, getter) => { + __accessCheck(obj, member, "read from private field"); + return getter ? getter.call(obj) : member.get(obj); +}; +var __privateSet = (obj, member, value, setter) => { + __accessCheck(obj, member, "write to private field"); + setter ? setter.call(obj, value) : member.set(obj, value); + return value; +}; + +// dist/tfjs.esm.js +import { + version +} from "@tensorflow/tfjs/package.json"; +import { + version as version2 +} from "@tensorflow/tfjs-core/package.json"; +import { + version as version3 +} from "@tensorflow/tfjs-data/package.json"; +import { + version as version4 +} from "@tensorflow/tfjs-layers/package.json"; +import { + version as version5 +} from "@tensorflow/tfjs-converter/package.json"; +import {version_cpu} from "@tensorflow/tfjs-backend-cpu/dist/index.js"; +import {version_webgl} from "@tensorflow/tfjs-backend-webgl/dist/index.js"; +import {version_wasm} from "@tensorflow/tfjs-backend-wasm/dist/index.js"; +import * as dist_star from "@tensorflow/tfjs-core/dist/index.js"; +import * as dist_star2 from "@tensorflow/tfjs-layers/dist/index.js"; +import * as dist_star3 from "@tensorflow/tfjs-converter/dist/index.js"; +import * as data from "@tensorflow/tfjs-data/dist/index.js"; +import * as dist_star4 from "@tensorflow/tfjs-backend-cpu/dist/index.js"; +import * as dist_star5 from "@tensorflow/tfjs-backend-webgl/dist/index.js"; +import * as dist_star6 from "@tensorflow/tfjs-backend-wasm/dist/index.js"; +var require_tfjs_esm = __commonJS((exports) => { + __markAsModule(exports); + __export(exports, { + data: () => data, + version: () => version62 + }); + __exportStar(exports, dist_star); + __exportStar(exports, dist_star2); + __exportStar(exports, dist_star3); + __exportStar(exports, dist_star4); + __exportStar(exports, dist_star5); + __exportStar(exports, dist_star6); + var version62 = { + tfjs: version, + "tfjs-core": version2, + "tfjs-data": version3, + "tfjs-layers": version4, + "tfjs-converter": version5, + "tfjs-backend-cpu": version_cpu, + "tfjs-backend-webgl": version_webgl, + "tfjs-backend-wasm": version_wasm + }; +}); + +// src/blazeface/facemesh.ts +var require_facemesh = __commonJS((exports) => { + __markAsModule(exports); + __export(exports, { + MediaPipeFaceMesh: () => MediaPipeFaceMesh, + load: () => load11 + }); + var tf21 = require_tfjs_esm(); + var MediaPipeFaceMesh = class { + constructor(blazeFace, blazeMeshModel, irisModel, config3) { + this.facePipeline = new Pipeline(blazeFace, blazeMeshModel, irisModel); + this.config = config3; + } + async estimateFaces(input, config3) { + const predictions = await this.facePipeline.predict(input, config3); + const results = []; + for (const prediction of predictions || []) { + if (prediction.isDisposedInternal) + continue; + const mesh = prediction.coords ? prediction.coords.arraySync() : []; + const meshRaw = mesh.map((pt) => [ + pt[0] / input.shape[2], + pt[1] / input.shape[1], + pt[2] / this.facePipeline.meshSize + ]); + const annotations3 = {}; + if (mesh && mesh.length > 0) { + for (const key of Object.keys(MESH_ANNOTATIONS)) + annotations3[key] = MESH_ANNOTATIONS[key].map((index) => mesh[index]); + } + const box3 = prediction.box ? [ + Math.max(0, prediction.box.startPoint[0]), + Math.max(0, prediction.box.startPoint[1]), + Math.min(input.shape[1], prediction.box.endPoint[0]) - Math.max(0, prediction.box.startPoint[0]), + Math.min(input.shape[2], prediction.box.endPoint[1]) - Math.max(0, prediction.box.startPoint[1]) + ] : 0; + const boxRaw = prediction.box ? [ + prediction.box.startPoint[0] / input.shape[2], + prediction.box.startPoint[1] / input.shape[1], + (prediction.box.endPoint[0] - prediction.box.startPoint[0]) / input.shape[2], + (prediction.box.endPoint[1] - prediction.box.startPoint[1]) / input.shape[1] + ] : []; + results.push({ + confidence: prediction.faceConfidence || prediction.boxConfidence || 0, + boxConfidence: prediction.boxConfidence, + faceConfidence: prediction.faceConfidence, + box: box3, + boxRaw, + mesh, + meshRaw, + annotations: annotations3, + image: prediction.image ? prediction.image.clone() : null + }); + if (prediction.coords) + prediction.coords.dispose(); + if (prediction.image) + prediction.image.dispose(); + } + return results; + } + }; + var faceModels = [null, null, null]; + async function load11(config3) { + faceModels = await Promise.all([ + !faceModels[0] && config3.face.enabled ? load6(config3) : null, + !faceModels[1] && config3.face.mesh.enabled ? tf21.loadGraphModel(config3.face.mesh.modelPath, {fromTFHub: config3.face.mesh.modelPath.includes("tfhub.dev")}) : null, + !faceModels[2] && config3.face.iris.enabled ? tf21.loadGraphModel(config3.face.iris.modelPath, {fromTFHub: config3.face.iris.modelPath.includes("tfhub.dev")}) : null + ]); + const faceMesh = new MediaPipeFaceMesh(faceModels[0], faceModels[1], faceModels[2], config3); + if (config3.face.mesh.enabled && config3.debug) + log(`load model: ${config3.face.mesh.modelPath.match(/\/(.*)\./)[1]}`); + if (config3.face.iris.enabled && config3.debug) + log(`load model: ${config3.face.iris.modelPath.match(/\/(.*)\./)[1]}`); + return faceMesh; + } + exports.triangulation = TRI468; +}); + +// src/posenet/keypoints.ts +var require_keypoints = __commonJS((exports) => { + __markAsModule(exports); + __export(exports, { + NUM_KEYPOINTS: () => NUM_KEYPOINTS3, + connectedPartIndices: () => connectedPartIndices, + partChannels: () => partChannels, + partIds: () => partIds2, + partNames: () => partNames2, + poseChain: () => poseChain2 + }); + var partNames2 = [ + "nose", + "leftEye", + "rightEye", + "leftEar", + "rightEar", + "leftShoulder", + "rightShoulder", + "leftElbow", + "rightElbow", + "leftWrist", + "rightWrist", + "leftHip", + "rightHip", + "leftKnee", + "rightKnee", + "leftAnkle", + "rightAnkle" + ]; + var NUM_KEYPOINTS3 = exports.partNames.length; + var partIds2 = exports.partNames.reduce((result, jointName, i) => { + result[jointName] = i; + return result; + }, {}); + var connectedPartNames = [ + ["leftHip", "leftShoulder"], + ["leftElbow", "leftShoulder"], + ["leftElbow", "leftWrist"], + ["leftHip", "leftKnee"], + ["leftKnee", "leftAnkle"], + ["rightHip", "rightShoulder"], + ["rightElbow", "rightShoulder"], + ["rightElbow", "rightWrist"], + ["rightHip", "rightKnee"], + ["rightKnee", "rightAnkle"], + ["leftShoulder", "rightShoulder"], + ["leftHip", "rightHip"] + ]; + var connectedPartIndices = connectedPartNames.map(([jointNameA, jointNameB]) => [partIds2[jointNameA], partIds2[jointNameB]]); + var poseChain2 = [ + ["nose", "leftEye"], + ["leftEye", "leftEar"], + ["nose", "rightEye"], + ["rightEye", "rightEar"], + ["nose", "leftShoulder"], + ["leftShoulder", "leftElbow"], + ["leftElbow", "leftWrist"], + ["leftShoulder", "leftHip"], + ["leftHip", "leftKnee"], + ["leftKnee", "leftAnkle"], + ["nose", "rightShoulder"], + ["rightShoulder", "rightElbow"], + ["rightElbow", "rightWrist"], + ["rightShoulder", "rightHip"], + ["rightHip", "rightKnee"], + ["rightKnee", "rightAnkle"] + ]; + var partChannels = [ + "left_face", + "right_face", + "right_upper_leg_front", + "right_lower_leg_back", + "right_upper_leg_back", + "left_lower_leg_front", + "left_upper_leg_front", + "left_upper_leg_back", + "left_lower_leg_back", + "right_feet", + "right_lower_leg_front", + "left_feet", + "torso_front", + "torso_back", + "right_upper_arm_front", + "right_upper_arm_back", + "right_lower_arm_back", + "left_lower_arm_front", + "left_upper_arm_front", + "left_upper_arm_back", + "left_lower_arm_back", + "right_hand", + "right_lower_arm_front", + "left_hand" + ]; +}); + +// src/helpers.ts +function log(...msg) { + const dt = new Date(); + const ts = `${dt.getHours().toString().padStart(2, "0")}:${dt.getMinutes().toString().padStart(2, "0")}:${dt.getSeconds().toString().padStart(2, "0")}.${dt.getMilliseconds().toString().padStart(3, "0")}`; + if (msg) + console.log(ts, "Human:", ...msg); +} +var now = () => { + if (typeof performance !== "undefined") + return performance.now(); + return parseInt((Number(process.hrtime.bigint()) / 1e3 / 1e3).toString()); +}; +function mergeDeep(...objects) { + const isObject = (obj) => obj && typeof obj === "object"; + return objects.reduce((prev, obj) => { + Object.keys(obj || {}).forEach((key) => { + const pVal = prev[key]; + const oVal = obj[key]; + if (Array.isArray(pVal) && Array.isArray(oVal)) + prev[key] = pVal.concat(...oVal); + else if (isObject(pVal) && isObject(oVal)) + prev[key] = mergeDeep(pVal, oVal); + else + prev[key] = oVal; + }); + return prev; + }, {}); +} + +// src/sysinfo.ts +function info() { + let platform; + let agent; + if (typeof navigator !== "undefined") { + const raw = navigator.userAgent.match(/\(([^()]+)\)/g); + if (raw && raw[0]) { + platform = raw[0].match(/\(([^()]+)\)/g)[0].replace(/\(|\)/g, ""); + agent = navigator.userAgent.replace(raw[0], ""); + if (platform[1]) + agent = agent.replace(raw[1], ""); + agent = agent.replace(/ /g, " "); + } + } else if (typeof process !== "undefined") { + platform = `${process.platform} ${process.arch}`; + agent = `NodeJS ${process.version}`; + } + return {platform, agent}; +} + +// src/human.ts +var tf20 = require_tfjs_esm(); + +// src/tfjs/backend.ts +var tf = require_tfjs_esm(); +var config = { + name: "humangl", + priority: 99, + canvas: null, + gl: null, + width: 1024, + height: 1024, + webGLattr: { + alpha: false, + antialias: false, + premultipliedAlpha: false, + preserveDrawingBuffer: false, + depth: false, + stencil: false, + failIfMajorPerformanceCaveat: false, + desynchronized: true + } +}; +function register() { + if (!tf.findBackend(config.name)) { + log("backend registration:", config.name); + try { + config.canvas = typeof OffscreenCanvas !== "undefined" ? new OffscreenCanvas(config.width, config.height) : document.createElement("canvas"); + } catch (err) { + log("error: cannot create canvas:", err); + return; + } + try { + config.gl = config.canvas.getContext("webgl2", config.webGLattr); + } catch (err) { + log("error: cannot get WebGL2 context:", err); + return; + } + try { + tf.setWebGLContext(2, config.gl); + } catch (err) { + log("error: cannot set WebGL2 context:", err); + return; + } + try { + const ctx = new tf.GPGPUContext(config.gl); + tf.registerBackend(config.name, () => new tf.MathBackendWebGL(ctx), config.priority); + } catch (err) { + log("error: cannot register WebGL backend:", err); + return; + } + try { + const kernels = tf.getKernelsForBackend("webgl"); + kernels.forEach((kernelConfig) => { + const newKernelConfig = {...kernelConfig, backendName: config.name}; + tf.registerKernel(newKernelConfig); + }); + } catch (err) { + log("error: cannot update WebGL backend registration:", err); + return; + } + try { + tf.ENV.set("WEBGL_VERSION", 2); + } catch (err) { + log("error: cannot set WebGL backend flags:", err); + return; + } + log("backend registered:", config.name); + } +} + +// src/age/age.ts +var age_exports = {}; +__export(age_exports, { + load: () => load, + predict: () => predict +}); +var tf2 = require_tfjs_esm(); + +// src/profile.ts +var data2 = {}; +function run(name, raw) { + if (!raw || !raw.kernels) + return; + const maxResults = 5; + const time = raw.kernels.filter((a) => a.kernelTimeMs > 0).reduce((a, b) => a += b.kernelTimeMs, 0); + const slowest = raw.kernels.map((a, i) => { + a.id = i; + return a; + }).filter((a) => a.kernelTimeMs > 0).sort((a, b) => b.kernelTimeMs - a.kernelTimeMs); + const largest = raw.kernels.map((a, i) => { + a.id = i; + return a; + }).filter((a) => a.totalBytesSnapshot > 0).sort((a, b) => b.totalBytesSnapshot - a.totalBytesSnapshot); + if (slowest.length > maxResults) + slowest.length = maxResults; + if (largest.length > maxResults) + largest.length = maxResults; + const res = {newBytes: raw.newBytes, newTensors: raw.newTensors, peakBytes: raw.peakBytes, numKernelOps: raw.kernels.length, timeKernelOps: time, slowestKernelOps: slowest, largestKernelOps: largest}; + data2[name] = res; + log("Human profiler", name, res); +} + +// src/age/age.ts +var model; +var last = {age: 0}; +var skipped = Number.MAX_SAFE_INTEGER; +async function load(config3) { + if (!model) { + model = await tf2.loadGraphModel(config3.face.age.modelPath); + if (config3.debug) + log(`load model: ${config3.face.age.modelPath.match(/\/(.*)\./)[1]}`); + } + return model; +} +async function predict(image15, config3) { + if (!model) + return null; + if (skipped < config3.face.age.skipFrames && config3.videoOptimized && last.age && last.age > 0) { + skipped++; + return last; + } + if (config3.videoOptimized) + skipped = 0; + else + skipped = Number.MAX_SAFE_INTEGER; + return new Promise(async (resolve) => { + const resize = tf2.image.resizeBilinear(image15, [model.inputs[0].shape[2], model.inputs[0].shape[1]], false); + const enhance3 = tf2.mul(resize, [255]); + tf2.dispose(resize); + let ageT; + const obj = {age: 0}; + if (!config3.profile) { + if (config3.face.age.enabled) + ageT = await model.predict(enhance3); + } else { + const profileAge = config3.face.age.enabled ? await tf2.profile(() => model.predict(enhance3)) : {}; + ageT = profileAge.result.clone(); + profileAge.result.dispose(); + run("age", profileAge); + } + enhance3.dispose(); + if (ageT) { + const data3 = ageT.dataSync(); + obj.age = Math.trunc(10 * data3[0]) / 10; + } + ageT.dispose(); + last = obj; + resolve(obj); + }); +} + +// src/gender/gender.ts +var gender_exports = {}; +__export(gender_exports, { + load: () => load2, + predict: () => predict2 +}); +var tf3 = require_tfjs_esm(); +var model2; +var last2 = {gender: ""}; +var skipped2 = Number.MAX_SAFE_INTEGER; +var alternative = false; +var rgb = [0.2989, 0.587, 0.114]; +async function load2(config3) { + if (!model2) { + model2 = await tf3.loadGraphModel(config3.face.gender.modelPath); + alternative = model2.inputs[0].shape[3] === 1; + if (config3.debug) + log(`load model: ${config3.face.gender.modelPath.match(/\/(.*)\./)[1]}`); + } + return model2; +} +async function predict2(image15, config3) { + if (!model2) + return null; + if (skipped2 < config3.face.gender.skipFrames && config3.videoOptimized && last2.gender !== "") { + skipped2++; + return last2; + } + if (config3.videoOptimized) + skipped2 = 0; + else + skipped2 = Number.MAX_SAFE_INTEGER; + return new Promise(async (resolve) => { + const resize = tf3.image.resizeBilinear(image15, [model2.inputs[0].shape[2], model2.inputs[0].shape[1]], false); + let enhance3; + if (alternative) { + enhance3 = tf3.tidy(() => { + const [red, green, blue] = tf3.split(resize, 3, 3); + const redNorm = tf3.mul(red, rgb[0]); + const greenNorm = tf3.mul(green, rgb[1]); + const blueNorm = tf3.mul(blue, rgb[2]); + const grayscale = tf3.addN([redNorm, greenNorm, blueNorm]); + const normalize = grayscale.sub(0.5).mul(2); + return normalize; + }); + } else { + enhance3 = tf3.mul(resize, [255]); + } + tf3.dispose(resize); + let genderT; + const obj = {gender: "", confidence: 0}; + if (!config3.profile) { + if (config3.face.gender.enabled) + genderT = await model2.predict(enhance3); + } else { + const profileGender = config3.face.gender.enabled ? await tf3.profile(() => model2.predict(enhance3)) : {}; + genderT = profileGender.result.clone(); + profileGender.result.dispose(); + run("gender", profileGender); + } + enhance3.dispose(); + if (genderT) { + if (!Array.isArray(genderT)) { + const data3 = genderT.dataSync(); + if (alternative) { + if (data3[0] > config3.face.gender.minConfidence || data3[1] > config3.face.gender.minConfidence) { + obj.gender = data3[0] > data3[1] ? "female" : "male"; + obj.confidence = data3[0] > data3[1] ? Math.trunc(100 * data3[0]) / 100 : Math.trunc(100 * data3[1]) / 100; + } + } else { + const confidence = Math.trunc(200 * Math.abs(data3[0] - 0.5)) / 100; + if (confidence > config3.face.gender.minConfidence) { + obj.gender = data3[0] <= 0.5 ? "female" : "male"; + obj.confidence = Math.min(0.99, confidence); + } + } + genderT.dispose(); + } else { + const gender2 = genderT[0].dataSync(); + const confidence = Math.trunc(200 * Math.abs(gender2[0] - 0.5)) / 100; + if (confidence > config3.face.gender.minConfidence) { + obj.gender = gender2[0] <= 0.5 ? "female" : "male"; + obj.confidence = Math.min(0.99, confidence); + } + genderT.forEach((t) => tf3.dispose(t)); + } + } + last2 = obj; + resolve(obj); + }); +} + +// src/emotion/emotion.ts +var emotion_exports = {}; +__export(emotion_exports, { + load: () => load3, + predict: () => predict3 +}); +var tf4 = require_tfjs_esm(); +var annotations = ["angry", "disgust", "fear", "happy", "sad", "surprise", "neutral"]; +var model3; +var last3 = []; +var skipped3 = Number.MAX_SAFE_INTEGER; +var rgb2 = [0.2989, 0.587, 0.114]; +async function load3(config3) { + if (!model3) { + model3 = await tf4.loadGraphModel(config3.face.emotion.modelPath); + if (config3.debug) + log(`load model: ${config3.face.emotion.modelPath.match(/\/(.*)\./)[1]}`); + } + return model3; +} +async function predict3(image15, config3) { + if (!model3) + return null; + if (skipped3 < config3.face.emotion.skipFrames && config3.videoOptimized && last3.length > 0) { + skipped3++; + return last3; + } + if (config3.videoOptimized) + skipped3 = 0; + else + skipped3 = Number.MAX_SAFE_INTEGER; + return new Promise(async (resolve) => { + const resize = tf4.image.resizeBilinear(image15, [model3.inputs[0].shape[2], model3.inputs[0].shape[1]], false); + const [red, green, blue] = tf4.split(resize, 3, 3); + resize.dispose(); + const redNorm = tf4.mul(red, rgb2[0]); + const greenNorm = tf4.mul(green, rgb2[1]); + const blueNorm = tf4.mul(blue, rgb2[2]); + red.dispose(); + green.dispose(); + blue.dispose(); + const grayscale = tf4.addN([redNorm, greenNorm, blueNorm]); + redNorm.dispose(); + greenNorm.dispose(); + blueNorm.dispose(); + const normalize = tf4.tidy(() => grayscale.sub(0.5).mul(2)); + grayscale.dispose(); + const obj = []; + if (config3.face.emotion.enabled) { + let data3; + if (!config3.profile) { + const emotionT = await model3.predict(normalize); + data3 = emotionT.dataSync(); + tf4.dispose(emotionT); + } else { + const profileData = await tf4.profile(() => model3.predict(normalize)); + data3 = profileData.result.dataSync(); + profileData.result.dispose(); + run("emotion", profileData); + } + for (let i = 0; i < data3.length; i++) { + if (data3[i] > config3.face.emotion.minConfidence) + obj.push({score: Math.min(0.99, Math.trunc(100 * data3[i]) / 100), emotion: annotations[i]}); + } + obj.sort((a, b) => b.score - a.score); + } + normalize.dispose(); + last3 = obj; + resolve(obj); + }); +} + +// src/embedding/embedding.ts +var tf5 = require_tfjs_esm(); +var model4; +async function load4(config3) { + if (!model4) { + model4 = await tf5.loadGraphModel(config3.face.embedding.modelPath); + if (config3.debug) + log(`load model: ${config3.face.embedding.modelPath.match(/\/(.*)\./)[1]}`); + } + return model4; +} +function similarity(embedding1, embedding22, order = 2) { + if (!embedding1 || !embedding22) + return 0; + if ((embedding1 == null ? void 0 : embedding1.length) === 0 || (embedding22 == null ? void 0 : embedding22.length) === 0) + return 0; + if ((embedding1 == null ? void 0 : embedding1.length) !== (embedding22 == null ? void 0 : embedding22.length)) + return 0; + const distance = embedding1.map((val, i) => Math.abs(embedding1[i] - embedding22[i]) ** order).reduce((sum, now2) => sum + now2, 0) ** (1 / order); + const res = Math.max(Math.trunc(1e3 * (1 - distance)) / 1e3, 0); + return res; +} +function enhance(input) { + const image15 = tf5.tidy(() => { + const box3 = [[0.05, 0.15, 0.85, 0.85]]; + const tensor = input.image || input.tensor; + if (!(tensor instanceof tf5.Tensor)) + return null; + const crop = tensor.shape.length === 3 ? tf5.image.cropAndResize(tf5.expandDims(tensor, 0), box3, [0], [model4.inputs[0].shape[2], model4.inputs[0].shape[1]]) : tf5.image.cropAndResize(tensor, box3, [0], [model4.inputs[0].shape[2], model4.inputs[0].shape[1]]); + const rgb3 = [0.2989, 0.587, 0.114]; + const [red, green, blue] = tf5.split(crop, 3, 3); + const redNorm = tf5.mul(red, rgb3[0]); + const greenNorm = tf5.mul(green, rgb3[1]); + const blueNorm = tf5.mul(blue, rgb3[2]); + const grayscale = tf5.addN([redNorm, greenNorm, blueNorm]); + const merge = tf5.stack([grayscale, grayscale, grayscale], 3).squeeze(4); + const darken = merge.sub(merge.min()); + const lighten = darken.div(darken.max()); + return lighten; + }); + return image15; +} +async function predict4(input, config3) { + if (!model4) + return []; + return new Promise(async (resolve) => { + let data3 = []; + if (config3.face.embedding.enabled) { + const image15 = enhance(input); + if (!config3.profile) { + data3 = tf5.tidy(() => { + const res = model4.predict(image15); + const reshape3 = res.reshape([128, 2]); + const reduce = reshape3.logSumExp(1); + const output = reduce.dataSync(); + return [...output]; + }); + } else { + const profileData = await tf5.profile(() => model4.predict({img_inputs: image15})); + data3 = [...profileData.result.dataSync()]; + profileData.result.dispose(); + run("emotion", profileData); + } + tf5.dispose(image15); + } + resolve(data3); + }); +} + +// src/faceres/faceres.ts +var faceres_exports = {}; +__export(faceres_exports, { + enhance: () => enhance2, + load: () => load5, + match: () => match, + predict: () => predict5, + similarity: () => similarity2 +}); +var tf6 = require_tfjs_esm(); +var model5; +var last4 = {age: 0}; +var skipped4 = Number.MAX_SAFE_INTEGER; +async function load5(config3) { + if (!model5) { + model5 = await tf6.loadGraphModel(config3.face.description.modelPath); + if (config3.debug) + log(`load model: ${config3.face.description.modelPath.match(/\/(.*)\./)[1]}`); + } + return model5; +} +function similarity2(embedding1, embedding22, order = 2) { + if (!embedding1 || !embedding22) + return 0; + if ((embedding1 == null ? void 0 : embedding1.length) === 0 || (embedding22 == null ? void 0 : embedding22.length) === 0) + return 0; + if ((embedding1 == null ? void 0 : embedding1.length) !== (embedding22 == null ? void 0 : embedding22.length)) + return 0; + const distance = 4 * embedding1.map((val, i) => Math.abs(embedding1[i] - embedding22[i]) ** order).reduce((sum, now2) => sum + now2, 0) ** (1 / order); + const res = Math.max(0, 100 - distance) / 100; + return res; +} +function match(embedding3, db, threshold = 0) { + let best = {similarity: 0, name: "", source: "", embedding: []}; + if (!embedding3 || !db || !Array.isArray(embedding3) || !Array.isArray(db)) + return best; + for (const f of db) { + if (f.embedding && f.name) { + const perc = similarity2(embedding3, f.embedding); + if (perc > threshold && perc > best.similarity) + best = {...f, similarity: perc}; + } + } + return best; +} +function enhance2(input) { + const image15 = tf6.tidy(() => { + const tensor = input.image || input.tensor || input; + if (!(tensor instanceof tf6.Tensor)) + return null; + const box3 = [[0.05, 0.15, 0.85, 0.85]]; + const crop = tensor.shape.length === 3 ? tf6.image.cropAndResize(tf6.expandDims(tensor, 0), box3, [0], [model5.inputs[0].shape[2], model5.inputs[0].shape[1]]) : tf6.image.cropAndResize(tensor, box3, [0], [model5.inputs[0].shape[2], model5.inputs[0].shape[1]]); + const norm = crop.mul(255); + return norm; + }); + return image15; +} +async function predict5(image15, config3) { + if (!model5) + return null; + if (skipped4 < config3.face.description.skipFrames && config3.videoOptimized && last4.age && last4.age > 0) { + skipped4++; + return last4; + } + if (config3.videoOptimized) + skipped4 = 0; + else + skipped4 = Number.MAX_SAFE_INTEGER; + return new Promise(async (resolve) => { + const enhanced = enhance2(image15); + let resT; + const obj = { + age: 0, + gender: "unknown", + genderConfidence: 0, + descriptor: [] + }; + if (!config3.profile) { + if (config3.face.description.enabled) + resT = await model5.predict(enhanced); + } else { + const profileAge = config3.face.description.enabled ? await tf6.profile(() => model5.predict(enhanced)) : {}; + resT = profileAge.result.clone(); + profileAge.result.dispose(); + run("age", profileAge); + } + tf6.dispose(enhanced); + if (resT) { + tf6.tidy(() => { + const gender2 = resT.find((t) => t.shape[1] === 1).dataSync(); + const confidence = Math.trunc(200 * Math.abs(gender2[0] - 0.5)) / 100; + if (confidence > config3.face.gender.minConfidence) { + obj.gender = gender2[0] <= 0.5 ? "female" : "male"; + obj.genderConfidence = Math.min(0.99, confidence); + } + const age2 = resT.find((t) => t.shape[1] === 100).argMax(1).dataSync()[0]; + const all2 = resT.find((t) => t.shape[1] === 100).dataSync(); + obj.age = Math.round(all2[age2 - 1] > all2[age2 + 1] ? 10 * age2 - 100 * all2[age2 - 1] : 10 * age2 + 100 * all2[age2 + 1]) / 10; + const desc = resT.find((t) => t.shape[1] === 1024); + obj.descriptor = [...desc.dataSync()]; + }); + resT.forEach((t) => tf6.dispose(t)); + } + last4 = obj; + resolve(obj); + }); +} + +// src/faceall.ts +var calculateFaceAngle = (mesh) => { + if (!mesh || mesh.length < 300) + return {roll: null, yaw: null, pitch: null}; + const radians = (a1, a2, b1, b2) => Math.atan2(b2 - a2, b1 - a1); + const degrees = (theta) => Math.abs(theta * 180 / Math.PI % 360); + const angle = { + roll: radians(mesh[33][0], mesh[33][1], mesh[263][0], mesh[263][1]), + yaw: radians(mesh[33][0], mesh[33][2], mesh[263][0], mesh[263][2]), + pitch: radians(mesh[10][1], mesh[10][2], mesh[152][1], mesh[152][2]) + }; + return angle; +}; +var detectFace = async (parent, input) => { + var _a, _b, _c, _d, _e, _f, _g; + let timeStamp; + let ageRes; + let genderRes; + let emotionRes; + let embeddingRes; + let descRes; + const faceRes = []; + parent.state = "run:face"; + timeStamp = now(); + const faces = await ((_a = parent.models.face) == null ? void 0 : _a.estimateFaces(input, parent.config)); + parent.perf.face = Math.trunc(now() - timeStamp); + if (!faces) + return []; + for (const face4 of faces) { + parent.analyze("Get Face"); + if (!face4.image || face4.image.isDisposedInternal) { + log("Face object is disposed:", face4.image); + continue; + } + const angle = calculateFaceAngle(face4.mesh); + parent.analyze("Start Age:"); + if (parent.config.async) { + ageRes = parent.config.face.age.enabled ? predict(face4.image, parent.config) : {}; + } else { + parent.state = "run:age"; + timeStamp = now(); + ageRes = parent.config.face.age.enabled ? await predict(face4.image, parent.config) : {}; + parent.perf.age = Math.trunc(now() - timeStamp); + } + parent.analyze("Start Gender:"); + if (parent.config.async) { + genderRes = parent.config.face.gender.enabled ? predict2(face4.image, parent.config) : {}; + } else { + parent.state = "run:gender"; + timeStamp = now(); + genderRes = parent.config.face.gender.enabled ? await predict2(face4.image, parent.config) : {}; + parent.perf.gender = Math.trunc(now() - timeStamp); + } + parent.analyze("Start Emotion:"); + if (parent.config.async) { + emotionRes = parent.config.face.emotion.enabled ? predict3(face4.image, parent.config) : {}; + } else { + parent.state = "run:emotion"; + timeStamp = now(); + emotionRes = parent.config.face.emotion.enabled ? await predict3(face4.image, parent.config) : {}; + parent.perf.emotion = Math.trunc(now() - timeStamp); + } + parent.analyze("End Emotion:"); + parent.analyze("Start Embedding:"); + if (parent.config.async) { + embeddingRes = parent.config.face.embedding.enabled ? predict4(face4, parent.config) : []; + } else { + parent.state = "run:embedding"; + timeStamp = now(); + embeddingRes = parent.config.face.embedding.enabled ? await predict4(face4, parent.config) : []; + parent.perf.embedding = Math.trunc(now() - timeStamp); + } + parent.analyze("End Embedding:"); + parent.analyze("Start Description:"); + if (parent.config.async) { + descRes = parent.config.face.description.enabled ? predict5(face4, parent.config) : []; + } else { + parent.state = "run:description"; + timeStamp = now(); + descRes = parent.config.face.description.enabled ? await predict5(face4.image, parent.config) : []; + parent.perf.embedding = Math.trunc(now() - timeStamp); + } + parent.analyze("End Description:"); + if (parent.config.async) { + [ageRes, genderRes, emotionRes, embeddingRes, descRes] = await Promise.all([ageRes, genderRes, emotionRes, embeddingRes, descRes]); + } + parent.analyze("Finish Face:"); + if (!parent.config.face.iris.enabled && ((_b = face4 == null ? void 0 : face4.annotations) == null ? void 0 : _b.leftEyeIris) && ((_c = face4 == null ? void 0 : face4.annotations) == null ? void 0 : _c.rightEyeIris)) { + delete face4.annotations.leftEyeIris; + delete face4.annotations.rightEyeIris; + } + const irisSize = ((_d = face4.annotations) == null ? void 0 : _d.leftEyeIris) && ((_e = face4.annotations) == null ? void 0 : _e.rightEyeIris) ? 11.7 * Math.max(Math.abs(face4.annotations.leftEyeIris[3][0] - face4.annotations.leftEyeIris[1][0]), Math.abs(face4.annotations.rightEyeIris[4][1] - face4.annotations.rightEyeIris[2][1])) : 0; + faceRes.push({ + ...face4, + age: descRes.age || ageRes.age, + gender: descRes.gender || genderRes.gender, + genderConfidence: descRes.genderConfidence || genderRes.confidence, + embedding: descRes.descriptor || embeddingRes, + emotion: emotionRes, + iris: irisSize !== 0 ? Math.trunc(irisSize) / 100 : 0, + angle, + tensor: parent.config.face.detector.return ? (_f = face4.image) == null ? void 0 : _f.squeeze() : null + }); + (_g = face4.image) == null ? void 0 : _g.dispose(); + parent.analyze("End Face"); + } + parent.analyze("End FaceMesh:"); + if (parent.config.async) { + if (parent.perf.face) + delete parent.perf.face; + if (parent.perf.age) + delete parent.perf.age; + if (parent.perf.gender) + delete parent.perf.gender; + if (parent.perf.emotion) + delete parent.perf.emotion; + } + return faceRes; +}; + +// src/blazeface/blazeface.ts +var tf7 = require_tfjs_esm(); +var NUM_LANDMARKS = 6; +function generateAnchors(inputSize) { + const spec = {strides: [inputSize / 16, inputSize / 8], anchors: [2, 6]}; + const anchors3 = []; + for (let i = 0; i < spec.strides.length; i++) { + const stride = spec.strides[i]; + const gridRows = Math.floor((inputSize + stride - 1) / stride); + const gridCols = Math.floor((inputSize + stride - 1) / stride); + const anchorsNum = spec.anchors[i]; + for (let gridY = 0; gridY < gridRows; gridY++) { + const anchorY = stride * (gridY + 0.5); + for (let gridX = 0; gridX < gridCols; gridX++) { + const anchorX = stride * (gridX + 0.5); + for (let n = 0; n < anchorsNum; n++) { + anchors3.push([anchorX, anchorY]); + } + } + } + } + return anchors3; +} +var createBox = (startEndTensor) => ({ + startEndTensor, + startPoint: tf7.slice(startEndTensor, [0, 0], [-1, 2]), + endPoint: tf7.slice(startEndTensor, [0, 2], [-1, 2]) +}); +function decodeBounds(boxOutputs, anchors3, inputSize) { + const boxStarts = tf7.slice(boxOutputs, [0, 1], [-1, 2]); + const centers = tf7.add(boxStarts, anchors3); + const boxSizes = tf7.slice(boxOutputs, [0, 3], [-1, 2]); + const boxSizesNormalized = tf7.div(boxSizes, inputSize); + const centersNormalized = tf7.div(centers, inputSize); + const halfBoxSize = tf7.div(boxSizesNormalized, 2); + const starts = tf7.sub(centersNormalized, halfBoxSize); + const ends = tf7.add(centersNormalized, halfBoxSize); + const startNormalized = tf7.mul(starts, inputSize); + const endNormalized = tf7.mul(ends, inputSize); + const concatAxis = 1; + return tf7.concat2d([startNormalized, endNormalized], concatAxis); +} +var BlazeFaceModel = class { + constructor(model8, config3) { + this.model = model8; + this.anchorsData = generateAnchors(model8.inputs[0].shape[1]); + this.anchors = tf7.tensor2d(this.anchorsData); + this.inputSize = model8.inputs[0].shape[2]; + this.config = config3; + } + async getBoundingBoxes(inputImage) { + if (!inputImage || inputImage.isDisposedInternal || inputImage.shape.length !== 4 || inputImage.shape[1] < 1 || inputImage.shape[2] < 1) + return null; + const [batch, boxes, scores] = tf7.tidy(() => { + const resizedImage = inputImage.resizeBilinear([this.inputSize, this.inputSize]); + const normalizedImage = resizedImage.div(127.5).sub(0.5); + const batchedPrediction = this.model.predict(normalizedImage); + let batchOut; + if (Array.isArray(batchedPrediction)) { + const sorted = batchedPrediction.sort((a, b) => a.size - b.size); + const concat384 = tf7.concat([sorted[0], sorted[2]], 2); + const concat512 = tf7.concat([sorted[1], sorted[3]], 2); + const concat4 = tf7.concat([concat512, concat384], 1); + batchOut = concat4.squeeze(0); + } else { + batchOut = batchedPrediction.squeeze(); + } + const boxesOut = decodeBounds(batchOut, this.anchors, [this.inputSize, this.inputSize]); + const logits = tf7.slice(batchOut, [0, 0], [-1, 1]); + const scoresOut = tf7.sigmoid(logits).squeeze(); + return [batchOut, boxesOut, scoresOut]; + }); + const boxIndicesTensor = await tf7.image.nonMaxSuppressionAsync(boxes, scores, this.config.face.detector.maxFaces, this.config.face.detector.iouThreshold, this.config.face.detector.scoreThreshold); + const boxIndices = boxIndicesTensor.arraySync(); + boxIndicesTensor.dispose(); + const boundingBoxesMap = boxIndices.map((boxIndex) => tf7.slice(boxes, [boxIndex, 0], [1, -1])); + const boundingBoxes = boundingBoxesMap.map((boundingBox) => { + const vals = boundingBox.arraySync(); + boundingBox.dispose(); + return vals; + }); + const scoresVal = scores.dataSync(); + const annotatedBoxes = []; + for (let i = 0; i < boundingBoxes.length; i++) { + const boxIndex = boxIndices[i]; + const confidence = scoresVal[boxIndex]; + if (confidence > this.config.face.detector.minConfidence) { + const box3 = createBox(boundingBoxes[i]); + const anchor = this.anchorsData[boxIndex]; + const landmarks = tf7.tidy(() => tf7.slice(batch, [boxIndex, NUM_LANDMARKS - 1], [1, -1]).squeeze().reshape([NUM_LANDMARKS, -1])); + annotatedBoxes.push({box: box3, landmarks, anchor, confidence}); + } + } + batch.dispose(); + boxes.dispose(); + scores.dispose(); + return { + boxes: annotatedBoxes, + scaleFactor: [inputImage.shape[2] / this.inputSize, inputImage.shape[1] / this.inputSize] + }; + } +}; +async function load6(config3) { + const blazeface = await tf7.loadGraphModel(config3.face.detector.modelPath, {fromTFHub: config3.face.detector.modelPath.includes("tfhub.dev")}); + const model8 = new BlazeFaceModel(blazeface, config3); + if (config3.debug) + log(`load model: ${config3.face.detector.modelPath.match(/\/(.*)\./)[1]}`); + return model8; +} + +// src/blazeface/facepipeline.ts +var tf9 = require_tfjs_esm(); + +// src/blazeface/box.ts +var tf8 = require_tfjs_esm(); +function scaleBoxCoordinates(box3, factor) { + const startPoint = [box3.startPoint[0] * factor[0], box3.startPoint[1] * factor[1]]; + const endPoint = [box3.endPoint[0] * factor[0], box3.endPoint[1] * factor[1]]; + return {startPoint, endPoint}; +} +function getBoxSize(box3) { + return [ + Math.abs(box3.endPoint[0] - box3.startPoint[0]), + Math.abs(box3.endPoint[1] - box3.startPoint[1]) + ]; +} +function getBoxCenter(box3) { + return [ + box3.startPoint[0] + (box3.endPoint[0] - box3.startPoint[0]) / 2, + box3.startPoint[1] + (box3.endPoint[1] - box3.startPoint[1]) / 2 + ]; +} +function cutBoxFromImageAndResize(box3, image15, cropSize) { + const h = image15.shape[1]; + const w = image15.shape[2]; + const boxes = [[ + box3.startPoint[1] / h, + box3.startPoint[0] / w, + box3.endPoint[1] / h, + box3.endPoint[0] / w + ]]; + return tf8.image.cropAndResize(image15, boxes, [0], cropSize); +} +function enlargeBox(box3, factor = 1.5) { + const center = getBoxCenter(box3); + const size = getBoxSize(box3); + const newHalfSize = [factor * size[0] / 2, factor * size[1] / 2]; + const startPoint = [center[0] - newHalfSize[0], center[1] - newHalfSize[1]]; + const endPoint = [center[0] + newHalfSize[0], center[1] + newHalfSize[1]]; + return {startPoint, endPoint, landmarks: box3.landmarks}; +} +function squarifyBox(box3) { + const centers = getBoxCenter(box3); + const size = getBoxSize(box3); + const maxEdge = Math.max(...size); + const halfSize = maxEdge / 2; + const startPoint = [centers[0] - halfSize, centers[1] - halfSize]; + const endPoint = [centers[0] + halfSize, centers[1] + halfSize]; + return {startPoint, endPoint, landmarks: box3.landmarks}; +} + +// src/blazeface/util.ts +var IDENTITY_MATRIX = [[1, 0, 0], [0, 1, 0], [0, 0, 1]]; +function normalizeRadians(angle) { + return angle - 2 * Math.PI * Math.floor((angle + Math.PI) / (2 * Math.PI)); +} +function computeRotation(point1, point2) { + const radians = Math.PI / 2 - Math.atan2(-(point2[1] - point1[1]), point2[0] - point1[0]); + return normalizeRadians(radians); +} +function buildTranslationMatrix(x, y) { + return [[1, 0, x], [0, 1, y], [0, 0, 1]]; +} +function dot(v1, v2) { + let product = 0; + for (let i = 0; i < v1.length; i++) { + product += v1[i] * v2[i]; + } + return product; +} +function getColumnFrom2DArr(arr, columnIndex) { + const column = []; + for (let i = 0; i < arr.length; i++) { + column.push(arr[i][columnIndex]); + } + return column; +} +function multiplyTransformMatrices(mat1, mat2) { + const product = []; + const size = mat1.length; + for (let row = 0; row < size; row++) { + product.push([]); + for (let col = 0; col < size; col++) { + product[row].push(dot(mat1[row], getColumnFrom2DArr(mat2, col))); + } + } + return product; +} +function buildRotationMatrix(rotation, center) { + const cosA = Math.cos(rotation); + const sinA = Math.sin(rotation); + const rotationMatrix = [[cosA, -sinA, 0], [sinA, cosA, 0], [0, 0, 1]]; + const translationMatrix = buildTranslationMatrix(center[0], center[1]); + const translationTimesRotation = multiplyTransformMatrices(translationMatrix, rotationMatrix); + const negativeTranslationMatrix = buildTranslationMatrix(-center[0], -center[1]); + return multiplyTransformMatrices(translationTimesRotation, negativeTranslationMatrix); +} +function invertTransformMatrix(matrix) { + const rotationComponent = [[matrix[0][0], matrix[1][0]], [matrix[0][1], matrix[1][1]]]; + const translationComponent = [matrix[0][2], matrix[1][2]]; + const invertedTranslation = [ + -dot(rotationComponent[0], translationComponent), + -dot(rotationComponent[1], translationComponent) + ]; + return [ + rotationComponent[0].concat(invertedTranslation[0]), + rotationComponent[1].concat(invertedTranslation[1]), + [0, 0, 1] + ]; +} +function rotatePoint(homogeneousCoordinate, rotationMatrix) { + return [ + dot(homogeneousCoordinate, rotationMatrix[0]), + dot(homogeneousCoordinate, rotationMatrix[1]) + ]; +} + +// src/blazeface/coords.ts +var MESH_ANNOTATIONS = { + silhouette: [ + 10, + 338, + 297, + 332, + 284, + 251, + 389, + 356, + 454, + 323, + 361, + 288, + 397, + 365, + 379, + 378, + 400, + 377, + 152, + 148, + 176, + 149, + 150, + 136, + 172, + 58, + 132, + 93, + 234, + 127, + 162, + 21, + 54, + 103, + 67, + 109 + ], + lipsUpperOuter: [61, 185, 40, 39, 37, 0, 267, 269, 270, 409, 291], + lipsLowerOuter: [146, 91, 181, 84, 17, 314, 405, 321, 375, 291], + lipsUpperInner: [78, 191, 80, 81, 82, 13, 312, 311, 310, 415, 308], + lipsLowerInner: [78, 95, 88, 178, 87, 14, 317, 402, 318, 324, 308], + rightEyeUpper0: [246, 161, 160, 159, 158, 157, 173], + rightEyeLower0: [33, 7, 163, 144, 145, 153, 154, 155, 133], + rightEyeUpper1: [247, 30, 29, 27, 28, 56, 190], + rightEyeLower1: [130, 25, 110, 24, 23, 22, 26, 112, 243], + rightEyeUpper2: [113, 225, 224, 223, 222, 221, 189], + rightEyeLower2: [226, 31, 228, 229, 230, 231, 232, 233, 244], + rightEyeLower3: [143, 111, 117, 118, 119, 120, 121, 128, 245], + rightEyebrowUpper: [156, 70, 63, 105, 66, 107, 55, 193], + rightEyebrowLower: [35, 124, 46, 53, 52, 65], + rightEyeIris: [473, 474, 475, 476, 477], + leftEyeUpper0: [466, 388, 387, 386, 385, 384, 398], + leftEyeLower0: [263, 249, 390, 373, 374, 380, 381, 382, 362], + leftEyeUpper1: [467, 260, 259, 257, 258, 286, 414], + leftEyeLower1: [359, 255, 339, 254, 253, 252, 256, 341, 463], + leftEyeUpper2: [342, 445, 444, 443, 442, 441, 413], + leftEyeLower2: [446, 261, 448, 449, 450, 451, 452, 453, 464], + leftEyeLower3: [372, 340, 346, 347, 348, 349, 350, 357, 465], + leftEyebrowUpper: [383, 300, 293, 334, 296, 336, 285, 417], + leftEyebrowLower: [265, 353, 276, 283, 282, 295], + leftEyeIris: [468, 469, 470, 471, 472], + midwayBetweenEyes: [168], + noseTip: [1], + noseBottom: [2], + noseRightCorner: [98], + noseLeftCorner: [327], + rightCheek: [205], + leftCheek: [425] +}; +var MESH_TO_IRIS_INDICES_MAP = [ + {key: "EyeUpper0", indices: [9, 10, 11, 12, 13, 14, 15]}, + {key: "EyeUpper1", indices: [25, 26, 27, 28, 29, 30, 31]}, + {key: "EyeUpper2", indices: [41, 42, 43, 44, 45, 46, 47]}, + {key: "EyeLower0", indices: [0, 1, 2, 3, 4, 5, 6, 7, 8]}, + {key: "EyeLower1", indices: [16, 17, 18, 19, 20, 21, 22, 23, 24]}, + {key: "EyeLower2", indices: [32, 33, 34, 35, 36, 37, 38, 39, 40]}, + {key: "EyeLower3", indices: [54, 55, 56, 57, 58, 59, 60, 61, 62]} +]; +var UV468 = [ + [0.499976992607117, 0.652534008026123], + [0.500025987625122, 0.547487020492554], + [0.499974012374878, 0.602371990680695], + [0.482113003730774, 0.471979022026062], + [0.500150978565216, 0.527155995368958], + [0.499909996986389, 0.498252987861633], + [0.499523013830185, 0.40106201171875], + [0.289712011814117, 0.380764007568359], + [0.499954998493195, 0.312398016452789], + [0.499987006187439, 0.269918978214264], + [0.500023007392883, 0.107050001621246], + [0.500023007392883, 0.666234016418457], + [0.5000159740448, 0.679224014282227], + [0.500023007392883, 0.692348003387451], + [0.499976992607117, 0.695277988910675], + [0.499976992607117, 0.70593398809433], + [0.499976992607117, 0.719385027885437], + [0.499976992607117, 0.737019002437592], + [0.499967992305756, 0.781370997428894], + [0.499816000461578, 0.562981009483337], + [0.473773002624512, 0.573909997940063], + [0.104906998574734, 0.254140973091125], + [0.365929991006851, 0.409575998783112], + [0.338757991790771, 0.41302502155304], + [0.311120003461838, 0.409460008144379], + [0.274657994508743, 0.389131009578705], + [0.393361985683441, 0.403706014156342], + [0.345234006643295, 0.344011008739471], + [0.370094001293182, 0.346076011657715], + [0.319321990013123, 0.347265005111694], + [0.297903001308441, 0.353591024875641], + [0.24779200553894, 0.410809993743896], + [0.396889001131058, 0.842755019664764], + [0.280097991228104, 0.375599980354309], + [0.106310002505779, 0.399955987930298], + [0.2099249958992, 0.391353011131287], + [0.355807989835739, 0.534406006336212], + [0.471751004457474, 0.65040397644043], + [0.474155008792877, 0.680191993713379], + [0.439785003662109, 0.657229006290436], + [0.414617002010345, 0.66654098033905], + [0.450374007225037, 0.680860996246338], + [0.428770989179611, 0.682690978050232], + [0.374971002340317, 0.727805018424988], + [0.486716985702515, 0.547628998756409], + [0.485300987958908, 0.527395009994507], + [0.257764995098114, 0.314490020275116], + [0.401223003864288, 0.455172002315521], + [0.429818987846375, 0.548614978790283], + [0.421351999044418, 0.533740997314453], + [0.276895999908447, 0.532056987285614], + [0.483370006084442, 0.499586999416351], + [0.33721199631691, 0.282882988452911], + [0.296391993761063, 0.293242990970612], + [0.169294998049736, 0.193813979625702], + [0.447580009698868, 0.302609980106354], + [0.392390012741089, 0.353887975215912], + [0.354490011930466, 0.696784019470215], + [0.067304998636246, 0.730105042457581], + [0.442739009857178, 0.572826027870178], + [0.457098007202148, 0.584792017936707], + [0.381974011659622, 0.694710969924927], + [0.392388999462128, 0.694203019142151], + [0.277076005935669, 0.271932005882263], + [0.422551989555359, 0.563233017921448], + [0.385919004678726, 0.281364023685455], + [0.383103013038635, 0.255840003490448], + [0.331431001424789, 0.119714021682739], + [0.229923993349075, 0.232002973556519], + [0.364500999450684, 0.189113974571228], + [0.229622006416321, 0.299540996551514], + [0.173287004232407, 0.278747975826263], + [0.472878992557526, 0.666198015213013], + [0.446828007698059, 0.668527007102966], + [0.422762006521225, 0.673889994621277], + [0.445307999849319, 0.580065965652466], + [0.388103008270264, 0.693961024284363], + [0.403039008378983, 0.706539988517761], + [0.403629004955292, 0.693953037261963], + [0.460041999816895, 0.557139039039612], + [0.431158006191254, 0.692366003990173], + [0.452181994915009, 0.692366003990173], + [0.475387006998062, 0.692366003990173], + [0.465828001499176, 0.779190003871918], + [0.472328990697861, 0.736225962638855], + [0.473087012767792, 0.717857003211975], + [0.473122000694275, 0.704625964164734], + [0.473033010959625, 0.695277988910675], + [0.427942007780075, 0.695277988910675], + [0.426479011774063, 0.703539967536926], + [0.423162013292313, 0.711845993995667], + [0.4183090031147, 0.720062971115112], + [0.390094995498657, 0.639572978019714], + [0.013953999616206, 0.560034036636353], + [0.499913990497589, 0.58014702796936], + [0.413199990987778, 0.69539999961853], + [0.409626007080078, 0.701822996139526], + [0.468080013990402, 0.601534962654114], + [0.422728985548019, 0.585985004901886], + [0.463079988956451, 0.593783974647522], + [0.37211999297142, 0.47341400384903], + [0.334562003612518, 0.496073007583618], + [0.411671012639999, 0.546965003013611], + [0.242175996303558, 0.14767599105835], + [0.290776997804642, 0.201445996761322], + [0.327338010072708, 0.256527006626129], + [0.399509996175766, 0.748921036720276], + [0.441727995872498, 0.261676013469696], + [0.429764986038208, 0.187834024429321], + [0.412198007106781, 0.108901023864746], + [0.288955003023148, 0.398952007293701], + [0.218936994671822, 0.435410976409912], + [0.41278201341629, 0.398970007896423], + [0.257135003805161, 0.355440020561218], + [0.427684992551804, 0.437960982322693], + [0.448339998722076, 0.536936044692993], + [0.178560003638268, 0.45755398273468], + [0.247308000922203, 0.457193970680237], + [0.286267012357712, 0.467674970626831], + [0.332827985286713, 0.460712015628815], + [0.368755996227264, 0.447206974029541], + [0.398963987827301, 0.432654976844788], + [0.476410001516342, 0.405806005001068], + [0.189241006970406, 0.523923993110657], + [0.228962004184723, 0.348950982093811], + [0.490725994110107, 0.562400996685028], + [0.404670000076294, 0.485132992267609], + [0.019469000399113, 0.401564002037048], + [0.426243007183075, 0.420431017875671], + [0.396993011236191, 0.548797011375427], + [0.266469985246658, 0.376977026462555], + [0.439121007919312, 0.51895797252655], + [0.032313998788595, 0.644356966018677], + [0.419054001569748, 0.387154996395111], + [0.462783008813858, 0.505746960639954], + [0.238978996872902, 0.779744982719421], + [0.198220998048782, 0.831938028335571], + [0.107550002634525, 0.540755033493042], + [0.183610007166862, 0.740257024765015], + [0.134409993886948, 0.333683013916016], + [0.385764002799988, 0.883153975009918], + [0.490967005491257, 0.579378008842468], + [0.382384985685349, 0.508572995662689], + [0.174399003386497, 0.397670984268188], + [0.318785011768341, 0.39623498916626], + [0.343364000320435, 0.400596976280212], + [0.396100014448166, 0.710216999053955], + [0.187885001301765, 0.588537991046906], + [0.430987000465393, 0.944064974784851], + [0.318993002176285, 0.898285031318665], + [0.266247987747192, 0.869701027870178], + [0.500023007392883, 0.190576016902924], + [0.499976992607117, 0.954452991485596], + [0.366169989109039, 0.398822009563446], + [0.393207013607025, 0.39553701877594], + [0.410373002290726, 0.391080021858215], + [0.194993004202843, 0.342101991176605], + [0.388664990663528, 0.362284004688263], + [0.365961998701096, 0.355970978736877], + [0.343364000320435, 0.355356991291046], + [0.318785011768341, 0.35834002494812], + [0.301414996385574, 0.363156020641327], + [0.058132998645306, 0.319076001644135], + [0.301414996385574, 0.387449026107788], + [0.499987989664078, 0.618434011936188], + [0.415838003158569, 0.624195992946625], + [0.445681989192963, 0.566076993942261], + [0.465844005346298, 0.620640993118286], + [0.49992299079895, 0.351523995399475], + [0.288718998432159, 0.819945991039276], + [0.335278987884521, 0.852819979190826], + [0.440512001514435, 0.902418971061707], + [0.128294005990028, 0.791940987110138], + [0.408771991729736, 0.373893976211548], + [0.455606997013092, 0.451801002025604], + [0.499877005815506, 0.908990025520325], + [0.375436991453171, 0.924192011356354], + [0.11421000212431, 0.615022003650665], + [0.448662012815475, 0.695277988910675], + [0.4480200111866, 0.704632043838501], + [0.447111994028091, 0.715808033943176], + [0.444831997156143, 0.730794012546539], + [0.430011987686157, 0.766808986663818], + [0.406787008047104, 0.685672998428345], + [0.400738000869751, 0.681069016456604], + [0.392399996519089, 0.677703022956848], + [0.367855995893478, 0.663918972015381], + [0.247923001646996, 0.601333022117615], + [0.452769994735718, 0.420849978923798], + [0.43639200925827, 0.359887003898621], + [0.416164010763168, 0.368713974952698], + [0.413385987281799, 0.692366003990173], + [0.228018000721931, 0.683571994304657], + [0.468268007040024, 0.352671027183533], + [0.411361992359161, 0.804327011108398], + [0.499989002943039, 0.469825029373169], + [0.479153990745544, 0.442654013633728], + [0.499974012374878, 0.439637005329132], + [0.432112008333206, 0.493588984012604], + [0.499886006116867, 0.866917014122009], + [0.49991300702095, 0.821729004383087], + [0.456548988819122, 0.819200992584229], + [0.344549000263214, 0.745438992977142], + [0.37890899181366, 0.574010014533997], + [0.374292999505997, 0.780184984207153], + [0.319687992334366, 0.570737957954407], + [0.357154995203018, 0.604269981384277], + [0.295284003019333, 0.621580958366394], + [0.447750002145767, 0.862477004528046], + [0.410986006259918, 0.508723020553589], + [0.31395098567009, 0.775308012962341], + [0.354128003120422, 0.812552988529205], + [0.324548006057739, 0.703992962837219], + [0.189096003770828, 0.646299958229065], + [0.279776990413666, 0.71465802192688], + [0.1338230073452, 0.682700991630554], + [0.336768001317978, 0.644733011722565], + [0.429883986711502, 0.466521978378296], + [0.455527991056442, 0.548622965812683], + [0.437114000320435, 0.558896005153656], + [0.467287987470627, 0.529924988746643], + [0.414712011814117, 0.335219979286194], + [0.37704598903656, 0.322777986526489], + [0.344107985496521, 0.320150971412659], + [0.312875986099243, 0.32233202457428], + [0.283526003360748, 0.333190023899078], + [0.241245999932289, 0.382785975933075], + [0.102986000478268, 0.468762993812561], + [0.267612010240555, 0.424560010433197], + [0.297879010438919, 0.433175981044769], + [0.333433985710144, 0.433878004550934], + [0.366427004337311, 0.426115989685059], + [0.396012008190155, 0.416696012020111], + [0.420121014118195, 0.41022801399231], + [0.007561000064015, 0.480777025222778], + [0.432949006557465, 0.569517970085144], + [0.458638995885849, 0.479089021682739], + [0.473466008901596, 0.545744001865387], + [0.476087987422943, 0.563830018043518], + [0.468472003936768, 0.555056989192963], + [0.433990985155106, 0.582361996173859], + [0.483518004417419, 0.562983989715576], + [0.482482999563217, 0.57784903049469], + [0.42645001411438, 0.389798998832703], + [0.438998997211456, 0.39649498462677], + [0.450067013502121, 0.400434017181396], + [0.289712011814117, 0.368252992630005], + [0.276670008897781, 0.363372981548309], + [0.517862021923065, 0.471948027610779], + [0.710287988185883, 0.380764007568359], + [0.526226997375488, 0.573909997940063], + [0.895093023777008, 0.254140973091125], + [0.634069979190826, 0.409575998783112], + [0.661242008209229, 0.41302502155304], + [0.688880026340485, 0.409460008144379], + [0.725341975688934, 0.389131009578705], + [0.606630027294159, 0.40370500087738], + [0.654766023159027, 0.344011008739471], + [0.629905998706818, 0.346076011657715], + [0.680678009986877, 0.347265005111694], + [0.702096998691559, 0.353591024875641], + [0.75221198797226, 0.410804986953735], + [0.602918028831482, 0.842862963676453], + [0.719901978969574, 0.375599980354309], + [0.893692970275879, 0.399959981441498], + [0.790081977844238, 0.391354024410248], + [0.643998026847839, 0.534487962722778], + [0.528249025344849, 0.65040397644043], + [0.525849997997284, 0.680191040039062], + [0.560214996337891, 0.657229006290436], + [0.585384011268616, 0.66654098033905], + [0.549625992774963, 0.680860996246338], + [0.57122802734375, 0.682691991329193], + [0.624852001667023, 0.72809898853302], + [0.513050019741058, 0.547281980514526], + [0.51509702205658, 0.527251958847046], + [0.742246985435486, 0.314507007598877], + [0.598631024360657, 0.454979002475739], + [0.570338010787964, 0.548575043678284], + [0.578631997108459, 0.533622980117798], + [0.723087012767792, 0.532054007053375], + [0.516445994377136, 0.499638974666595], + [0.662801027297974, 0.282917976379395], + [0.70362401008606, 0.293271005153656], + [0.830704987049103, 0.193813979625702], + [0.552385985851288, 0.302568018436432], + [0.607609987258911, 0.353887975215912], + [0.645429015159607, 0.696707010269165], + [0.932694971561432, 0.730105042457581], + [0.557260990142822, 0.572826027870178], + [0.542901992797852, 0.584792017936707], + [0.6180260181427, 0.694710969924927], + [0.607590973377228, 0.694203019142151], + [0.722943007946014, 0.271963000297546], + [0.577413976192474, 0.563166975975037], + [0.614082992076874, 0.281386971473694], + [0.616907000541687, 0.255886018276215], + [0.668509006500244, 0.119913995265961], + [0.770092010498047, 0.232020974159241], + [0.635536015033722, 0.189248979091644], + [0.77039098739624, 0.299556016921997], + [0.826722025871277, 0.278755009174347], + [0.527121007442474, 0.666198015213013], + [0.553171992301941, 0.668527007102966], + [0.577238023281097, 0.673889994621277], + [0.554691970348358, 0.580065965652466], + [0.611896991729736, 0.693961024284363], + [0.59696102142334, 0.706539988517761], + [0.596370995044708, 0.693953037261963], + [0.539958000183105, 0.557139039039612], + [0.568841993808746, 0.692366003990173], + [0.547818005084991, 0.692366003990173], + [0.52461302280426, 0.692366003990173], + [0.534089982509613, 0.779141008853912], + [0.527670979499817, 0.736225962638855], + [0.526912987232208, 0.717857003211975], + [0.526877999305725, 0.704625964164734], + [0.526966989040375, 0.695277988910675], + [0.572058022022247, 0.695277988910675], + [0.573521018028259, 0.703539967536926], + [0.57683801651001, 0.711845993995667], + [0.581691026687622, 0.720062971115112], + [0.609944999217987, 0.639909982681274], + [0.986046016216278, 0.560034036636353], + [0.5867999792099, 0.69539999961853], + [0.590372025966644, 0.701822996139526], + [0.531915009021759, 0.601536989212036], + [0.577268004417419, 0.585934996604919], + [0.536915004253387, 0.593786001205444], + [0.627542972564697, 0.473352015018463], + [0.665585994720459, 0.495950996875763], + [0.588353991508484, 0.546862006187439], + [0.757824003696442, 0.14767599105835], + [0.709249973297119, 0.201507985591888], + [0.672684013843536, 0.256581008434296], + [0.600408971309662, 0.74900496006012], + [0.55826598405838, 0.261672019958496], + [0.570303976535797, 0.187870979309082], + [0.588165998458862, 0.109044015407562], + [0.711045026779175, 0.398952007293701], + [0.781069993972778, 0.435405015945435], + [0.587247014045715, 0.398931980133057], + [0.742869973182678, 0.355445981025696], + [0.572156012058258, 0.437651991844177], + [0.55186802148819, 0.536570012569427], + [0.821442008018494, 0.457556009292603], + [0.752701997756958, 0.457181990146637], + [0.71375697851181, 0.467626988887787], + [0.66711300611496, 0.460672974586487], + [0.631101012229919, 0.447153985500336], + [0.6008620262146, 0.432473003864288], + [0.523481011390686, 0.405627012252808], + [0.810747981071472, 0.523926019668579], + [0.771045982837677, 0.348959028720856], + [0.509127020835876, 0.562718033790588], + [0.595292985439301, 0.485023975372314], + [0.980530977249146, 0.401564002037048], + [0.573499977588654, 0.420000016689301], + [0.602994978427887, 0.548687994480133], + [0.733529984951019, 0.376977026462555], + [0.560611009597778, 0.519016981124878], + [0.967685997486115, 0.644356966018677], + [0.580985009670258, 0.387160003185272], + [0.537728011608124, 0.505385041236877], + [0.760966002941132, 0.779752969741821], + [0.801778972148895, 0.831938028335571], + [0.892440974712372, 0.54076099395752], + [0.816350996494293, 0.740260004997253], + [0.865594983100891, 0.333687007427216], + [0.614073991775513, 0.883246004581451], + [0.508952975273132, 0.579437971115112], + [0.617941975593567, 0.508316040039062], + [0.825608015060425, 0.397674977779388], + [0.681214988231659, 0.39623498916626], + [0.656635999679565, 0.400596976280212], + [0.603900015354156, 0.710216999053955], + [0.81208598613739, 0.588539004325867], + [0.56801301240921, 0.944564998149872], + [0.681007981300354, 0.898285031318665], + [0.733752012252808, 0.869701027870178], + [0.633830010890961, 0.398822009563446], + [0.606792986392975, 0.39553701877594], + [0.589659988880157, 0.391062021255493], + [0.805015981197357, 0.342108011245728], + [0.611334979534149, 0.362284004688263], + [0.634037971496582, 0.355970978736877], + [0.656635999679565, 0.355356991291046], + [0.681214988231659, 0.35834002494812], + [0.698584973812103, 0.363156020641327], + [0.941866993904114, 0.319076001644135], + [0.698584973812103, 0.387449026107788], + [0.584177017211914, 0.624107003211975], + [0.554318010807037, 0.566076993942261], + [0.534153997898102, 0.62064003944397], + [0.711217999458313, 0.819975018501282], + [0.664629995822906, 0.852871000766754], + [0.559099972248077, 0.902631998062134], + [0.871706008911133, 0.791940987110138], + [0.591234028339386, 0.373893976211548], + [0.544341027736664, 0.451583981513977], + [0.624562978744507, 0.924192011356354], + [0.88577002286911, 0.615028977394104], + [0.551338016986847, 0.695277988910675], + [0.551980018615723, 0.704632043838501], + [0.552887976169586, 0.715808033943176], + [0.555167973041534, 0.730794012546539], + [0.569944024085999, 0.767035007476807], + [0.593203008174896, 0.685675978660583], + [0.599261999130249, 0.681069016456604], + [0.607599973678589, 0.677703022956848], + [0.631937980651855, 0.663500010967255], + [0.752032995223999, 0.601315021514893], + [0.547226011753082, 0.420395016670227], + [0.563543975353241, 0.359827995300293], + [0.583841025829315, 0.368713974952698], + [0.586614012718201, 0.692366003990173], + [0.771915018558502, 0.683578014373779], + [0.531597018241882, 0.352482974529266], + [0.588370978832245, 0.804440975189209], + [0.52079701423645, 0.442565023899078], + [0.567984998226166, 0.493479013442993], + [0.543282985687256, 0.819254994392395], + [0.655317008495331, 0.745514988899231], + [0.621008992195129, 0.574018001556396], + [0.625559985637665, 0.78031200170517], + [0.680198013782501, 0.570719003677368], + [0.64276397228241, 0.604337990283966], + [0.704662978649139, 0.621529996395111], + [0.552012026309967, 0.862591981887817], + [0.589071989059448, 0.508637011051178], + [0.685944974422455, 0.775357007980347], + [0.645735025405884, 0.812640011310577], + [0.675342977046967, 0.703978002071381], + [0.810858011245728, 0.646304965019226], + [0.72012197971344, 0.714666962623596], + [0.866151988506317, 0.682704985141754], + [0.663187026977539, 0.644596993923187], + [0.570082008838654, 0.466325998306274], + [0.544561982154846, 0.548375964164734], + [0.562758982181549, 0.558784961700439], + [0.531987011432648, 0.530140042304993], + [0.585271000862122, 0.335177004337311], + [0.622952997684479, 0.32277899980545], + [0.655896008014679, 0.320163011550903], + [0.687132000923157, 0.322345972061157], + [0.716481983661652, 0.333200991153717], + [0.758756995201111, 0.382786989212036], + [0.897013008594513, 0.468769013881683], + [0.732392013072968, 0.424547016620636], + [0.70211398601532, 0.433162987232208], + [0.66652500629425, 0.433866024017334], + [0.633504986763, 0.426087975502014], + [0.603875994682312, 0.416586995124817], + [0.579657971858978, 0.409945011138916], + [0.992439985275269, 0.480777025222778], + [0.567192018032074, 0.569419980049133], + [0.54136598110199, 0.478899002075195], + [0.526564002037048, 0.546118021011353], + [0.523913025856018, 0.563830018043518], + [0.531529009342194, 0.555056989192963], + [0.566035985946655, 0.582329034805298], + [0.51631098985672, 0.563053965568542], + [0.5174720287323, 0.577877044677734], + [0.573594987392426, 0.389806985855103], + [0.560697972774506, 0.395331978797913], + [0.549755990505219, 0.399751007556915], + [0.710287988185883, 0.368252992630005], + [0.723330020904541, 0.363372981548309] +]; +var TRI468 = [ + 127, + 34, + 139, + 11, + 0, + 37, + 232, + 231, + 120, + 72, + 37, + 39, + 128, + 121, + 47, + 232, + 121, + 128, + 104, + 69, + 67, + 175, + 171, + 148, + 157, + 154, + 155, + 118, + 50, + 101, + 73, + 39, + 40, + 9, + 151, + 108, + 48, + 115, + 131, + 194, + 204, + 211, + 74, + 40, + 185, + 80, + 42, + 183, + 40, + 92, + 186, + 230, + 229, + 118, + 202, + 212, + 214, + 83, + 18, + 17, + 76, + 61, + 146, + 160, + 29, + 30, + 56, + 157, + 173, + 106, + 204, + 194, + 135, + 214, + 192, + 203, + 165, + 98, + 21, + 71, + 68, + 51, + 45, + 4, + 144, + 24, + 23, + 77, + 146, + 91, + 205, + 50, + 187, + 201, + 200, + 18, + 91, + 106, + 182, + 90, + 91, + 181, + 85, + 84, + 17, + 206, + 203, + 36, + 148, + 171, + 140, + 92, + 40, + 39, + 193, + 189, + 244, + 159, + 158, + 28, + 247, + 246, + 161, + 236, + 3, + 196, + 54, + 68, + 104, + 193, + 168, + 8, + 117, + 228, + 31, + 189, + 193, + 55, + 98, + 97, + 99, + 126, + 47, + 100, + 166, + 79, + 218, + 155, + 154, + 26, + 209, + 49, + 131, + 135, + 136, + 150, + 47, + 126, + 217, + 223, + 52, + 53, + 45, + 51, + 134, + 211, + 170, + 140, + 67, + 69, + 108, + 43, + 106, + 91, + 230, + 119, + 120, + 226, + 130, + 247, + 63, + 53, + 52, + 238, + 20, + 242, + 46, + 70, + 156, + 78, + 62, + 96, + 46, + 53, + 63, + 143, + 34, + 227, + 173, + 155, + 133, + 123, + 117, + 111, + 44, + 125, + 19, + 236, + 134, + 51, + 216, + 206, + 205, + 154, + 153, + 22, + 39, + 37, + 167, + 200, + 201, + 208, + 36, + 142, + 100, + 57, + 212, + 202, + 20, + 60, + 99, + 28, + 158, + 157, + 35, + 226, + 113, + 160, + 159, + 27, + 204, + 202, + 210, + 113, + 225, + 46, + 43, + 202, + 204, + 62, + 76, + 77, + 137, + 123, + 116, + 41, + 38, + 72, + 203, + 129, + 142, + 64, + 98, + 240, + 49, + 102, + 64, + 41, + 73, + 74, + 212, + 216, + 207, + 42, + 74, + 184, + 169, + 170, + 211, + 170, + 149, + 176, + 105, + 66, + 69, + 122, + 6, + 168, + 123, + 147, + 187, + 96, + 77, + 90, + 65, + 55, + 107, + 89, + 90, + 180, + 101, + 100, + 120, + 63, + 105, + 104, + 93, + 137, + 227, + 15, + 86, + 85, + 129, + 102, + 49, + 14, + 87, + 86, + 55, + 8, + 9, + 100, + 47, + 121, + 145, + 23, + 22, + 88, + 89, + 179, + 6, + 122, + 196, + 88, + 95, + 96, + 138, + 172, + 136, + 215, + 58, + 172, + 115, + 48, + 219, + 42, + 80, + 81, + 195, + 3, + 51, + 43, + 146, + 61, + 171, + 175, + 199, + 81, + 82, + 38, + 53, + 46, + 225, + 144, + 163, + 110, + 246, + 33, + 7, + 52, + 65, + 66, + 229, + 228, + 117, + 34, + 127, + 234, + 107, + 108, + 69, + 109, + 108, + 151, + 48, + 64, + 235, + 62, + 78, + 191, + 129, + 209, + 126, + 111, + 35, + 143, + 163, + 161, + 246, + 117, + 123, + 50, + 222, + 65, + 52, + 19, + 125, + 141, + 221, + 55, + 65, + 3, + 195, + 197, + 25, + 7, + 33, + 220, + 237, + 44, + 70, + 71, + 139, + 122, + 193, + 245, + 247, + 130, + 33, + 71, + 21, + 162, + 153, + 158, + 159, + 170, + 169, + 150, + 188, + 174, + 196, + 216, + 186, + 92, + 144, + 160, + 161, + 2, + 97, + 167, + 141, + 125, + 241, + 164, + 167, + 37, + 72, + 38, + 12, + 145, + 159, + 160, + 38, + 82, + 13, + 63, + 68, + 71, + 226, + 35, + 111, + 158, + 153, + 154, + 101, + 50, + 205, + 206, + 92, + 165, + 209, + 198, + 217, + 165, + 167, + 97, + 220, + 115, + 218, + 133, + 112, + 243, + 239, + 238, + 241, + 214, + 135, + 169, + 190, + 173, + 133, + 171, + 208, + 32, + 125, + 44, + 237, + 86, + 87, + 178, + 85, + 86, + 179, + 84, + 85, + 180, + 83, + 84, + 181, + 201, + 83, + 182, + 137, + 93, + 132, + 76, + 62, + 183, + 61, + 76, + 184, + 57, + 61, + 185, + 212, + 57, + 186, + 214, + 207, + 187, + 34, + 143, + 156, + 79, + 239, + 237, + 123, + 137, + 177, + 44, + 1, + 4, + 201, + 194, + 32, + 64, + 102, + 129, + 213, + 215, + 138, + 59, + 166, + 219, + 242, + 99, + 97, + 2, + 94, + 141, + 75, + 59, + 235, + 24, + 110, + 228, + 25, + 130, + 226, + 23, + 24, + 229, + 22, + 23, + 230, + 26, + 22, + 231, + 112, + 26, + 232, + 189, + 190, + 243, + 221, + 56, + 190, + 28, + 56, + 221, + 27, + 28, + 222, + 29, + 27, + 223, + 30, + 29, + 224, + 247, + 30, + 225, + 238, + 79, + 20, + 166, + 59, + 75, + 60, + 75, + 240, + 147, + 177, + 215, + 20, + 79, + 166, + 187, + 147, + 213, + 112, + 233, + 244, + 233, + 128, + 245, + 128, + 114, + 188, + 114, + 217, + 174, + 131, + 115, + 220, + 217, + 198, + 236, + 198, + 131, + 134, + 177, + 132, + 58, + 143, + 35, + 124, + 110, + 163, + 7, + 228, + 110, + 25, + 356, + 389, + 368, + 11, + 302, + 267, + 452, + 350, + 349, + 302, + 303, + 269, + 357, + 343, + 277, + 452, + 453, + 357, + 333, + 332, + 297, + 175, + 152, + 377, + 384, + 398, + 382, + 347, + 348, + 330, + 303, + 304, + 270, + 9, + 336, + 337, + 278, + 279, + 360, + 418, + 262, + 431, + 304, + 408, + 409, + 310, + 415, + 407, + 270, + 409, + 410, + 450, + 348, + 347, + 422, + 430, + 434, + 313, + 314, + 17, + 306, + 307, + 375, + 387, + 388, + 260, + 286, + 414, + 398, + 335, + 406, + 418, + 364, + 367, + 416, + 423, + 358, + 327, + 251, + 284, + 298, + 281, + 5, + 4, + 373, + 374, + 253, + 307, + 320, + 321, + 425, + 427, + 411, + 421, + 313, + 18, + 321, + 405, + 406, + 320, + 404, + 405, + 315, + 16, + 17, + 426, + 425, + 266, + 377, + 400, + 369, + 322, + 391, + 269, + 417, + 465, + 464, + 386, + 257, + 258, + 466, + 260, + 388, + 456, + 399, + 419, + 284, + 332, + 333, + 417, + 285, + 8, + 346, + 340, + 261, + 413, + 441, + 285, + 327, + 460, + 328, + 355, + 371, + 329, + 392, + 439, + 438, + 382, + 341, + 256, + 429, + 420, + 360, + 364, + 394, + 379, + 277, + 343, + 437, + 443, + 444, + 283, + 275, + 440, + 363, + 431, + 262, + 369, + 297, + 338, + 337, + 273, + 375, + 321, + 450, + 451, + 349, + 446, + 342, + 467, + 293, + 334, + 282, + 458, + 461, + 462, + 276, + 353, + 383, + 308, + 324, + 325, + 276, + 300, + 293, + 372, + 345, + 447, + 382, + 398, + 362, + 352, + 345, + 340, + 274, + 1, + 19, + 456, + 248, + 281, + 436, + 427, + 425, + 381, + 256, + 252, + 269, + 391, + 393, + 200, + 199, + 428, + 266, + 330, + 329, + 287, + 273, + 422, + 250, + 462, + 328, + 258, + 286, + 384, + 265, + 353, + 342, + 387, + 259, + 257, + 424, + 431, + 430, + 342, + 353, + 276, + 273, + 335, + 424, + 292, + 325, + 307, + 366, + 447, + 345, + 271, + 303, + 302, + 423, + 266, + 371, + 294, + 455, + 460, + 279, + 278, + 294, + 271, + 272, + 304, + 432, + 434, + 427, + 272, + 407, + 408, + 394, + 430, + 431, + 395, + 369, + 400, + 334, + 333, + 299, + 351, + 417, + 168, + 352, + 280, + 411, + 325, + 319, + 320, + 295, + 296, + 336, + 319, + 403, + 404, + 330, + 348, + 349, + 293, + 298, + 333, + 323, + 454, + 447, + 15, + 16, + 315, + 358, + 429, + 279, + 14, + 15, + 316, + 285, + 336, + 9, + 329, + 349, + 350, + 374, + 380, + 252, + 318, + 402, + 403, + 6, + 197, + 419, + 318, + 319, + 325, + 367, + 364, + 365, + 435, + 367, + 397, + 344, + 438, + 439, + 272, + 271, + 311, + 195, + 5, + 281, + 273, + 287, + 291, + 396, + 428, + 199, + 311, + 271, + 268, + 283, + 444, + 445, + 373, + 254, + 339, + 263, + 466, + 249, + 282, + 334, + 296, + 449, + 347, + 346, + 264, + 447, + 454, + 336, + 296, + 299, + 338, + 10, + 151, + 278, + 439, + 455, + 292, + 407, + 415, + 358, + 371, + 355, + 340, + 345, + 372, + 390, + 249, + 466, + 346, + 347, + 280, + 442, + 443, + 282, + 19, + 94, + 370, + 441, + 442, + 295, + 248, + 419, + 197, + 263, + 255, + 359, + 440, + 275, + 274, + 300, + 383, + 368, + 351, + 412, + 465, + 263, + 467, + 466, + 301, + 368, + 389, + 380, + 374, + 386, + 395, + 378, + 379, + 412, + 351, + 419, + 436, + 426, + 322, + 373, + 390, + 388, + 2, + 164, + 393, + 370, + 462, + 461, + 164, + 0, + 267, + 302, + 11, + 12, + 374, + 373, + 387, + 268, + 12, + 13, + 293, + 300, + 301, + 446, + 261, + 340, + 385, + 384, + 381, + 330, + 266, + 425, + 426, + 423, + 391, + 429, + 355, + 437, + 391, + 327, + 326, + 440, + 457, + 438, + 341, + 382, + 362, + 459, + 457, + 461, + 434, + 430, + 394, + 414, + 463, + 362, + 396, + 369, + 262, + 354, + 461, + 457, + 316, + 403, + 402, + 315, + 404, + 403, + 314, + 405, + 404, + 313, + 406, + 405, + 421, + 418, + 406, + 366, + 401, + 361, + 306, + 408, + 407, + 291, + 409, + 408, + 287, + 410, + 409, + 432, + 436, + 410, + 434, + 416, + 411, + 264, + 368, + 383, + 309, + 438, + 457, + 352, + 376, + 401, + 274, + 275, + 4, + 421, + 428, + 262, + 294, + 327, + 358, + 433, + 416, + 367, + 289, + 455, + 439, + 462, + 370, + 326, + 2, + 326, + 370, + 305, + 460, + 455, + 254, + 449, + 448, + 255, + 261, + 446, + 253, + 450, + 449, + 252, + 451, + 450, + 256, + 452, + 451, + 341, + 453, + 452, + 413, + 464, + 463, + 441, + 413, + 414, + 258, + 442, + 441, + 257, + 443, + 442, + 259, + 444, + 443, + 260, + 445, + 444, + 467, + 342, + 445, + 459, + 458, + 250, + 289, + 392, + 290, + 290, + 328, + 460, + 376, + 433, + 435, + 250, + 290, + 392, + 411, + 416, + 433, + 341, + 463, + 464, + 453, + 464, + 465, + 357, + 465, + 412, + 343, + 412, + 399, + 360, + 363, + 440, + 437, + 399, + 456, + 420, + 456, + 363, + 401, + 435, + 288, + 372, + 383, + 353, + 339, + 255, + 249, + 448, + 261, + 255, + 133, + 243, + 190, + 133, + 155, + 112, + 33, + 246, + 247, + 33, + 130, + 25, + 398, + 384, + 286, + 362, + 398, + 414, + 362, + 463, + 341, + 263, + 359, + 467, + 263, + 249, + 255, + 466, + 467, + 260, + 75, + 60, + 166, + 238, + 239, + 79, + 162, + 127, + 139, + 72, + 11, + 37, + 121, + 232, + 120, + 73, + 72, + 39, + 114, + 128, + 47, + 233, + 232, + 128, + 103, + 104, + 67, + 152, + 175, + 148, + 173, + 157, + 155, + 119, + 118, + 101, + 74, + 73, + 40, + 107, + 9, + 108, + 49, + 48, + 131, + 32, + 194, + 211, + 184, + 74, + 185, + 191, + 80, + 183, + 185, + 40, + 186, + 119, + 230, + 118, + 210, + 202, + 214, + 84, + 83, + 17, + 77, + 76, + 146, + 161, + 160, + 30, + 190, + 56, + 173, + 182, + 106, + 194, + 138, + 135, + 192, + 129, + 203, + 98, + 54, + 21, + 68, + 5, + 51, + 4, + 145, + 144, + 23, + 90, + 77, + 91, + 207, + 205, + 187, + 83, + 201, + 18, + 181, + 91, + 182, + 180, + 90, + 181, + 16, + 85, + 17, + 205, + 206, + 36, + 176, + 148, + 140, + 165, + 92, + 39, + 245, + 193, + 244, + 27, + 159, + 28, + 30, + 247, + 161, + 174, + 236, + 196, + 103, + 54, + 104, + 55, + 193, + 8, + 111, + 117, + 31, + 221, + 189, + 55, + 240, + 98, + 99, + 142, + 126, + 100, + 219, + 166, + 218, + 112, + 155, + 26, + 198, + 209, + 131, + 169, + 135, + 150, + 114, + 47, + 217, + 224, + 223, + 53, + 220, + 45, + 134, + 32, + 211, + 140, + 109, + 67, + 108, + 146, + 43, + 91, + 231, + 230, + 120, + 113, + 226, + 247, + 105, + 63, + 52, + 241, + 238, + 242, + 124, + 46, + 156, + 95, + 78, + 96, + 70, + 46, + 63, + 116, + 143, + 227, + 116, + 123, + 111, + 1, + 44, + 19, + 3, + 236, + 51, + 207, + 216, + 205, + 26, + 154, + 22, + 165, + 39, + 167, + 199, + 200, + 208, + 101, + 36, + 100, + 43, + 57, + 202, + 242, + 20, + 99, + 56, + 28, + 157, + 124, + 35, + 113, + 29, + 160, + 27, + 211, + 204, + 210, + 124, + 113, + 46, + 106, + 43, + 204, + 96, + 62, + 77, + 227, + 137, + 116, + 73, + 41, + 72, + 36, + 203, + 142, + 235, + 64, + 240, + 48, + 49, + 64, + 42, + 41, + 74, + 214, + 212, + 207, + 183, + 42, + 184, + 210, + 169, + 211, + 140, + 170, + 176, + 104, + 105, + 69, + 193, + 122, + 168, + 50, + 123, + 187, + 89, + 96, + 90, + 66, + 65, + 107, + 179, + 89, + 180, + 119, + 101, + 120, + 68, + 63, + 104, + 234, + 93, + 227, + 16, + 15, + 85, + 209, + 129, + 49, + 15, + 14, + 86, + 107, + 55, + 9, + 120, + 100, + 121, + 153, + 145, + 22, + 178, + 88, + 179, + 197, + 6, + 196, + 89, + 88, + 96, + 135, + 138, + 136, + 138, + 215, + 172, + 218, + 115, + 219, + 41, + 42, + 81, + 5, + 195, + 51, + 57, + 43, + 61, + 208, + 171, + 199, + 41, + 81, + 38, + 224, + 53, + 225, + 24, + 144, + 110, + 105, + 52, + 66, + 118, + 229, + 117, + 227, + 34, + 234, + 66, + 107, + 69, + 10, + 109, + 151, + 219, + 48, + 235, + 183, + 62, + 191, + 142, + 129, + 126, + 116, + 111, + 143, + 7, + 163, + 246, + 118, + 117, + 50, + 223, + 222, + 52, + 94, + 19, + 141, + 222, + 221, + 65, + 196, + 3, + 197, + 45, + 220, + 44, + 156, + 70, + 139, + 188, + 122, + 245, + 139, + 71, + 162, + 145, + 153, + 159, + 149, + 170, + 150, + 122, + 188, + 196, + 206, + 216, + 92, + 163, + 144, + 161, + 164, + 2, + 167, + 242, + 141, + 241, + 0, + 164, + 37, + 11, + 72, + 12, + 144, + 145, + 160, + 12, + 38, + 13, + 70, + 63, + 71, + 31, + 226, + 111, + 157, + 158, + 154, + 36, + 101, + 205, + 203, + 206, + 165, + 126, + 209, + 217, + 98, + 165, + 97, + 237, + 220, + 218, + 237, + 239, + 241, + 210, + 214, + 169, + 140, + 171, + 32, + 241, + 125, + 237, + 179, + 86, + 178, + 180, + 85, + 179, + 181, + 84, + 180, + 182, + 83, + 181, + 194, + 201, + 182, + 177, + 137, + 132, + 184, + 76, + 183, + 185, + 61, + 184, + 186, + 57, + 185, + 216, + 212, + 186, + 192, + 214, + 187, + 139, + 34, + 156, + 218, + 79, + 237, + 147, + 123, + 177, + 45, + 44, + 4, + 208, + 201, + 32, + 98, + 64, + 129, + 192, + 213, + 138, + 235, + 59, + 219, + 141, + 242, + 97, + 97, + 2, + 141, + 240, + 75, + 235, + 229, + 24, + 228, + 31, + 25, + 226, + 230, + 23, + 229, + 231, + 22, + 230, + 232, + 26, + 231, + 233, + 112, + 232, + 244, + 189, + 243, + 189, + 221, + 190, + 222, + 28, + 221, + 223, + 27, + 222, + 224, + 29, + 223, + 225, + 30, + 224, + 113, + 247, + 225, + 99, + 60, + 240, + 213, + 147, + 215, + 60, + 20, + 166, + 192, + 187, + 213, + 243, + 112, + 244, + 244, + 233, + 245, + 245, + 128, + 188, + 188, + 114, + 174, + 134, + 131, + 220, + 174, + 217, + 236, + 236, + 198, + 134, + 215, + 177, + 58, + 156, + 143, + 124, + 25, + 110, + 7, + 31, + 228, + 25, + 264, + 356, + 368, + 0, + 11, + 267, + 451, + 452, + 349, + 267, + 302, + 269, + 350, + 357, + 277, + 350, + 452, + 357, + 299, + 333, + 297, + 396, + 175, + 377, + 381, + 384, + 382, + 280, + 347, + 330, + 269, + 303, + 270, + 151, + 9, + 337, + 344, + 278, + 360, + 424, + 418, + 431, + 270, + 304, + 409, + 272, + 310, + 407, + 322, + 270, + 410, + 449, + 450, + 347, + 432, + 422, + 434, + 18, + 313, + 17, + 291, + 306, + 375, + 259, + 387, + 260, + 424, + 335, + 418, + 434, + 364, + 416, + 391, + 423, + 327, + 301, + 251, + 298, + 275, + 281, + 4, + 254, + 373, + 253, + 375, + 307, + 321, + 280, + 425, + 411, + 200, + 421, + 18, + 335, + 321, + 406, + 321, + 320, + 405, + 314, + 315, + 17, + 423, + 426, + 266, + 396, + 377, + 369, + 270, + 322, + 269, + 413, + 417, + 464, + 385, + 386, + 258, + 248, + 456, + 419, + 298, + 284, + 333, + 168, + 417, + 8, + 448, + 346, + 261, + 417, + 413, + 285, + 326, + 327, + 328, + 277, + 355, + 329, + 309, + 392, + 438, + 381, + 382, + 256, + 279, + 429, + 360, + 365, + 364, + 379, + 355, + 277, + 437, + 282, + 443, + 283, + 281, + 275, + 363, + 395, + 431, + 369, + 299, + 297, + 337, + 335, + 273, + 321, + 348, + 450, + 349, + 359, + 446, + 467, + 283, + 293, + 282, + 250, + 458, + 462, + 300, + 276, + 383, + 292, + 308, + 325, + 283, + 276, + 293, + 264, + 372, + 447, + 346, + 352, + 340, + 354, + 274, + 19, + 363, + 456, + 281, + 426, + 436, + 425, + 380, + 381, + 252, + 267, + 269, + 393, + 421, + 200, + 428, + 371, + 266, + 329, + 432, + 287, + 422, + 290, + 250, + 328, + 385, + 258, + 384, + 446, + 265, + 342, + 386, + 387, + 257, + 422, + 424, + 430, + 445, + 342, + 276, + 422, + 273, + 424, + 306, + 292, + 307, + 352, + 366, + 345, + 268, + 271, + 302, + 358, + 423, + 371, + 327, + 294, + 460, + 331, + 279, + 294, + 303, + 271, + 304, + 436, + 432, + 427, + 304, + 272, + 408, + 395, + 394, + 431, + 378, + 395, + 400, + 296, + 334, + 299, + 6, + 351, + 168, + 376, + 352, + 411, + 307, + 325, + 320, + 285, + 295, + 336, + 320, + 319, + 404, + 329, + 330, + 349, + 334, + 293, + 333, + 366, + 323, + 447, + 316, + 15, + 315, + 331, + 358, + 279, + 317, + 14, + 316, + 8, + 285, + 9, + 277, + 329, + 350, + 253, + 374, + 252, + 319, + 318, + 403, + 351, + 6, + 419, + 324, + 318, + 325, + 397, + 367, + 365, + 288, + 435, + 397, + 278, + 344, + 439, + 310, + 272, + 311, + 248, + 195, + 281, + 375, + 273, + 291, + 175, + 396, + 199, + 312, + 311, + 268, + 276, + 283, + 445, + 390, + 373, + 339, + 295, + 282, + 296, + 448, + 449, + 346, + 356, + 264, + 454, + 337, + 336, + 299, + 337, + 338, + 151, + 294, + 278, + 455, + 308, + 292, + 415, + 429, + 358, + 355, + 265, + 340, + 372, + 388, + 390, + 466, + 352, + 346, + 280, + 295, + 442, + 282, + 354, + 19, + 370, + 285, + 441, + 295, + 195, + 248, + 197, + 457, + 440, + 274, + 301, + 300, + 368, + 417, + 351, + 465, + 251, + 301, + 389, + 385, + 380, + 386, + 394, + 395, + 379, + 399, + 412, + 419, + 410, + 436, + 322, + 387, + 373, + 388, + 326, + 2, + 393, + 354, + 370, + 461, + 393, + 164, + 267, + 268, + 302, + 12, + 386, + 374, + 387, + 312, + 268, + 13, + 298, + 293, + 301, + 265, + 446, + 340, + 380, + 385, + 381, + 280, + 330, + 425, + 322, + 426, + 391, + 420, + 429, + 437, + 393, + 391, + 326, + 344, + 440, + 438, + 458, + 459, + 461, + 364, + 434, + 394, + 428, + 396, + 262, + 274, + 354, + 457, + 317, + 316, + 402, + 316, + 315, + 403, + 315, + 314, + 404, + 314, + 313, + 405, + 313, + 421, + 406, + 323, + 366, + 361, + 292, + 306, + 407, + 306, + 291, + 408, + 291, + 287, + 409, + 287, + 432, + 410, + 427, + 434, + 411, + 372, + 264, + 383, + 459, + 309, + 457, + 366, + 352, + 401, + 1, + 274, + 4, + 418, + 421, + 262, + 331, + 294, + 358, + 435, + 433, + 367, + 392, + 289, + 439, + 328, + 462, + 326, + 94, + 2, + 370, + 289, + 305, + 455, + 339, + 254, + 448, + 359, + 255, + 446, + 254, + 253, + 449, + 253, + 252, + 450, + 252, + 256, + 451, + 256, + 341, + 452, + 414, + 413, + 463, + 286, + 441, + 414, + 286, + 258, + 441, + 258, + 257, + 442, + 257, + 259, + 443, + 259, + 260, + 444, + 260, + 467, + 445, + 309, + 459, + 250, + 305, + 289, + 290, + 305, + 290, + 460, + 401, + 376, + 435, + 309, + 250, + 392, + 376, + 411, + 433, + 453, + 341, + 464, + 357, + 453, + 465, + 343, + 357, + 412, + 437, + 343, + 399, + 344, + 360, + 440, + 420, + 437, + 456, + 360, + 420, + 363, + 361, + 401, + 288, + 265, + 372, + 353, + 390, + 339, + 249, + 339, + 448, + 255 +]; +var VTX68 = [ + 127, + 234, + 132, + 58, + 172, + 150, + 149, + 148, + 152, + 377, + 378, + 379, + 397, + 288, + 361, + 454, + 356, + 70, + 63, + 105, + 66, + 107, + 336, + 296, + 334, + 293, + 300, + 168, + 6, + 195, + 4, + 98, + 97, + 2, + 326, + 327, + 33, + 160, + 158, + 133, + 153, + 144, + 362, + 385, + 387, + 263, + 373, + 380, + 57, + 40, + 37, + 0, + 267, + 270, + 287, + 321, + 314, + 17, + 84, + 91, + 78, + 81, + 13, + 311, + 308, + 402, + 14, + 178 +]; +var VTX33 = [33, 133, 362, 263, 1, 62, 308, 159, 145, 386, 374, 6, 102, 331, 2, 13, 14, 70, 105, 107, 336, 334, 300, 54, 10, 284, 50, 280, 234, 454, 58, 288, 152]; +var VTX7 = [33, 133, 362, 263, 1, 78, 308]; +var UV68 = VTX68.map((x) => UV468[x]); +var UV33 = VTX33.map((x) => UV468[x]); +var UV7 = VTX7.map((x) => UV468[x]); + +// src/blazeface/facepipeline.ts +var leftOutline = MESH_ANNOTATIONS["leftEyeLower0"]; +var rightOutline = MESH_ANNOTATIONS["rightEyeLower0"]; +var eyeLandmarks = { + leftBounds: [leftOutline[0], leftOutline[leftOutline.length - 1]], + rightBounds: [rightOutline[0], rightOutline[rightOutline.length - 1]] +}; +var meshLandmarks = { + count: 468, + mouth: 13, + symmetryLine: [13, MESH_ANNOTATIONS["midwayBetweenEyes"][0]] +}; +var blazeFaceLandmarks = { + leftEye: 0, + rightEye: 1, + nose: 2, + mouth: 3, + leftEar: 4, + rightEar: 5, + symmetryLine: [3, 2] +}; +var irisLandmarks = { + upperCenter: 3, + lowerCenter: 4, + index: 71, + numCoordinates: 76 +}; +function replaceRawCoordinates(rawCoords, newCoords, prefix, keys) { + for (let i = 0; i < MESH_TO_IRIS_INDICES_MAP.length; i++) { + const {key, indices} = MESH_TO_IRIS_INDICES_MAP[i]; + const originalIndices = MESH_ANNOTATIONS[`${prefix}${key}`]; + if (!keys || keys.includes(key)) { + for (let j = 0; j < indices.length; j++) { + const index = indices[j]; + rawCoords[originalIndices[j]] = [ + newCoords[index][0], + newCoords[index][1], + (newCoords[index][2] + rawCoords[originalIndices[j]][2]) / 2 + ]; + } + } + } +} +var Pipeline = class { + constructor(boundingBoxDetector, meshDetector, irisModel) { + var _a, _b; + this.storedBoxes = []; + this.boundingBoxDetector = boundingBoxDetector; + this.meshDetector = meshDetector; + this.irisModel = irisModel; + this.boxSize = ((_a = boundingBoxDetector == null ? void 0 : boundingBoxDetector.model) == null ? void 0 : _a.inputs[0].shape[2]) || 0; + this.meshSize = (meshDetector == null ? void 0 : meshDetector.inputs[0].shape[2]) || ((_b = boundingBoxDetector == null ? void 0 : boundingBoxDetector.model) == null ? void 0 : _b.inputs[0].shape[2]); + this.irisSize = (irisModel == null ? void 0 : irisModel.inputs[0].shape[1]) || 0; + this.irisEnlarge = 2.3; + this.skipped = 0; + this.detectedFaces = 0; + } + transformRawCoords(rawCoords, box3, angle, rotationMatrix) { + const boxSize = getBoxSize({startPoint: box3.startPoint, endPoint: box3.endPoint}); + const coordsScaled = rawCoords.map((coord) => [ + boxSize[0] / this.meshSize * (coord[0] - this.meshSize / 2), + boxSize[1] / this.meshSize * (coord[1] - this.meshSize / 2), + coord[2] + ]); + const coordsRotationMatrix = angle !== 0 ? buildRotationMatrix(angle, [0, 0]) : IDENTITY_MATRIX; + const coordsRotated = angle !== 0 ? coordsScaled.map((coord) => [...rotatePoint(coord, coordsRotationMatrix), coord[2]]) : coordsScaled; + const inverseRotationMatrix = angle !== 0 ? invertTransformMatrix(rotationMatrix) : IDENTITY_MATRIX; + const boxCenter = [...getBoxCenter({startPoint: box3.startPoint, endPoint: box3.endPoint}), 1]; + return coordsRotated.map((coord) => [ + coord[0] + dot(boxCenter, inverseRotationMatrix[0]), + coord[1] + dot(boxCenter, inverseRotationMatrix[1]), + coord[2] + ]); + } + getLeftToRightEyeDepthDifference(rawCoords) { + const leftEyeZ = rawCoords[eyeLandmarks.leftBounds[0]][2]; + const rightEyeZ = rawCoords[eyeLandmarks.rightBounds[0]][2]; + return leftEyeZ - rightEyeZ; + } + getEyeBox(rawCoords, face4, eyeInnerCornerIndex, eyeOuterCornerIndex, flip = false) { + const box3 = squarifyBox(enlargeBox(this.calculateLandmarksBoundingBox([rawCoords[eyeInnerCornerIndex], rawCoords[eyeOuterCornerIndex]]), this.irisEnlarge)); + const boxSize = getBoxSize(box3); + let crop = tf9.image.cropAndResize(face4, [[ + box3.startPoint[1] / this.meshSize, + box3.startPoint[0] / this.meshSize, + box3.endPoint[1] / this.meshSize, + box3.endPoint[0] / this.meshSize + ]], [0], [this.irisSize, this.irisSize]); + if (flip && tf9.ENV.flags.IS_BROWSER) { + crop = tf9.image.flipLeftRight(crop); + } + return {box: box3, boxSize, crop}; + } + getEyeCoords(eyeData, eyeBox, eyeBoxSize, flip = false) { + const eyeRawCoords = []; + for (let i = 0; i < irisLandmarks.numCoordinates; i++) { + const x = eyeData[i * 3]; + const y = eyeData[i * 3 + 1]; + const z = eyeData[i * 3 + 2]; + eyeRawCoords.push([ + (flip ? 1 - x / this.irisSize : x / this.irisSize) * eyeBoxSize[0] + eyeBox.startPoint[0], + y / this.irisSize * eyeBoxSize[1] + eyeBox.startPoint[1], + z + ]); + } + return {rawCoords: eyeRawCoords, iris: eyeRawCoords.slice(irisLandmarks.index)}; + } + getAdjustedIrisCoords(rawCoords, irisCoords, direction) { + const upperCenterZ = rawCoords[MESH_ANNOTATIONS[`${direction}EyeUpper0`][irisLandmarks.upperCenter]][2]; + const lowerCenterZ = rawCoords[MESH_ANNOTATIONS[`${direction}EyeLower0`][irisLandmarks.lowerCenter]][2]; + const averageZ = (upperCenterZ + lowerCenterZ) / 2; + return irisCoords.map((coord, i) => { + let z = averageZ; + if (i === 2) { + z = upperCenterZ; + } else if (i === 4) { + z = lowerCenterZ; + } + return [coord[0], coord[1], z]; + }); + } + async predict(input, config3) { + let useFreshBox = false; + let detector; + if (this.skipped === 0 || this.skipped > config3.face.detector.skipFrames || !config3.face.mesh.enabled || !config3.videoOptimized) { + detector = await this.boundingBoxDetector.getBoundingBoxes(input); + this.skipped = 0; + } + if (config3.videoOptimized) + this.skipped++; + if (!config3.videoOptimized || detector && detector.boxes && (!config3.face.mesh.enabled || detector.boxes.length !== this.detectedFaces && this.detectedFaces !== config3.face.detector.maxFaces)) { + this.storedBoxes = []; + this.detectedFaces = 0; + for (const possible of detector.boxes) { + this.storedBoxes.push({startPoint: possible.box.startPoint.dataSync(), endPoint: possible.box.endPoint.dataSync(), landmarks: possible.landmarks, confidence: possible.confidence}); + } + if (this.storedBoxes.length > 0) + useFreshBox = true; + } + if (config3.face.detector.skipInitial && this.detectedFaces === 0) + this.skipped = 0; + if (useFreshBox) { + if (!detector || !detector.boxes || detector.boxes.length === 0) { + this.storedBoxes = []; + this.detectedFaces = 0; + return null; + } + for (let i = 0; i < this.storedBoxes.length; i++) { + const scaledBox = scaleBoxCoordinates({startPoint: this.storedBoxes[i].startPoint, endPoint: this.storedBoxes[i].endPoint}, detector.scaleFactor); + const enlargedBox = enlargeBox(scaledBox); + const squarifiedBox = squarifyBox(enlargedBox); + const landmarks = this.storedBoxes[i].landmarks.arraySync(); + const confidence = this.storedBoxes[i].confidence; + this.storedBoxes[i] = {...squarifiedBox, confidence, landmarks}; + } + } + if (detector && detector.boxes) { + detector.boxes.forEach((prediction) => { + prediction.box.startPoint.dispose(); + prediction.box.endPoint.dispose(); + prediction.landmarks.dispose(); + }); + } + let results = tf9.tidy(() => this.storedBoxes.map((box3, i) => { + const boxConfidence = box3.confidence; + let face4; + let angle = 0; + let rotationMatrix; + if (config3.face.detector.rotation && config3.face.mesh.enabled && tf9.ENV.flags.IS_BROWSER) { + const [indexOfMouth, indexOfForehead] = box3.landmarks.length >= meshLandmarks.count ? meshLandmarks.symmetryLine : blazeFaceLandmarks.symmetryLine; + angle = computeRotation(box3.landmarks[indexOfMouth], box3.landmarks[indexOfForehead]); + const faceCenter = getBoxCenter({startPoint: box3.startPoint, endPoint: box3.endPoint}); + const faceCenterNormalized = [faceCenter[0] / input.shape[2], faceCenter[1] / input.shape[1]]; + const rotatedImage = tf9.image.rotateWithOffset(input, angle, 0, faceCenterNormalized); + rotationMatrix = buildRotationMatrix(-angle, faceCenter); + if (config3.face.mesh.enabled) + face4 = cutBoxFromImageAndResize({startPoint: box3.startPoint, endPoint: box3.endPoint}, rotatedImage, [this.meshSize, this.meshSize]).div(255); + else + face4 = cutBoxFromImageAndResize({startPoint: box3.startPoint, endPoint: box3.endPoint}, rotatedImage, [this.boxSize, this.boxSize]).div(255); + } else { + rotationMatrix = IDENTITY_MATRIX; + const clonedImage = input.clone(); + if (config3.face.mesh.enabled) + face4 = cutBoxFromImageAndResize({startPoint: box3.startPoint, endPoint: box3.endPoint}, clonedImage, [this.meshSize, this.meshSize]).div(255); + else + face4 = cutBoxFromImageAndResize({startPoint: box3.startPoint, endPoint: box3.endPoint}, clonedImage, [this.boxSize, this.boxSize]).div(255); + } + if (!config3.face.mesh.enabled) { + const prediction2 = { + coords: null, + box: box3, + faceConfidence: null, + boxConfidence, + confidence: box3.confidence, + image: face4 + }; + return prediction2; + } + const [, confidence, contourCoords] = this.meshDetector.predict(face4); + const faceConfidence = confidence.dataSync()[0]; + if (faceConfidence < config3.face.detector.minConfidence) + return null; + const coordsReshaped = tf9.reshape(contourCoords, [-1, 3]); + let rawCoords = coordsReshaped.arraySync(); + if (config3.face.iris.enabled) { + const {box: leftEyeBox, boxSize: leftEyeBoxSize, crop: leftEyeCrop} = this.getEyeBox(rawCoords, face4, eyeLandmarks.leftBounds[0], eyeLandmarks.leftBounds[1], true); + const {box: rightEyeBox, boxSize: rightEyeBoxSize, crop: rightEyeCrop} = this.getEyeBox(rawCoords, face4, eyeLandmarks.rightBounds[0], eyeLandmarks.rightBounds[1]); + const eyePredictions = this.irisModel.predict(tf9.concat([leftEyeCrop, rightEyeCrop])); + const eyePredictionsData = eyePredictions.dataSync(); + const leftEyeData = eyePredictionsData.slice(0, irisLandmarks.numCoordinates * 3); + const {rawCoords: leftEyeRawCoords, iris: leftIrisRawCoords} = this.getEyeCoords(leftEyeData, leftEyeBox, leftEyeBoxSize, true); + const rightEyeData = eyePredictionsData.slice(irisLandmarks.numCoordinates * 3); + const {rawCoords: rightEyeRawCoords, iris: rightIrisRawCoords} = this.getEyeCoords(rightEyeData, rightEyeBox, rightEyeBoxSize); + const leftToRightEyeDepthDifference = this.getLeftToRightEyeDepthDifference(rawCoords); + if (Math.abs(leftToRightEyeDepthDifference) < 30) { + replaceRawCoordinates(rawCoords, leftEyeRawCoords, "left", null); + replaceRawCoordinates(rawCoords, rightEyeRawCoords, "right", null); + } else if (leftToRightEyeDepthDifference < 1) { + replaceRawCoordinates(rawCoords, leftEyeRawCoords, "left", ["EyeUpper0", "EyeLower0"]); + } else { + replaceRawCoordinates(rawCoords, rightEyeRawCoords, "right", ["EyeUpper0", "EyeLower0"]); + } + const adjustedLeftIrisCoords = this.getAdjustedIrisCoords(rawCoords, leftIrisRawCoords, "left"); + const adjustedRightIrisCoords = this.getAdjustedIrisCoords(rawCoords, rightIrisRawCoords, "right"); + rawCoords = rawCoords.concat(adjustedLeftIrisCoords).concat(adjustedRightIrisCoords); + } + const transformedCoordsData = this.transformRawCoords(rawCoords, box3, angle, rotationMatrix); + box3 = enlargeBox(this.calculateLandmarksBoundingBox(transformedCoordsData), 1.5); + const transformedCoords = tf9.tensor2d(transformedCoordsData); + if (config3.face.detector.rotation && config3.face.mesh.enabled && (config3.face.description.enabled || config3.face.embedding.enabled) && tf9.ENV.flags.IS_BROWSER) { + const [indexOfMouth, indexOfForehead] = box3.landmarks.length >= meshLandmarks.count ? meshLandmarks.symmetryLine : blazeFaceLandmarks.symmetryLine; + angle = computeRotation(box3.landmarks[indexOfMouth], box3.landmarks[indexOfForehead]); + const faceCenter = getBoxCenter({startPoint: box3.startPoint, endPoint: box3.endPoint}); + const faceCenterNormalized = [faceCenter[0] / input.shape[2], faceCenter[1] / input.shape[1]]; + const rotatedImage = tf9.image.rotateWithOffset(input, angle, 0, faceCenterNormalized); + rotationMatrix = buildRotationMatrix(-angle, faceCenter); + face4 = cutBoxFromImageAndResize({startPoint: box3.startPoint, endPoint: box3.endPoint}, rotatedImage, [this.meshSize, this.meshSize]).div(255); + } + const prediction = { + coords: transformedCoords, + box: box3, + faceConfidence, + boxConfidence, + image: face4, + rawCoords + }; + const squarifiedLandmarksBox = squarifyBox(box3); + this.storedBoxes[i] = {...squarifiedLandmarksBox, landmarks: transformedCoordsData, confidence: box3.confidence, faceConfidence}; + return prediction; + })); + results = results.filter((a) => a !== null); + if (config3.face.mesh.enabled) + this.storedBoxes = this.storedBoxes.filter((a) => a.faceConfidence > config3.face.detector.minConfidence); + this.detectedFaces = results.length; + return results; + } + calculateLandmarksBoundingBox(landmarks) { + const xs = landmarks.map((d) => d[0]); + const ys = landmarks.map((d) => d[1]); + const startPoint = [Math.min(...xs), Math.min(...ys)]; + const endPoint = [Math.max(...xs), Math.max(...ys)]; + return {startPoint, endPoint, landmarks}; + } +}; + +// src/human.ts +var facemesh = __toModule(require_facemesh()); + +// src/posenet/posenet.ts +var posenet_exports = {}; +__export(posenet_exports, { + PoseNet: () => PoseNet, + load: () => load7 +}); +var tf12 = require_tfjs_esm(); + +// src/posenet/modelBase.ts +var tf10 = require_tfjs_esm(); +function nameOutputResultsMobileNet(results) { + const [offsets, heatmap, displacementFwd, displacementBwd] = results; + return {offsets, heatmap, displacementFwd, displacementBwd}; +} +var BaseModel = class { + constructor(model8) { + this.model = model8; + } + predict(input) { + return tf10.tidy(() => { + const asFloat = input.toFloat().div(127.5).sub(1); + const asBatch = asFloat.expandDims(0); + const results = this.model.predict(asBatch); + const results3d = results.map((y) => y.squeeze([0])); + const namedResults = nameOutputResultsMobileNet(results3d); + return { + heatmapScores: namedResults.heatmap.sigmoid(), + offsets: namedResults.offsets, + displacementFwd: namedResults.displacementFwd, + displacementBwd: namedResults.displacementBwd + }; + }); + } + dispose() { + this.model.dispose(); + } +}; + +// src/posenet/heapSort.ts +function half(k) { + return Math.floor(k / 2); +} +var MaxHeap = class { + constructor(maxSize2, getElementValue) { + this.priorityQueue = new Array(maxSize2); + this.numberOfElements = -1; + this.getElementValue = getElementValue; + } + enqueue(x) { + this.priorityQueue[++this.numberOfElements] = x; + this.swim(this.numberOfElements); + } + dequeue() { + const max = this.priorityQueue[0]; + this.exchange(0, this.numberOfElements--); + this.sink(0); + this.priorityQueue[this.numberOfElements + 1] = null; + return max; + } + empty() { + return this.numberOfElements === -1; + } + size() { + return this.numberOfElements + 1; + } + all() { + return this.priorityQueue.slice(0, this.numberOfElements + 1); + } + max() { + return this.priorityQueue[0]; + } + swim(k) { + while (k > 0 && this.less(half(k), k)) { + this.exchange(k, half(k)); + k = half(k); + } + } + sink(k) { + while (2 * k <= this.numberOfElements) { + let j = 2 * k; + if (j < this.numberOfElements && this.less(j, j + 1)) + j++; + if (!this.less(k, j)) + break; + this.exchange(k, j); + k = j; + } + } + getValueAt(i) { + return this.getElementValue(this.priorityQueue[i]); + } + less(i, j) { + return this.getValueAt(i) < this.getValueAt(j); + } + exchange(i, j) { + const t = this.priorityQueue[i]; + this.priorityQueue[i] = this.priorityQueue[j]; + this.priorityQueue[j] = t; + } +}; + +// src/posenet/buildParts.ts +function scoreIsMaximumInLocalWindow(keypointId, score, heatmapY, heatmapX, localMaximumRadius, scores) { + const [height, width] = scores.shape; + let localMaximum = true; + const yStart = Math.max(heatmapY - localMaximumRadius, 0); + const yEnd = Math.min(heatmapY + localMaximumRadius + 1, height); + for (let yCurrent = yStart; yCurrent < yEnd; ++yCurrent) { + const xStart = Math.max(heatmapX - localMaximumRadius, 0); + const xEnd = Math.min(heatmapX + localMaximumRadius + 1, width); + for (let xCurrent = xStart; xCurrent < xEnd; ++xCurrent) { + if (scores.get(yCurrent, xCurrent, keypointId) > score) { + localMaximum = false; + break; + } + } + if (!localMaximum) + break; + } + return localMaximum; +} +function buildPartWithScoreQueue(scoreThreshold, localMaximumRadius, scores) { + const [height, width, numKeypoints] = scores.shape; + const queue = new MaxHeap(height * width * numKeypoints, ({score}) => score); + for (let heatmapY = 0; heatmapY < height; ++heatmapY) { + for (let heatmapX = 0; heatmapX < width; ++heatmapX) { + for (let keypointId = 0; keypointId < numKeypoints; ++keypointId) { + const score = scores.get(heatmapY, heatmapX, keypointId); + if (score < scoreThreshold) + continue; + if (scoreIsMaximumInLocalWindow(keypointId, score, heatmapY, heatmapX, localMaximumRadius, scores)) { + queue.enqueue({score, part: {heatmapY, heatmapX, id: keypointId}}); + } + } + } + } + return queue; +} + +// src/posenet/decodePose.ts +var keypoints = __toModule(require_keypoints()); + +// src/posenet/vectors.ts +var kpt = __toModule(require_keypoints()); +function getOffsetPoint(y, x, keypoint, offsets) { + return { + y: offsets.get(y, x, keypoint), + x: offsets.get(y, x, keypoint + kpt.NUM_KEYPOINTS) + }; +} +function getImageCoords(part, outputStride, offsets) { + const {heatmapY, heatmapX, id: keypoint} = part; + const {y, x} = getOffsetPoint(heatmapY, heatmapX, keypoint, offsets); + return { + x: part.heatmapX * outputStride + x, + y: part.heatmapY * outputStride + y + }; +} +function clamp(a, min, max) { + if (a < min) + return min; + if (a > max) + return max; + return a; +} +function squaredDistance(y1, x1, y2, x2) { + const dy = y2 - y1; + const dx = x2 - x1; + return dy * dy + dx * dx; +} +function addVectors(a, b) { + return {x: a.x + b.x, y: a.y + b.y}; +} + +// src/posenet/decoders.ts +var tf11 = require_tfjs_esm(); +var kpt2 = __toModule(require_keypoints()); +function getPointsConfidence(heatmapScores, heatMapCoords) { + const numKeypoints = heatMapCoords.shape[0]; + const result = new Float32Array(numKeypoints); + for (let keypoint = 0; keypoint < numKeypoints; keypoint++) { + const y = heatMapCoords.get(keypoint, 0); + const x = heatMapCoords.get(keypoint, 1); + result[keypoint] = heatmapScores.get(y, x, keypoint); + } + return result; +} +function getOffsetPoint2(y, x, keypoint, offsetsBuffer) { + return { + y: offsetsBuffer.get(y, x, keypoint), + x: offsetsBuffer.get(y, x, keypoint + kpt2.NUM_KEYPOINTS) + }; +} +function getOffsetVectors(heatMapCoordsBuffer, offsetsBuffer) { + const result = []; + for (let keypoint = 0; keypoint < kpt2.NUM_KEYPOINTS; keypoint++) { + const heatmapY = heatMapCoordsBuffer.get(keypoint, 0).valueOf(); + const heatmapX = heatMapCoordsBuffer.get(keypoint, 1).valueOf(); + const {x, y} = getOffsetPoint2(heatmapY, heatmapX, keypoint, offsetsBuffer); + result.push(y); + result.push(x); + } + return tf11.tensor2d(result, [kpt2.NUM_KEYPOINTS, 2]); +} +function getOffsetPoints(heatMapCoordsBuffer, outputStride, offsetsBuffer) { + return tf11.tidy(() => heatMapCoordsBuffer.toTensor().mul(tf11.scalar(outputStride, "int32")).toFloat().add(getOffsetVectors(heatMapCoordsBuffer, offsetsBuffer))); +} +function mod(a, b) { + return tf11.tidy(() => { + const floored = a.div(tf11.scalar(b, "int32")); + return a.sub(floored.mul(tf11.scalar(b, "int32"))); + }); +} +function argmax2d(inputs) { + const [height, width, depth] = inputs.shape; + return tf11.tidy(() => { + const reshaped = inputs.reshape([height * width, depth]); + const coords2 = reshaped.argMax(0); + const yCoords = coords2.div(tf11.scalar(width, "int32")).expandDims(1); + const xCoords = mod(coords2, width).expandDims(1); + return tf11.concat([yCoords, xCoords], 1); + }); +} + +// src/posenet/decodePose.ts +var parentChildrenTuples = keypoints.poseChain.map(([parentJoinName, childJoinName]) => [keypoints.partIds[parentJoinName], keypoints.partIds[childJoinName]]); +var parentToChildEdges = parentChildrenTuples.map(([, childJointId]) => childJointId); +var childToParentEdges = parentChildrenTuples.map(([parentJointId]) => parentJointId); +var defaultOutputStride = 16; +function getDisplacement(edgeId, point2, displacements) { + const numEdges = displacements.shape[2] / 2; + return { + y: displacements.get(point2.y, point2.x, edgeId), + x: displacements.get(point2.y, point2.x, numEdges + edgeId) + }; +} +function getStridedIndexNearPoint(point2, outputStride, height, width) { + return { + y: clamp(Math.round(point2.y / outputStride), 0, height - 1), + x: clamp(Math.round(point2.x / outputStride), 0, width - 1) + }; +} +function traverseToTargetKeypoint(edgeId, sourceKeypoint, targetKeypointId, scoresBuffer, offsets, outputStride, displacements, offsetRefineStep = 2) { + const [height, width] = scoresBuffer.shape; + const sourceKeypointIndices = getStridedIndexNearPoint(sourceKeypoint.position, outputStride, height, width); + const displacement = getDisplacement(edgeId, sourceKeypointIndices, displacements); + const displacedPoint = addVectors(sourceKeypoint.position, displacement); + let targetKeypoint = displacedPoint; + for (let i = 0; i < offsetRefineStep; i++) { + const targetKeypointIndices = getStridedIndexNearPoint(targetKeypoint, outputStride, height, width); + const offsetPoint = getOffsetPoint(targetKeypointIndices.y, targetKeypointIndices.x, targetKeypointId, offsets); + targetKeypoint = addVectors({ + x: targetKeypointIndices.x * outputStride, + y: targetKeypointIndices.y * outputStride + }, {x: offsetPoint.x, y: offsetPoint.y}); + } + const targetKeyPointIndices = getStridedIndexNearPoint(targetKeypoint, outputStride, height, width); + const score = scoresBuffer.get(targetKeyPointIndices.y, targetKeyPointIndices.x, targetKeypointId); + return {position: targetKeypoint, part: keypoints.partNames[targetKeypointId], score}; +} +function decodePose(root, scores, offsets, outputStride, displacementsFwd, displacementsBwd) { + const numParts = scores.shape[2]; + const numEdges = parentToChildEdges.length; + const instanceKeypoints = new Array(numParts); + const {part: rootPart, score: rootScore} = root; + const rootPoint = getImageCoords(rootPart, outputStride, offsets); + instanceKeypoints[rootPart.id] = { + score: rootScore, + part: keypoints.partNames[rootPart.id], + position: rootPoint + }; + for (let edge = numEdges - 1; edge >= 0; --edge) { + const sourceKeypointId = parentToChildEdges[edge]; + const targetKeypointId = childToParentEdges[edge]; + if (instanceKeypoints[sourceKeypointId] && !instanceKeypoints[targetKeypointId]) { + instanceKeypoints[targetKeypointId] = traverseToTargetKeypoint(edge, instanceKeypoints[sourceKeypointId], targetKeypointId, scores, offsets, outputStride, displacementsBwd); + } + } + for (let edge = 0; edge < numEdges; ++edge) { + const sourceKeypointId = childToParentEdges[edge]; + const targetKeypointId = parentToChildEdges[edge]; + if (instanceKeypoints[sourceKeypointId] && !instanceKeypoints[targetKeypointId]) { + instanceKeypoints[targetKeypointId] = traverseToTargetKeypoint(edge, instanceKeypoints[sourceKeypointId], targetKeypointId, scores, offsets, outputStride, displacementsFwd); + } + } + return instanceKeypoints; +} +async function decodeSinglePose(heatmapScores, offsets, minScore) { + let totalScore = 0; + const heatmapValues = argmax2d(heatmapScores); + const allTensorBuffers = await Promise.all([heatmapScores.buffer(), offsets.buffer(), heatmapValues.buffer()]); + const scoresBuffer = allTensorBuffers[0]; + const offsetsBuffer = allTensorBuffers[1]; + const heatmapValuesBuffer = allTensorBuffers[2]; + const offsetPoints = getOffsetPoints(heatmapValuesBuffer, defaultOutputStride, offsetsBuffer); + const offsetPointsBuffer = await offsetPoints.buffer(); + const keypointConfidence = Array.from(getPointsConfidence(scoresBuffer, heatmapValuesBuffer)); + const instanceKeypoints = keypointConfidence.map((score, i) => { + totalScore += score; + return { + position: { + y: offsetPointsBuffer.get(i, 0), + x: offsetPointsBuffer.get(i, 1) + }, + part: keypoints.partNames[i], + score + }; + }); + const filteredKeypoints = instanceKeypoints.filter((kpt3) => kpt3.score > minScore); + heatmapValues.dispose(); + offsetPoints.dispose(); + return {keypoints: filteredKeypoints, score: totalScore / instanceKeypoints.length}; +} + +// src/posenet/decodeMultiple.ts +var kLocalMaximumRadius = 1; +var defaultOutputStride2 = 16; +function withinNmsRadiusOfCorrespondingPoint(poses, squaredNmsRadius, {x, y}, keypointId) { + return poses.some(({keypoints: keypoints2}) => { + const correspondingKeypoint = keypoints2[keypointId].position; + return squaredDistance(y, x, correspondingKeypoint.y, correspondingKeypoint.x) <= squaredNmsRadius; + }); +} +function getInstanceScore(existingPoses, squaredNmsRadius, instanceKeypoints) { + const notOverlappedKeypointScores = instanceKeypoints.reduce((result, {position, score}, keypointId) => { + if (!withinNmsRadiusOfCorrespondingPoint(existingPoses, squaredNmsRadius, position, keypointId)) + result += score; + return result; + }, 0); + return notOverlappedKeypointScores / instanceKeypoints.length; +} +function decodeMultiplePoses(scoresBuffer, offsetsBuffer, displacementsFwdBuffer, displacementsBwdBuffer, nmsRadius, maxDetections, scoreThreshold) { + const poses = []; + const queue = buildPartWithScoreQueue(scoreThreshold, kLocalMaximumRadius, scoresBuffer); + const squaredNmsRadius = nmsRadius ^ 2; + while (poses.length < maxDetections && !queue.empty()) { + const root = queue.dequeue(); + const rootImageCoords = getImageCoords(root.part, defaultOutputStride2, offsetsBuffer); + if (withinNmsRadiusOfCorrespondingPoint(poses, squaredNmsRadius, rootImageCoords, root.part.id)) + continue; + const keypoints2 = decodePose(root, scoresBuffer, offsetsBuffer, defaultOutputStride2, displacementsFwdBuffer, displacementsBwdBuffer); + const score = getInstanceScore(poses, squaredNmsRadius, keypoints2); + if (score > scoreThreshold) + poses.push({keypoints: keypoints2, score}); + } + return poses; +} + +// src/posenet/util.ts +async function toTensorBuffers3D(tensors) { + return Promise.all(tensors.map((tensor) => tensor.buffer())); +} +function scalePose(pose, scaleY, scaleX) { + return { + score: pose.score, + keypoints: pose.keypoints.map(({score, part, position}) => ({ + score, + part, + position: {x: Math.trunc(position.x * scaleX), y: Math.trunc(position.y * scaleY)} + })) + }; +} +function resizeTo(image15, [targetH, targetW]) { + const input = image15.squeeze(0); + const resized = input.resizeBilinear([targetH, targetW]); + input.dispose(); + return resized; +} +function scaleAndFlipPoses(poses, [height, width], [inputResolutionHeight, inputResolutionWidth]) { + const scaledPoses = poses.map((pose) => scalePose(pose, height / inputResolutionHeight, width / inputResolutionWidth)); + return scaledPoses; +} + +// src/posenet/posenet.ts +async function estimateMultiple(input, res, config3, inputSize) { + return new Promise(async (resolve) => { + const allTensorBuffers = await toTensorBuffers3D([res.heatmapScores, res.offsets, res.displacementFwd, res.displacementBwd]); + const scoresBuffer = allTensorBuffers[0]; + const offsetsBuffer = allTensorBuffers[1]; + const displacementsFwdBuffer = allTensorBuffers[2]; + const displacementsBwdBuffer = allTensorBuffers[3]; + const poses = await decodeMultiplePoses(scoresBuffer, offsetsBuffer, displacementsFwdBuffer, displacementsBwdBuffer, config3.body.nmsRadius, config3.body.maxDetections, config3.body.scoreThreshold); + const scaled = scaleAndFlipPoses(poses, [input.shape[1], input.shape[2]], [inputSize, inputSize]); + resolve(scaled); + }); +} +async function estimateSingle(input, res, config3, inputSize) { + return new Promise(async (resolve) => { + const pose = await decodeSinglePose(res.heatmapScores, res.offsets, config3.body.scoreThreshold); + const scaled = scaleAndFlipPoses([pose], [input.shape[1], input.shape[2]], [inputSize, inputSize]); + resolve(scaled); + }); +} +var PoseNet = class { + constructor(model8) { + this.baseModel = model8; + this.inputSize = model8.model.inputs[0].shape[1]; + if (this.inputSize < 128) + this.inputSize = 257; + } + async estimatePoses(input, config3) { + const resized = resizeTo(input, [this.inputSize, this.inputSize]); + const res = this.baseModel.predict(resized, config3); + const poses = config3.body.maxDetections < 2 ? await estimateSingle(input, res, config3, this.inputSize) : await estimateMultiple(input, res, config3, this.inputSize); + res.heatmapScores.dispose(); + res.offsets.dispose(); + res.displacementFwd.dispose(); + res.displacementBwd.dispose(); + resized.dispose(); + return poses; + } + dispose() { + this.baseModel.dispose(); + } +}; +async function load7(config3) { + const model8 = await tf12.loadGraphModel(config3.body.modelPath); + const mobilenet = new BaseModel(model8); + if (config3.debug) + log(`load model: ${config3.body.modelPath.match(/\/(.*)\./)[1]}`); + return new PoseNet(mobilenet); +} + +// src/handpose/handpose.ts +var handpose_exports = {}; +__export(handpose_exports, { + HandPose: () => HandPose, + load: () => load8 +}); +var tf16 = require_tfjs_esm(); + +// src/handpose/handdetector.ts +var tf14 = require_tfjs_esm(); + +// src/handpose/box.ts +var tf13 = require_tfjs_esm(); +function getBoxSize2(box3) { + return [ + Math.abs(box3.endPoint[0] - box3.startPoint[0]), + Math.abs(box3.endPoint[1] - box3.startPoint[1]) + ]; +} +function getBoxCenter2(box3) { + return [ + box3.startPoint[0] + (box3.endPoint[0] - box3.startPoint[0]) / 2, + box3.startPoint[1] + (box3.endPoint[1] - box3.startPoint[1]) / 2 + ]; +} +function cutBoxFromImageAndResize2(box3, image15, cropSize) { + const h = image15.shape[1]; + const w = image15.shape[2]; + const boxes = [[ + box3.startPoint[1] / h, + box3.startPoint[0] / w, + box3.endPoint[1] / h, + box3.endPoint[0] / w + ]]; + return tf13.image.cropAndResize(image15, boxes, [0], cropSize); +} +function scaleBoxCoordinates2(box3, factor) { + const startPoint = [box3.startPoint[0] * factor[0], box3.startPoint[1] * factor[1]]; + const endPoint = [box3.endPoint[0] * factor[0], box3.endPoint[1] * factor[1]]; + const palmLandmarks = box3.palmLandmarks.map((coord) => { + const scaledCoord = [coord[0] * factor[0], coord[1] * factor[1]]; + return scaledCoord; + }); + return {startPoint, endPoint, palmLandmarks, confidence: box3.confidence}; +} +function enlargeBox2(box3, factor = 1.5) { + const center = getBoxCenter2(box3); + const size = getBoxSize2(box3); + const newHalfSize = [factor * size[0] / 2, factor * size[1] / 2]; + const startPoint = [center[0] - newHalfSize[0], center[1] - newHalfSize[1]]; + const endPoint = [center[0] + newHalfSize[0], center[1] + newHalfSize[1]]; + return {startPoint, endPoint, palmLandmarks: box3.palmLandmarks}; +} +function squarifyBox2(box3) { + const centers = getBoxCenter2(box3); + const size = getBoxSize2(box3); + const maxEdge = Math.max(...size); + const halfSize = maxEdge / 2; + const startPoint = [centers[0] - halfSize, centers[1] - halfSize]; + const endPoint = [centers[0] + halfSize, centers[1] + halfSize]; + return {startPoint, endPoint, palmLandmarks: box3.palmLandmarks}; +} + +// src/handpose/handdetector.ts +var HandDetector = class { + constructor(model8, inputSize, anchorsAnnotated) { + this.model = model8; + this.anchors = anchorsAnnotated.map((anchor) => [anchor.x_center, anchor.y_center]); + this.anchorsTensor = tf14.tensor2d(this.anchors); + this.inputSize = inputSize; + this.inputSizeTensor = tf14.tensor1d([inputSize, inputSize]); + this.doubleInputSizeTensor = tf14.tensor1d([inputSize * 2, inputSize * 2]); + } + normalizeBoxes(boxes) { + return tf14.tidy(() => { + const boxOffsets = tf14.slice(boxes, [0, 0], [-1, 2]); + const boxSizes = tf14.slice(boxes, [0, 2], [-1, 2]); + const boxCenterPoints = tf14.add(tf14.div(boxOffsets, this.inputSizeTensor), this.anchorsTensor); + const halfBoxSizes = tf14.div(boxSizes, this.doubleInputSizeTensor); + const startPoints = tf14.mul(tf14.sub(boxCenterPoints, halfBoxSizes), this.inputSizeTensor); + const endPoints = tf14.mul(tf14.add(boxCenterPoints, halfBoxSizes), this.inputSizeTensor); + return tf14.concat2d([startPoints, endPoints], 1); + }); + } + normalizeLandmarks(rawPalmLandmarks, index) { + return tf14.tidy(() => { + const landmarks = tf14.add(tf14.div(rawPalmLandmarks.reshape([-1, 7, 2]), this.inputSizeTensor), this.anchors[index]); + return tf14.mul(landmarks, this.inputSizeTensor); + }); + } + async getBoxes(input, config3) { + const batched = this.model.predict(input); + const predictions = batched.squeeze(); + batched.dispose(); + const scoresT = tf14.tidy(() => tf14.sigmoid(tf14.slice(predictions, [0, 0], [-1, 1])).squeeze()); + const scores = scoresT.dataSync(); + const rawBoxes = tf14.slice(predictions, [0, 1], [-1, 4]); + const boxes = this.normalizeBoxes(rawBoxes); + rawBoxes.dispose(); + const filteredT = await tf14.image.nonMaxSuppressionAsync(boxes, scores, config3.hand.maxHands, config3.hand.iouThreshold, config3.hand.scoreThreshold); + const filtered = filteredT.arraySync(); + scoresT.dispose(); + filteredT.dispose(); + const hands = []; + for (const index of filtered) { + if (scores[index] >= config3.hand.minConfidence) { + const matchingBox = tf14.slice(boxes, [index, 0], [1, -1]); + const rawPalmLandmarks = tf14.slice(predictions, [index, 5], [1, 14]); + const palmLandmarks = tf14.tidy(() => this.normalizeLandmarks(rawPalmLandmarks, index).reshape([-1, 2])); + rawPalmLandmarks.dispose(); + hands.push({box: matchingBox, palmLandmarks, confidence: scores[index]}); + } + } + predictions.dispose(); + boxes.dispose(); + return hands; + } + async estimateHandBounds(input, config3) { + const inputHeight = input.shape[1]; + const inputWidth = input.shape[2]; + const image15 = tf14.tidy(() => input.resizeBilinear([this.inputSize, this.inputSize]).div(127.5).sub(1)); + const predictions = await this.getBoxes(image15, config3); + image15.dispose(); + const hands = []; + if (!predictions || predictions.length === 0) + return hands; + for (const prediction of predictions) { + const boxes = prediction.box.dataSync(); + const startPoint = boxes.slice(0, 2); + const endPoint = boxes.slice(2, 4); + const palmLandmarks = prediction.palmLandmarks.arraySync(); + prediction.box.dispose(); + prediction.palmLandmarks.dispose(); + hands.push(scaleBoxCoordinates2({startPoint, endPoint, palmLandmarks, confidence: prediction.confidence}, [inputWidth / this.inputSize, inputHeight / this.inputSize])); + } + return hands; + } +}; + +// src/handpose/handpipeline.ts +var tf15 = require_tfjs_esm(); + +// src/handpose/util.ts +function normalizeRadians2(angle) { + return angle - 2 * Math.PI * Math.floor((angle + Math.PI) / (2 * Math.PI)); +} +function computeRotation2(point1, point2) { + const radians = Math.PI / 2 - Math.atan2(-(point2[1] - point1[1]), point2[0] - point1[0]); + return normalizeRadians2(radians); +} +var buildTranslationMatrix2 = (x, y) => [[1, 0, x], [0, 1, y], [0, 0, 1]]; +function dot2(v1, v2) { + let product = 0; + for (let i = 0; i < v1.length; i++) { + product += v1[i] * v2[i]; + } + return product; +} +function getColumnFrom2DArr2(arr, columnIndex) { + const column = []; + for (let i = 0; i < arr.length; i++) { + column.push(arr[i][columnIndex]); + } + return column; +} +function multiplyTransformMatrices2(mat1, mat2) { + const product = []; + const size = mat1.length; + for (let row = 0; row < size; row++) { + product.push([]); + for (let col = 0; col < size; col++) { + product[row].push(dot2(mat1[row], getColumnFrom2DArr2(mat2, col))); + } + } + return product; +} +function buildRotationMatrix2(rotation, center) { + const cosA = Math.cos(rotation); + const sinA = Math.sin(rotation); + const rotationMatrix = [[cosA, -sinA, 0], [sinA, cosA, 0], [0, 0, 1]]; + const translationMatrix = buildTranslationMatrix2(center[0], center[1]); + const translationTimesRotation = multiplyTransformMatrices2(translationMatrix, rotationMatrix); + const negativeTranslationMatrix = buildTranslationMatrix2(-center[0], -center[1]); + return multiplyTransformMatrices2(translationTimesRotation, negativeTranslationMatrix); +} +function invertTransformMatrix2(matrix) { + const rotationComponent = [[matrix[0][0], matrix[1][0]], [matrix[0][1], matrix[1][1]]]; + const translationComponent = [matrix[0][2], matrix[1][2]]; + const invertedTranslation = [ + -dot2(rotationComponent[0], translationComponent), + -dot2(rotationComponent[1], translationComponent) + ]; + return [ + rotationComponent[0].concat(invertedTranslation[0]), + rotationComponent[1].concat(invertedTranslation[1]), + [0, 0, 1] + ]; +} +function rotatePoint2(homogeneousCoordinate, rotationMatrix) { + return [ + dot2(homogeneousCoordinate, rotationMatrix[0]), + dot2(homogeneousCoordinate, rotationMatrix[1]) + ]; +} + +// src/handpose/handpipeline.ts +var PALM_BOX_ENLARGE_FACTOR = 5; +var HAND_BOX_ENLARGE_FACTOR = 1.65; +var PALM_LANDMARK_IDS = [0, 5, 9, 13, 17, 1, 2]; +var PALM_LANDMARKS_INDEX_OF_PALM_BASE = 0; +var PALM_LANDMARKS_INDEX_OF_MIDDLE_FINGER_BASE = 2; +var HandPipeline = class { + constructor(handDetector, landmarkDetector, inputSize) { + this.handDetector = handDetector; + this.landmarkDetector = landmarkDetector; + this.inputSize = inputSize; + this.storedBoxes = []; + this.skipped = 0; + this.detectedHands = 0; + } + getBoxForPalmLandmarks(palmLandmarks, rotationMatrix) { + const rotatedPalmLandmarks = palmLandmarks.map((coord) => rotatePoint2([...coord, 1], rotationMatrix)); + const boxAroundPalm = this.calculateLandmarksBoundingBox(rotatedPalmLandmarks); + return enlargeBox2(squarifyBox2(boxAroundPalm), PALM_BOX_ENLARGE_FACTOR); + } + getBoxForHandLandmarks(landmarks) { + const boundingBox = this.calculateLandmarksBoundingBox(landmarks); + const boxAroundHand = enlargeBox2(squarifyBox2(boundingBox), HAND_BOX_ENLARGE_FACTOR); + boxAroundHand.palmLandmarks = []; + for (let i = 0; i < PALM_LANDMARK_IDS.length; i++) { + boxAroundHand.palmLandmarks.push(landmarks[PALM_LANDMARK_IDS[i]].slice(0, 2)); + } + return boxAroundHand; + } + transformRawCoords(rawCoords, box22, angle, rotationMatrix) { + const boxSize = getBoxSize2(box22); + const scaleFactor = [boxSize[0] / this.inputSize, boxSize[1] / this.inputSize, (boxSize[0] + boxSize[1]) / this.inputSize / 2]; + const coordsScaled = rawCoords.map((coord) => [ + scaleFactor[0] * (coord[0] - this.inputSize / 2), + scaleFactor[1] * (coord[1] - this.inputSize / 2), + scaleFactor[2] * coord[2] + ]); + const coordsRotationMatrix = buildRotationMatrix2(angle, [0, 0]); + const coordsRotated = coordsScaled.map((coord) => { + const rotated = rotatePoint2(coord, coordsRotationMatrix); + return [...rotated, coord[2]]; + }); + const inverseRotationMatrix = invertTransformMatrix2(rotationMatrix); + const boxCenter = [...getBoxCenter2(box22), 1]; + const originalBoxCenter = [ + dot2(boxCenter, inverseRotationMatrix[0]), + dot2(boxCenter, inverseRotationMatrix[1]) + ]; + return coordsRotated.map((coord) => [ + coord[0] + originalBoxCenter[0], + coord[1] + originalBoxCenter[1], + coord[2] + ]); + } + async estimateHands(image15, config3) { + let useFreshBox = false; + let boxes; + if (this.skipped === 0 || this.skipped > config3.hand.skipFrames || !config3.hand.landmarks || !config3.videoOptimized) { + boxes = await this.handDetector.estimateHandBounds(image15, config3); + this.skipped = 0; + } + if (config3.videoOptimized) + this.skipped++; + if (boxes && boxes.length > 0 && (boxes.length !== this.detectedHands && this.detectedHands !== config3.hand.maxHands || !config3.hand.landmarks)) { + this.detectedHands = 0; + this.storedBoxes = [...boxes]; + if (this.storedBoxes.length > 0) + useFreshBox = true; + } + const hands = []; + if (config3.hand.skipInitial && this.detectedHands === 0) + this.skipped = 0; + for (let i = 0; i < this.storedBoxes.length; i++) { + const currentBox = this.storedBoxes[i]; + if (!currentBox) + continue; + if (config3.hand.landmarks) { + const angle = config3.hand.rotation ? computeRotation2(currentBox.palmLandmarks[PALM_LANDMARKS_INDEX_OF_PALM_BASE], currentBox.palmLandmarks[PALM_LANDMARKS_INDEX_OF_MIDDLE_FINGER_BASE]) : 0; + const palmCenter = getBoxCenter2(currentBox); + const palmCenterNormalized = [palmCenter[0] / image15.shape[2], palmCenter[1] / image15.shape[1]]; + const rotatedImage = config3.hand.rotation ? tf15.image.rotateWithOffset(image15, angle, 0, palmCenterNormalized) : image15.clone(); + const rotationMatrix = buildRotationMatrix2(-angle, palmCenter); + const newBox = useFreshBox ? this.getBoxForPalmLandmarks(currentBox.palmLandmarks, rotationMatrix) : currentBox; + const croppedInput = cutBoxFromImageAndResize2(newBox, rotatedImage, [this.inputSize, this.inputSize]); + const handImage = croppedInput.div(255); + croppedInput.dispose(); + rotatedImage.dispose(); + const [confidenceT, keypoints2] = await this.landmarkDetector.predict(handImage); + handImage.dispose(); + const confidence = confidenceT.dataSync()[0]; + confidenceT.dispose(); + if (confidence >= config3.hand.minConfidence) { + const keypointsReshaped = tf15.reshape(keypoints2, [-1, 3]); + const rawCoords = keypointsReshaped.arraySync(); + keypoints2.dispose(); + keypointsReshaped.dispose(); + const coords2 = this.transformRawCoords(rawCoords, newBox, angle, rotationMatrix); + const nextBoundingBox = this.getBoxForHandLandmarks(coords2); + this.storedBoxes[i] = nextBoundingBox; + const result = { + landmarks: coords2, + confidence, + box: {topLeft: nextBoundingBox.startPoint, bottomRight: nextBoundingBox.endPoint} + }; + hands.push(result); + } else { + this.storedBoxes[i] = null; + } + keypoints2.dispose(); + } else { + const enlarged = enlargeBox2(squarifyBox2(currentBox), HAND_BOX_ENLARGE_FACTOR); + const result = { + confidence: currentBox.confidence, + box: {topLeft: enlarged.startPoint, bottomRight: enlarged.endPoint} + }; + hands.push(result); + } + } + this.storedBoxes = this.storedBoxes.filter((a) => a !== null); + this.detectedHands = hands.length; + return hands; + } + calculateLandmarksBoundingBox(landmarks) { + const xs = landmarks.map((d) => d[0]); + const ys = landmarks.map((d) => d[1]); + const startPoint = [Math.min(...xs), Math.min(...ys)]; + const endPoint = [Math.max(...xs), Math.max(...ys)]; + return {startPoint, endPoint}; + } +}; + +// src/handpose/anchors.ts +var anchors = [ + { + w: 1, + h: 1, + x_center: 0.015625, + y_center: 0.015625 + }, + { + w: 1, + h: 1, + x_center: 0.015625, + y_center: 0.015625 + }, + { + w: 1, + h: 1, + x_center: 0.046875, + y_center: 0.015625 + }, + { + w: 1, + h: 1, + x_center: 0.046875, + y_center: 0.015625 + }, + { + w: 1, + h: 1, + x_center: 0.078125, + y_center: 0.015625 + }, + { + w: 1, + h: 1, + x_center: 0.078125, + y_center: 0.015625 + }, + { + w: 1, + h: 1, + x_center: 0.109375, + y_center: 0.015625 + }, + { + w: 1, + h: 1, + x_center: 0.109375, + y_center: 0.015625 + }, + { + w: 1, + h: 1, + x_center: 0.140625, + y_center: 0.015625 + }, + { + w: 1, + h: 1, + x_center: 0.140625, + y_center: 0.015625 + }, + { + w: 1, + h: 1, + x_center: 0.171875, + y_center: 0.015625 + }, + { + w: 1, + h: 1, + x_center: 0.171875, + y_center: 0.015625 + }, + { + w: 1, + h: 1, + x_center: 0.203125, + y_center: 0.015625 + }, + { + w: 1, + h: 1, + x_center: 0.203125, + y_center: 0.015625 + }, + { + w: 1, + h: 1, + x_center: 0.234375, + y_center: 0.015625 + }, + { + w: 1, + h: 1, + x_center: 0.234375, + y_center: 0.015625 + }, + { + w: 1, + h: 1, + x_center: 0.265625, + y_center: 0.015625 + }, + { + w: 1, + h: 1, + x_center: 0.265625, + y_center: 0.015625 + }, + { + w: 1, + h: 1, + x_center: 0.296875, + y_center: 0.015625 + }, + { + w: 1, + h: 1, + x_center: 0.296875, + y_center: 0.015625 + }, + { + w: 1, + h: 1, + x_center: 0.328125, + y_center: 0.015625 + }, + { + w: 1, + h: 1, + x_center: 0.328125, + y_center: 0.015625 + }, + { + w: 1, + h: 1, + x_center: 0.359375, + y_center: 0.015625 + }, + { + w: 1, + h: 1, + x_center: 0.359375, + y_center: 0.015625 + }, + { + w: 1, + h: 1, + x_center: 0.390625, + y_center: 0.015625 + }, + { + w: 1, + h: 1, + x_center: 0.390625, + y_center: 0.015625 + }, + { + w: 1, + h: 1, + x_center: 0.421875, + y_center: 0.015625 + }, + { + w: 1, + h: 1, + x_center: 0.421875, + y_center: 0.015625 + }, + { + w: 1, + h: 1, + x_center: 0.453125, + y_center: 0.015625 + }, + { + w: 1, + h: 1, + x_center: 0.453125, + y_center: 0.015625 + }, + { + w: 1, + h: 1, + x_center: 0.484375, + y_center: 0.015625 + }, + { + w: 1, + h: 1, + x_center: 0.484375, + y_center: 0.015625 + }, + { + w: 1, + h: 1, + x_center: 0.515625, + y_center: 0.015625 + }, + { + w: 1, + h: 1, + x_center: 0.515625, + y_center: 0.015625 + }, + { + w: 1, + h: 1, + x_center: 0.546875, + y_center: 0.015625 + }, + { + w: 1, + h: 1, + x_center: 0.546875, + y_center: 0.015625 + }, + { + w: 1, + h: 1, + x_center: 0.578125, + y_center: 0.015625 + }, + { + w: 1, + h: 1, + x_center: 0.578125, + y_center: 0.015625 + }, + { + w: 1, + h: 1, + x_center: 0.609375, + y_center: 0.015625 + }, + { + w: 1, + h: 1, + x_center: 0.609375, + y_center: 0.015625 + }, + { + w: 1, + h: 1, + x_center: 0.640625, + y_center: 0.015625 + }, + { + w: 1, + h: 1, + x_center: 0.640625, + y_center: 0.015625 + }, + { + w: 1, + h: 1, + x_center: 0.671875, + y_center: 0.015625 + }, + { + w: 1, + h: 1, + x_center: 0.671875, + y_center: 0.015625 + }, + { + w: 1, + h: 1, + x_center: 0.703125, + y_center: 0.015625 + }, + { + w: 1, + h: 1, + x_center: 0.703125, + y_center: 0.015625 + }, + { + w: 1, + h: 1, + x_center: 0.734375, + y_center: 0.015625 + }, + { + w: 1, + h: 1, + x_center: 0.734375, + y_center: 0.015625 + }, + { + w: 1, + h: 1, + x_center: 0.765625, + y_center: 0.015625 + }, + { + w: 1, + h: 1, + x_center: 0.765625, + y_center: 0.015625 + }, + { + w: 1, + h: 1, + x_center: 0.796875, + y_center: 0.015625 + }, + { + w: 1, + h: 1, + x_center: 0.796875, + y_center: 0.015625 + }, + { + w: 1, + h: 1, + x_center: 0.828125, + y_center: 0.015625 + }, + { + w: 1, + h: 1, + x_center: 0.828125, + y_center: 0.015625 + }, + { + w: 1, + h: 1, + x_center: 0.859375, + y_center: 0.015625 + }, + { + w: 1, + h: 1, + x_center: 0.859375, + y_center: 0.015625 + }, + { + w: 1, + h: 1, + x_center: 0.890625, + y_center: 0.015625 + }, + { + w: 1, + h: 1, + x_center: 0.890625, + y_center: 0.015625 + }, + { + w: 1, + h: 1, + x_center: 0.921875, + y_center: 0.015625 + }, + { + w: 1, + h: 1, + x_center: 0.921875, + y_center: 0.015625 + }, + { + w: 1, + h: 1, + x_center: 0.953125, + y_center: 0.015625 + }, + { + w: 1, + h: 1, + x_center: 0.953125, + y_center: 0.015625 + }, + { + w: 1, + h: 1, + x_center: 0.984375, + y_center: 0.015625 + }, + { + w: 1, + h: 1, + x_center: 0.984375, + y_center: 0.015625 + }, + { + w: 1, + h: 1, + x_center: 0.015625, + y_center: 0.046875 + }, + { + w: 1, + h: 1, + x_center: 0.015625, + y_center: 0.046875 + }, + { + w: 1, + h: 1, + x_center: 0.046875, + y_center: 0.046875 + }, + { + w: 1, + h: 1, + x_center: 0.046875, + y_center: 0.046875 + }, + { + w: 1, + h: 1, + x_center: 0.078125, + y_center: 0.046875 + }, + { + w: 1, + h: 1, + x_center: 0.078125, + y_center: 0.046875 + }, + { + w: 1, + h: 1, + x_center: 0.109375, + y_center: 0.046875 + }, + { + w: 1, + h: 1, + x_center: 0.109375, + y_center: 0.046875 + }, + { + w: 1, + h: 1, + x_center: 0.140625, + y_center: 0.046875 + }, + { + w: 1, + h: 1, + x_center: 0.140625, + y_center: 0.046875 + }, + { + w: 1, + h: 1, + x_center: 0.171875, + y_center: 0.046875 + }, + { + w: 1, + h: 1, + x_center: 0.171875, + y_center: 0.046875 + }, + { + w: 1, + h: 1, + x_center: 0.203125, + y_center: 0.046875 + }, + { + w: 1, + h: 1, + x_center: 0.203125, + y_center: 0.046875 + }, + { + w: 1, + h: 1, + x_center: 0.234375, + y_center: 0.046875 + }, + { + w: 1, + h: 1, + x_center: 0.234375, + y_center: 0.046875 + }, + { + w: 1, + h: 1, + x_center: 0.265625, + y_center: 0.046875 + }, + { + w: 1, + h: 1, + x_center: 0.265625, + y_center: 0.046875 + }, + { + w: 1, + h: 1, + x_center: 0.296875, + y_center: 0.046875 + }, + { + w: 1, + h: 1, + x_center: 0.296875, + y_center: 0.046875 + }, + { + w: 1, + h: 1, + x_center: 0.328125, + y_center: 0.046875 + }, + { + w: 1, + h: 1, + x_center: 0.328125, + y_center: 0.046875 + }, + { + w: 1, + h: 1, + x_center: 0.359375, + y_center: 0.046875 + }, + { + w: 1, + h: 1, + x_center: 0.359375, + y_center: 0.046875 + }, + { + w: 1, + h: 1, + x_center: 0.390625, + y_center: 0.046875 + }, + { + w: 1, + h: 1, + x_center: 0.390625, + y_center: 0.046875 + }, + { + w: 1, + h: 1, + x_center: 0.421875, + y_center: 0.046875 + }, + { + w: 1, + h: 1, + x_center: 0.421875, + y_center: 0.046875 + }, + { + w: 1, + h: 1, + x_center: 0.453125, + y_center: 0.046875 + }, + { + w: 1, + h: 1, + x_center: 0.453125, + y_center: 0.046875 + }, + { + w: 1, + h: 1, + x_center: 0.484375, + y_center: 0.046875 + }, + { + w: 1, + h: 1, + x_center: 0.484375, + y_center: 0.046875 + }, + { + w: 1, + h: 1, + x_center: 0.515625, + y_center: 0.046875 + }, + { + w: 1, + h: 1, + x_center: 0.515625, + y_center: 0.046875 + }, + { + w: 1, + h: 1, + x_center: 0.546875, + y_center: 0.046875 + }, + { + w: 1, + h: 1, + x_center: 0.546875, + y_center: 0.046875 + }, + { + w: 1, + h: 1, + x_center: 0.578125, + y_center: 0.046875 + }, + { + w: 1, + h: 1, + x_center: 0.578125, + y_center: 0.046875 + }, + { + w: 1, + h: 1, + x_center: 0.609375, + y_center: 0.046875 + }, + { + w: 1, + h: 1, + x_center: 0.609375, + y_center: 0.046875 + }, + { + w: 1, + h: 1, + x_center: 0.640625, + y_center: 0.046875 + }, + { + w: 1, + h: 1, + x_center: 0.640625, + y_center: 0.046875 + }, + { + w: 1, + h: 1, + x_center: 0.671875, + y_center: 0.046875 + }, + { + w: 1, + h: 1, + x_center: 0.671875, + y_center: 0.046875 + }, + { + w: 1, + h: 1, + x_center: 0.703125, + y_center: 0.046875 + }, + { + w: 1, + h: 1, + x_center: 0.703125, + y_center: 0.046875 + }, + { + w: 1, + h: 1, + x_center: 0.734375, + y_center: 0.046875 + }, + { + w: 1, + h: 1, + x_center: 0.734375, + y_center: 0.046875 + }, + { + w: 1, + h: 1, + x_center: 0.765625, + y_center: 0.046875 + }, + { + w: 1, + h: 1, + x_center: 0.765625, + y_center: 0.046875 + }, + { + w: 1, + h: 1, + x_center: 0.796875, + y_center: 0.046875 + }, + { + w: 1, + h: 1, + x_center: 0.796875, + y_center: 0.046875 + }, + { + w: 1, + h: 1, + x_center: 0.828125, + y_center: 0.046875 + }, + { + w: 1, + h: 1, + x_center: 0.828125, + y_center: 0.046875 + }, + { + w: 1, + h: 1, + x_center: 0.859375, + y_center: 0.046875 + }, + { + w: 1, + h: 1, + x_center: 0.859375, + y_center: 0.046875 + }, + { + w: 1, + h: 1, + x_center: 0.890625, + y_center: 0.046875 + }, + { + w: 1, + h: 1, + x_center: 0.890625, + y_center: 0.046875 + }, + { + w: 1, + h: 1, + x_center: 0.921875, + y_center: 0.046875 + }, + { + w: 1, + h: 1, + x_center: 0.921875, + y_center: 0.046875 + }, + { + w: 1, + h: 1, + x_center: 0.953125, + y_center: 0.046875 + }, + { + w: 1, + h: 1, + x_center: 0.953125, + y_center: 0.046875 + }, + { + w: 1, + h: 1, + x_center: 0.984375, + y_center: 0.046875 + }, + { + w: 1, + h: 1, + x_center: 0.984375, + y_center: 0.046875 + }, + { + w: 1, + h: 1, + x_center: 0.015625, + y_center: 0.078125 + }, + { + w: 1, + h: 1, + x_center: 0.015625, + y_center: 0.078125 + }, + { + w: 1, + h: 1, + x_center: 0.046875, + y_center: 0.078125 + }, + { + w: 1, + h: 1, + x_center: 0.046875, + y_center: 0.078125 + }, + { + w: 1, + h: 1, + x_center: 0.078125, + y_center: 0.078125 + }, + { + w: 1, + h: 1, + x_center: 0.078125, + y_center: 0.078125 + }, + { + w: 1, + h: 1, + x_center: 0.109375, + y_center: 0.078125 + }, + { + w: 1, + h: 1, + x_center: 0.109375, + y_center: 0.078125 + }, + { + w: 1, + h: 1, + x_center: 0.140625, + y_center: 0.078125 + }, + { + w: 1, + h: 1, + x_center: 0.140625, + y_center: 0.078125 + }, + { + w: 1, + h: 1, + x_center: 0.171875, + y_center: 0.078125 + }, + { + w: 1, + h: 1, + x_center: 0.171875, + y_center: 0.078125 + }, + { + w: 1, + h: 1, + x_center: 0.203125, + y_center: 0.078125 + }, + { + w: 1, + h: 1, + x_center: 0.203125, + y_center: 0.078125 + }, + { + w: 1, + h: 1, + x_center: 0.234375, + y_center: 0.078125 + }, + { + w: 1, + h: 1, + x_center: 0.234375, + y_center: 0.078125 + }, + { + w: 1, + h: 1, + x_center: 0.265625, + y_center: 0.078125 + }, + { + w: 1, + h: 1, + x_center: 0.265625, + y_center: 0.078125 + }, + { + w: 1, + h: 1, + x_center: 0.296875, + y_center: 0.078125 + }, + { + w: 1, + h: 1, + x_center: 0.296875, + y_center: 0.078125 + }, + { + w: 1, + h: 1, + x_center: 0.328125, + y_center: 0.078125 + }, + { + w: 1, + h: 1, + x_center: 0.328125, + y_center: 0.078125 + }, + { + w: 1, + h: 1, + x_center: 0.359375, + y_center: 0.078125 + }, + { + w: 1, + h: 1, + x_center: 0.359375, + y_center: 0.078125 + }, + { + w: 1, + h: 1, + x_center: 0.390625, + y_center: 0.078125 + }, + { + w: 1, + h: 1, + x_center: 0.390625, + y_center: 0.078125 + }, + { + w: 1, + h: 1, + x_center: 0.421875, + y_center: 0.078125 + }, + { + w: 1, + h: 1, + x_center: 0.421875, + y_center: 0.078125 + }, + { + w: 1, + h: 1, + x_center: 0.453125, + y_center: 0.078125 + }, + { + w: 1, + h: 1, + x_center: 0.453125, + y_center: 0.078125 + }, + { + w: 1, + h: 1, + x_center: 0.484375, + y_center: 0.078125 + }, + { + w: 1, + h: 1, + x_center: 0.484375, + y_center: 0.078125 + }, + { + w: 1, + h: 1, + x_center: 0.515625, + y_center: 0.078125 + }, + { + w: 1, + h: 1, + x_center: 0.515625, + y_center: 0.078125 + }, + { + w: 1, + h: 1, + x_center: 0.546875, + y_center: 0.078125 + }, + { + w: 1, + h: 1, + x_center: 0.546875, + y_center: 0.078125 + }, + { + w: 1, + h: 1, + x_center: 0.578125, + y_center: 0.078125 + }, + { + w: 1, + h: 1, + x_center: 0.578125, + y_center: 0.078125 + }, + { + w: 1, + h: 1, + x_center: 0.609375, + y_center: 0.078125 + }, + { + w: 1, + h: 1, + x_center: 0.609375, + y_center: 0.078125 + }, + { + w: 1, + h: 1, + x_center: 0.640625, + y_center: 0.078125 + }, + { + w: 1, + h: 1, + x_center: 0.640625, + y_center: 0.078125 + }, + { + w: 1, + h: 1, + x_center: 0.671875, + y_center: 0.078125 + }, + { + w: 1, + h: 1, + x_center: 0.671875, + y_center: 0.078125 + }, + { + w: 1, + h: 1, + x_center: 0.703125, + y_center: 0.078125 + }, + { + w: 1, + h: 1, + x_center: 0.703125, + y_center: 0.078125 + }, + { + w: 1, + h: 1, + x_center: 0.734375, + y_center: 0.078125 + }, + { + w: 1, + h: 1, + x_center: 0.734375, + y_center: 0.078125 + }, + { + w: 1, + h: 1, + x_center: 0.765625, + y_center: 0.078125 + }, + { + w: 1, + h: 1, + x_center: 0.765625, + y_center: 0.078125 + }, + { + w: 1, + h: 1, + x_center: 0.796875, + y_center: 0.078125 + }, + { + w: 1, + h: 1, + x_center: 0.796875, + y_center: 0.078125 + }, + { + w: 1, + h: 1, + x_center: 0.828125, + y_center: 0.078125 + }, + { + w: 1, + h: 1, + x_center: 0.828125, + y_center: 0.078125 + }, + { + w: 1, + h: 1, + x_center: 0.859375, + y_center: 0.078125 + }, + { + w: 1, + h: 1, + x_center: 0.859375, + y_center: 0.078125 + }, + { + w: 1, + h: 1, + x_center: 0.890625, + y_center: 0.078125 + }, + { + w: 1, + h: 1, + x_center: 0.890625, + y_center: 0.078125 + }, + { + w: 1, + h: 1, + x_center: 0.921875, + y_center: 0.078125 + }, + { + w: 1, + h: 1, + x_center: 0.921875, + y_center: 0.078125 + }, + { + w: 1, + h: 1, + x_center: 0.953125, + y_center: 0.078125 + }, + { + w: 1, + h: 1, + x_center: 0.953125, + y_center: 0.078125 + }, + { + w: 1, + h: 1, + x_center: 0.984375, + y_center: 0.078125 + }, + { + w: 1, + h: 1, + x_center: 0.984375, + y_center: 0.078125 + }, + { + w: 1, + h: 1, + x_center: 0.015625, + y_center: 0.109375 + }, + { + w: 1, + h: 1, + x_center: 0.015625, + y_center: 0.109375 + }, + { + w: 1, + h: 1, + x_center: 0.046875, + y_center: 0.109375 + }, + { + w: 1, + h: 1, + x_center: 0.046875, + y_center: 0.109375 + }, + { + w: 1, + h: 1, + x_center: 0.078125, + y_center: 0.109375 + }, + { + w: 1, + h: 1, + x_center: 0.078125, + y_center: 0.109375 + }, + { + w: 1, + h: 1, + x_center: 0.109375, + y_center: 0.109375 + }, + { + w: 1, + h: 1, + x_center: 0.109375, + y_center: 0.109375 + }, + { + w: 1, + h: 1, + x_center: 0.140625, + y_center: 0.109375 + }, + { + w: 1, + h: 1, + x_center: 0.140625, + y_center: 0.109375 + }, + { + w: 1, + h: 1, + x_center: 0.171875, + y_center: 0.109375 + }, + { + w: 1, + h: 1, + x_center: 0.171875, + y_center: 0.109375 + }, + { + w: 1, + h: 1, + x_center: 0.203125, + y_center: 0.109375 + }, + { + w: 1, + h: 1, + x_center: 0.203125, + y_center: 0.109375 + }, + { + w: 1, + h: 1, + x_center: 0.234375, + y_center: 0.109375 + }, + { + w: 1, + h: 1, + x_center: 0.234375, + y_center: 0.109375 + }, + { + w: 1, + h: 1, + x_center: 0.265625, + y_center: 0.109375 + }, + { + w: 1, + h: 1, + x_center: 0.265625, + y_center: 0.109375 + }, + { + w: 1, + h: 1, + x_center: 0.296875, + y_center: 0.109375 + }, + { + w: 1, + h: 1, + x_center: 0.296875, + y_center: 0.109375 + }, + { + w: 1, + h: 1, + x_center: 0.328125, + y_center: 0.109375 + }, + { + w: 1, + h: 1, + x_center: 0.328125, + y_center: 0.109375 + }, + { + w: 1, + h: 1, + x_center: 0.359375, + y_center: 0.109375 + }, + { + w: 1, + h: 1, + x_center: 0.359375, + y_center: 0.109375 + }, + { + w: 1, + h: 1, + x_center: 0.390625, + y_center: 0.109375 + }, + { + w: 1, + h: 1, + x_center: 0.390625, + y_center: 0.109375 + }, + { + w: 1, + h: 1, + x_center: 0.421875, + y_center: 0.109375 + }, + { + w: 1, + h: 1, + x_center: 0.421875, + y_center: 0.109375 + }, + { + w: 1, + h: 1, + x_center: 0.453125, + y_center: 0.109375 + }, + { + w: 1, + h: 1, + x_center: 0.453125, + y_center: 0.109375 + }, + { + w: 1, + h: 1, + x_center: 0.484375, + y_center: 0.109375 + }, + { + w: 1, + h: 1, + x_center: 0.484375, + y_center: 0.109375 + }, + { + w: 1, + h: 1, + x_center: 0.515625, + y_center: 0.109375 + }, + { + w: 1, + h: 1, + x_center: 0.515625, + y_center: 0.109375 + }, + { + w: 1, + h: 1, + x_center: 0.546875, + y_center: 0.109375 + }, + { + w: 1, + h: 1, + x_center: 0.546875, + y_center: 0.109375 + }, + { + w: 1, + h: 1, + x_center: 0.578125, + y_center: 0.109375 + }, + { + w: 1, + h: 1, + x_center: 0.578125, + y_center: 0.109375 + }, + { + w: 1, + h: 1, + x_center: 0.609375, + y_center: 0.109375 + }, + { + w: 1, + h: 1, + x_center: 0.609375, + y_center: 0.109375 + }, + { + w: 1, + h: 1, + x_center: 0.640625, + y_center: 0.109375 + }, + { + w: 1, + h: 1, + x_center: 0.640625, + y_center: 0.109375 + }, + { + w: 1, + h: 1, + x_center: 0.671875, + y_center: 0.109375 + }, + { + w: 1, + h: 1, + x_center: 0.671875, + y_center: 0.109375 + }, + { + w: 1, + h: 1, + x_center: 0.703125, + y_center: 0.109375 + }, + { + w: 1, + h: 1, + x_center: 0.703125, + y_center: 0.109375 + }, + { + w: 1, + h: 1, + x_center: 0.734375, + y_center: 0.109375 + }, + { + w: 1, + h: 1, + x_center: 0.734375, + y_center: 0.109375 + }, + { + w: 1, + h: 1, + x_center: 0.765625, + y_center: 0.109375 + }, + { + w: 1, + h: 1, + x_center: 0.765625, + y_center: 0.109375 + }, + { + w: 1, + h: 1, + x_center: 0.796875, + y_center: 0.109375 + }, + { + w: 1, + h: 1, + x_center: 0.796875, + y_center: 0.109375 + }, + { + w: 1, + h: 1, + x_center: 0.828125, + y_center: 0.109375 + }, + { + w: 1, + h: 1, + x_center: 0.828125, + y_center: 0.109375 + }, + { + w: 1, + h: 1, + x_center: 0.859375, + y_center: 0.109375 + }, + { + w: 1, + h: 1, + x_center: 0.859375, + y_center: 0.109375 + }, + { + w: 1, + h: 1, + x_center: 0.890625, + y_center: 0.109375 + }, + { + w: 1, + h: 1, + x_center: 0.890625, + y_center: 0.109375 + }, + { + w: 1, + h: 1, + x_center: 0.921875, + y_center: 0.109375 + }, + { + w: 1, + h: 1, + x_center: 0.921875, + y_center: 0.109375 + }, + { + w: 1, + h: 1, + x_center: 0.953125, + y_center: 0.109375 + }, + { + w: 1, + h: 1, + x_center: 0.953125, + y_center: 0.109375 + }, + { + w: 1, + h: 1, + x_center: 0.984375, + y_center: 0.109375 + }, + { + w: 1, + h: 1, + x_center: 0.984375, + y_center: 0.109375 + }, + { + w: 1, + h: 1, + x_center: 0.015625, + y_center: 0.140625 + }, + { + w: 1, + h: 1, + x_center: 0.015625, + y_center: 0.140625 + }, + { + w: 1, + h: 1, + x_center: 0.046875, + y_center: 0.140625 + }, + { + w: 1, + h: 1, + x_center: 0.046875, + y_center: 0.140625 + }, + { + w: 1, + h: 1, + x_center: 0.078125, + y_center: 0.140625 + }, + { + w: 1, + h: 1, + x_center: 0.078125, + y_center: 0.140625 + }, + { + w: 1, + h: 1, + x_center: 0.109375, + y_center: 0.140625 + }, + { + w: 1, + h: 1, + x_center: 0.109375, + y_center: 0.140625 + }, + { + w: 1, + h: 1, + x_center: 0.140625, + y_center: 0.140625 + }, + { + w: 1, + h: 1, + x_center: 0.140625, + y_center: 0.140625 + }, + { + w: 1, + h: 1, + x_center: 0.171875, + y_center: 0.140625 + }, + { + w: 1, + h: 1, + x_center: 0.171875, + y_center: 0.140625 + }, + { + w: 1, + h: 1, + x_center: 0.203125, + y_center: 0.140625 + }, + { + w: 1, + h: 1, + x_center: 0.203125, + y_center: 0.140625 + }, + { + w: 1, + h: 1, + x_center: 0.234375, + y_center: 0.140625 + }, + { + w: 1, + h: 1, + x_center: 0.234375, + y_center: 0.140625 + }, + { + w: 1, + h: 1, + x_center: 0.265625, + y_center: 0.140625 + }, + { + w: 1, + h: 1, + x_center: 0.265625, + y_center: 0.140625 + }, + { + w: 1, + h: 1, + x_center: 0.296875, + y_center: 0.140625 + }, + { + w: 1, + h: 1, + x_center: 0.296875, + y_center: 0.140625 + }, + { + w: 1, + h: 1, + x_center: 0.328125, + y_center: 0.140625 + }, + { + w: 1, + h: 1, + x_center: 0.328125, + y_center: 0.140625 + }, + { + w: 1, + h: 1, + x_center: 0.359375, + y_center: 0.140625 + }, + { + w: 1, + h: 1, + x_center: 0.359375, + y_center: 0.140625 + }, + { + w: 1, + h: 1, + x_center: 0.390625, + y_center: 0.140625 + }, + { + w: 1, + h: 1, + x_center: 0.390625, + y_center: 0.140625 + }, + { + w: 1, + h: 1, + x_center: 0.421875, + y_center: 0.140625 + }, + { + w: 1, + h: 1, + x_center: 0.421875, + y_center: 0.140625 + }, + { + w: 1, + h: 1, + x_center: 0.453125, + y_center: 0.140625 + }, + { + w: 1, + h: 1, + x_center: 0.453125, + y_center: 0.140625 + }, + { + w: 1, + h: 1, + x_center: 0.484375, + y_center: 0.140625 + }, + { + w: 1, + h: 1, + x_center: 0.484375, + y_center: 0.140625 + }, + { + w: 1, + h: 1, + x_center: 0.515625, + y_center: 0.140625 + }, + { + w: 1, + h: 1, + x_center: 0.515625, + y_center: 0.140625 + }, + { + w: 1, + h: 1, + x_center: 0.546875, + y_center: 0.140625 + }, + { + w: 1, + h: 1, + x_center: 0.546875, + y_center: 0.140625 + }, + { + w: 1, + h: 1, + x_center: 0.578125, + y_center: 0.140625 + }, + { + w: 1, + h: 1, + x_center: 0.578125, + y_center: 0.140625 + }, + { + w: 1, + h: 1, + x_center: 0.609375, + y_center: 0.140625 + }, + { + w: 1, + h: 1, + x_center: 0.609375, + y_center: 0.140625 + }, + { + w: 1, + h: 1, + x_center: 0.640625, + y_center: 0.140625 + }, + { + w: 1, + h: 1, + x_center: 0.640625, + y_center: 0.140625 + }, + { + w: 1, + h: 1, + x_center: 0.671875, + y_center: 0.140625 + }, + { + w: 1, + h: 1, + x_center: 0.671875, + y_center: 0.140625 + }, + { + w: 1, + h: 1, + x_center: 0.703125, + y_center: 0.140625 + }, + { + w: 1, + h: 1, + x_center: 0.703125, + y_center: 0.140625 + }, + { + w: 1, + h: 1, + x_center: 0.734375, + y_center: 0.140625 + }, + { + w: 1, + h: 1, + x_center: 0.734375, + y_center: 0.140625 + }, + { + w: 1, + h: 1, + x_center: 0.765625, + y_center: 0.140625 + }, + { + w: 1, + h: 1, + x_center: 0.765625, + y_center: 0.140625 + }, + { + w: 1, + h: 1, + x_center: 0.796875, + y_center: 0.140625 + }, + { + w: 1, + h: 1, + x_center: 0.796875, + y_center: 0.140625 + }, + { + w: 1, + h: 1, + x_center: 0.828125, + y_center: 0.140625 + }, + { + w: 1, + h: 1, + x_center: 0.828125, + y_center: 0.140625 + }, + { + w: 1, + h: 1, + x_center: 0.859375, + y_center: 0.140625 + }, + { + w: 1, + h: 1, + x_center: 0.859375, + y_center: 0.140625 + }, + { + w: 1, + h: 1, + x_center: 0.890625, + y_center: 0.140625 + }, + { + w: 1, + h: 1, + x_center: 0.890625, + y_center: 0.140625 + }, + { + w: 1, + h: 1, + x_center: 0.921875, + y_center: 0.140625 + }, + { + w: 1, + h: 1, + x_center: 0.921875, + y_center: 0.140625 + }, + { + w: 1, + h: 1, + x_center: 0.953125, + y_center: 0.140625 + }, + { + w: 1, + h: 1, + x_center: 0.953125, + y_center: 0.140625 + }, + { + w: 1, + h: 1, + x_center: 0.984375, + y_center: 0.140625 + }, + { + w: 1, + h: 1, + x_center: 0.984375, + y_center: 0.140625 + }, + { + w: 1, + h: 1, + x_center: 0.015625, + y_center: 0.171875 + }, + { + w: 1, + h: 1, + x_center: 0.015625, + y_center: 0.171875 + }, + { + w: 1, + h: 1, + x_center: 0.046875, + y_center: 0.171875 + }, + { + w: 1, + h: 1, + x_center: 0.046875, + y_center: 0.171875 + }, + { + w: 1, + h: 1, + x_center: 0.078125, + y_center: 0.171875 + }, + { + w: 1, + h: 1, + x_center: 0.078125, + y_center: 0.171875 + }, + { + w: 1, + h: 1, + x_center: 0.109375, + y_center: 0.171875 + }, + { + w: 1, + h: 1, + x_center: 0.109375, + y_center: 0.171875 + }, + { + w: 1, + h: 1, + x_center: 0.140625, + y_center: 0.171875 + }, + { + w: 1, + h: 1, + x_center: 0.140625, + y_center: 0.171875 + }, + { + w: 1, + h: 1, + x_center: 0.171875, + y_center: 0.171875 + }, + { + w: 1, + h: 1, + x_center: 0.171875, + y_center: 0.171875 + }, + { + w: 1, + h: 1, + x_center: 0.203125, + y_center: 0.171875 + }, + { + w: 1, + h: 1, + x_center: 0.203125, + y_center: 0.171875 + }, + { + w: 1, + h: 1, + x_center: 0.234375, + y_center: 0.171875 + }, + { + w: 1, + h: 1, + x_center: 0.234375, + y_center: 0.171875 + }, + { + w: 1, + h: 1, + x_center: 0.265625, + y_center: 0.171875 + }, + { + w: 1, + h: 1, + x_center: 0.265625, + y_center: 0.171875 + }, + { + w: 1, + h: 1, + x_center: 0.296875, + y_center: 0.171875 + }, + { + w: 1, + h: 1, + x_center: 0.296875, + y_center: 0.171875 + }, + { + w: 1, + h: 1, + x_center: 0.328125, + y_center: 0.171875 + }, + { + w: 1, + h: 1, + x_center: 0.328125, + y_center: 0.171875 + }, + { + w: 1, + h: 1, + x_center: 0.359375, + y_center: 0.171875 + }, + { + w: 1, + h: 1, + x_center: 0.359375, + y_center: 0.171875 + }, + { + w: 1, + h: 1, + x_center: 0.390625, + y_center: 0.171875 + }, + { + w: 1, + h: 1, + x_center: 0.390625, + y_center: 0.171875 + }, + { + w: 1, + h: 1, + x_center: 0.421875, + y_center: 0.171875 + }, + { + w: 1, + h: 1, + x_center: 0.421875, + y_center: 0.171875 + }, + { + w: 1, + h: 1, + x_center: 0.453125, + y_center: 0.171875 + }, + { + w: 1, + h: 1, + x_center: 0.453125, + y_center: 0.171875 + }, + { + w: 1, + h: 1, + x_center: 0.484375, + y_center: 0.171875 + }, + { + w: 1, + h: 1, + x_center: 0.484375, + y_center: 0.171875 + }, + { + w: 1, + h: 1, + x_center: 0.515625, + y_center: 0.171875 + }, + { + w: 1, + h: 1, + x_center: 0.515625, + y_center: 0.171875 + }, + { + w: 1, + h: 1, + x_center: 0.546875, + y_center: 0.171875 + }, + { + w: 1, + h: 1, + x_center: 0.546875, + y_center: 0.171875 + }, + { + w: 1, + h: 1, + x_center: 0.578125, + y_center: 0.171875 + }, + { + w: 1, + h: 1, + x_center: 0.578125, + y_center: 0.171875 + }, + { + w: 1, + h: 1, + x_center: 0.609375, + y_center: 0.171875 + }, + { + w: 1, + h: 1, + x_center: 0.609375, + y_center: 0.171875 + }, + { + w: 1, + h: 1, + x_center: 0.640625, + y_center: 0.171875 + }, + { + w: 1, + h: 1, + x_center: 0.640625, + y_center: 0.171875 + }, + { + w: 1, + h: 1, + x_center: 0.671875, + y_center: 0.171875 + }, + { + w: 1, + h: 1, + x_center: 0.671875, + y_center: 0.171875 + }, + { + w: 1, + h: 1, + x_center: 0.703125, + y_center: 0.171875 + }, + { + w: 1, + h: 1, + x_center: 0.703125, + y_center: 0.171875 + }, + { + w: 1, + h: 1, + x_center: 0.734375, + y_center: 0.171875 + }, + { + w: 1, + h: 1, + x_center: 0.734375, + y_center: 0.171875 + }, + { + w: 1, + h: 1, + x_center: 0.765625, + y_center: 0.171875 + }, + { + w: 1, + h: 1, + x_center: 0.765625, + y_center: 0.171875 + }, + { + w: 1, + h: 1, + x_center: 0.796875, + y_center: 0.171875 + }, + { + w: 1, + h: 1, + x_center: 0.796875, + y_center: 0.171875 + }, + { + w: 1, + h: 1, + x_center: 0.828125, + y_center: 0.171875 + }, + { + w: 1, + h: 1, + x_center: 0.828125, + y_center: 0.171875 + }, + { + w: 1, + h: 1, + x_center: 0.859375, + y_center: 0.171875 + }, + { + w: 1, + h: 1, + x_center: 0.859375, + y_center: 0.171875 + }, + { + w: 1, + h: 1, + x_center: 0.890625, + y_center: 0.171875 + }, + { + w: 1, + h: 1, + x_center: 0.890625, + y_center: 0.171875 + }, + { + w: 1, + h: 1, + x_center: 0.921875, + y_center: 0.171875 + }, + { + w: 1, + h: 1, + x_center: 0.921875, + y_center: 0.171875 + }, + { + w: 1, + h: 1, + x_center: 0.953125, + y_center: 0.171875 + }, + { + w: 1, + h: 1, + x_center: 0.953125, + y_center: 0.171875 + }, + { + w: 1, + h: 1, + x_center: 0.984375, + y_center: 0.171875 + }, + { + w: 1, + h: 1, + x_center: 0.984375, + y_center: 0.171875 + }, + { + w: 1, + h: 1, + x_center: 0.015625, + y_center: 0.203125 + }, + { + w: 1, + h: 1, + x_center: 0.015625, + y_center: 0.203125 + }, + { + w: 1, + h: 1, + x_center: 0.046875, + y_center: 0.203125 + }, + { + w: 1, + h: 1, + x_center: 0.046875, + y_center: 0.203125 + }, + { + w: 1, + h: 1, + x_center: 0.078125, + y_center: 0.203125 + }, + { + w: 1, + h: 1, + x_center: 0.078125, + y_center: 0.203125 + }, + { + w: 1, + h: 1, + x_center: 0.109375, + y_center: 0.203125 + }, + { + w: 1, + h: 1, + x_center: 0.109375, + y_center: 0.203125 + }, + { + w: 1, + h: 1, + x_center: 0.140625, + y_center: 0.203125 + }, + { + w: 1, + h: 1, + x_center: 0.140625, + y_center: 0.203125 + }, + { + w: 1, + h: 1, + x_center: 0.171875, + y_center: 0.203125 + }, + { + w: 1, + h: 1, + x_center: 0.171875, + y_center: 0.203125 + }, + { + w: 1, + h: 1, + x_center: 0.203125, + y_center: 0.203125 + }, + { + w: 1, + h: 1, + x_center: 0.203125, + y_center: 0.203125 + }, + { + w: 1, + h: 1, + x_center: 0.234375, + y_center: 0.203125 + }, + { + w: 1, + h: 1, + x_center: 0.234375, + y_center: 0.203125 + }, + { + w: 1, + h: 1, + x_center: 0.265625, + y_center: 0.203125 + }, + { + w: 1, + h: 1, + x_center: 0.265625, + y_center: 0.203125 + }, + { + w: 1, + h: 1, + x_center: 0.296875, + y_center: 0.203125 + }, + { + w: 1, + h: 1, + x_center: 0.296875, + y_center: 0.203125 + }, + { + w: 1, + h: 1, + x_center: 0.328125, + y_center: 0.203125 + }, + { + w: 1, + h: 1, + x_center: 0.328125, + y_center: 0.203125 + }, + { + w: 1, + h: 1, + x_center: 0.359375, + y_center: 0.203125 + }, + { + w: 1, + h: 1, + x_center: 0.359375, + y_center: 0.203125 + }, + { + w: 1, + h: 1, + x_center: 0.390625, + y_center: 0.203125 + }, + { + w: 1, + h: 1, + x_center: 0.390625, + y_center: 0.203125 + }, + { + w: 1, + h: 1, + x_center: 0.421875, + y_center: 0.203125 + }, + { + w: 1, + h: 1, + x_center: 0.421875, + y_center: 0.203125 + }, + { + w: 1, + h: 1, + x_center: 0.453125, + y_center: 0.203125 + }, + { + w: 1, + h: 1, + x_center: 0.453125, + y_center: 0.203125 + }, + { + w: 1, + h: 1, + x_center: 0.484375, + y_center: 0.203125 + }, + { + w: 1, + h: 1, + x_center: 0.484375, + y_center: 0.203125 + }, + { + w: 1, + h: 1, + x_center: 0.515625, + y_center: 0.203125 + }, + { + w: 1, + h: 1, + x_center: 0.515625, + y_center: 0.203125 + }, + { + w: 1, + h: 1, + x_center: 0.546875, + y_center: 0.203125 + }, + { + w: 1, + h: 1, + x_center: 0.546875, + y_center: 0.203125 + }, + { + w: 1, + h: 1, + x_center: 0.578125, + y_center: 0.203125 + }, + { + w: 1, + h: 1, + x_center: 0.578125, + y_center: 0.203125 + }, + { + w: 1, + h: 1, + x_center: 0.609375, + y_center: 0.203125 + }, + { + w: 1, + h: 1, + x_center: 0.609375, + y_center: 0.203125 + }, + { + w: 1, + h: 1, + x_center: 0.640625, + y_center: 0.203125 + }, + { + w: 1, + h: 1, + x_center: 0.640625, + y_center: 0.203125 + }, + { + w: 1, + h: 1, + x_center: 0.671875, + y_center: 0.203125 + }, + { + w: 1, + h: 1, + x_center: 0.671875, + y_center: 0.203125 + }, + { + w: 1, + h: 1, + x_center: 0.703125, + y_center: 0.203125 + }, + { + w: 1, + h: 1, + x_center: 0.703125, + y_center: 0.203125 + }, + { + w: 1, + h: 1, + x_center: 0.734375, + y_center: 0.203125 + }, + { + w: 1, + h: 1, + x_center: 0.734375, + y_center: 0.203125 + }, + { + w: 1, + h: 1, + x_center: 0.765625, + y_center: 0.203125 + }, + { + w: 1, + h: 1, + x_center: 0.765625, + y_center: 0.203125 + }, + { + w: 1, + h: 1, + x_center: 0.796875, + y_center: 0.203125 + }, + { + w: 1, + h: 1, + x_center: 0.796875, + y_center: 0.203125 + }, + { + w: 1, + h: 1, + x_center: 0.828125, + y_center: 0.203125 + }, + { + w: 1, + h: 1, + x_center: 0.828125, + y_center: 0.203125 + }, + { + w: 1, + h: 1, + x_center: 0.859375, + y_center: 0.203125 + }, + { + w: 1, + h: 1, + x_center: 0.859375, + y_center: 0.203125 + }, + { + w: 1, + h: 1, + x_center: 0.890625, + y_center: 0.203125 + }, + { + w: 1, + h: 1, + x_center: 0.890625, + y_center: 0.203125 + }, + { + w: 1, + h: 1, + x_center: 0.921875, + y_center: 0.203125 + }, + { + w: 1, + h: 1, + x_center: 0.921875, + y_center: 0.203125 + }, + { + w: 1, + h: 1, + x_center: 0.953125, + y_center: 0.203125 + }, + { + w: 1, + h: 1, + x_center: 0.953125, + y_center: 0.203125 + }, + { + w: 1, + h: 1, + x_center: 0.984375, + y_center: 0.203125 + }, + { + w: 1, + h: 1, + x_center: 0.984375, + y_center: 0.203125 + }, + { + w: 1, + h: 1, + x_center: 0.015625, + y_center: 0.234375 + }, + { + w: 1, + h: 1, + x_center: 0.015625, + y_center: 0.234375 + }, + { + w: 1, + h: 1, + x_center: 0.046875, + y_center: 0.234375 + }, + { + w: 1, + h: 1, + x_center: 0.046875, + y_center: 0.234375 + }, + { + w: 1, + h: 1, + x_center: 0.078125, + y_center: 0.234375 + }, + { + w: 1, + h: 1, + x_center: 0.078125, + y_center: 0.234375 + }, + { + w: 1, + h: 1, + x_center: 0.109375, + y_center: 0.234375 + }, + { + w: 1, + h: 1, + x_center: 0.109375, + y_center: 0.234375 + }, + { + w: 1, + h: 1, + x_center: 0.140625, + y_center: 0.234375 + }, + { + w: 1, + h: 1, + x_center: 0.140625, + y_center: 0.234375 + }, + { + w: 1, + h: 1, + x_center: 0.171875, + y_center: 0.234375 + }, + { + w: 1, + h: 1, + x_center: 0.171875, + y_center: 0.234375 + }, + { + w: 1, + h: 1, + x_center: 0.203125, + y_center: 0.234375 + }, + { + w: 1, + h: 1, + x_center: 0.203125, + y_center: 0.234375 + }, + { + w: 1, + h: 1, + x_center: 0.234375, + y_center: 0.234375 + }, + { + w: 1, + h: 1, + x_center: 0.234375, + y_center: 0.234375 + }, + { + w: 1, + h: 1, + x_center: 0.265625, + y_center: 0.234375 + }, + { + w: 1, + h: 1, + x_center: 0.265625, + y_center: 0.234375 + }, + { + w: 1, + h: 1, + x_center: 0.296875, + y_center: 0.234375 + }, + { + w: 1, + h: 1, + x_center: 0.296875, + y_center: 0.234375 + }, + { + w: 1, + h: 1, + x_center: 0.328125, + y_center: 0.234375 + }, + { + w: 1, + h: 1, + x_center: 0.328125, + y_center: 0.234375 + }, + { + w: 1, + h: 1, + x_center: 0.359375, + y_center: 0.234375 + }, + { + w: 1, + h: 1, + x_center: 0.359375, + y_center: 0.234375 + }, + { + w: 1, + h: 1, + x_center: 0.390625, + y_center: 0.234375 + }, + { + w: 1, + h: 1, + x_center: 0.390625, + y_center: 0.234375 + }, + { + w: 1, + h: 1, + x_center: 0.421875, + y_center: 0.234375 + }, + { + w: 1, + h: 1, + x_center: 0.421875, + y_center: 0.234375 + }, + { + w: 1, + h: 1, + x_center: 0.453125, + y_center: 0.234375 + }, + { + w: 1, + h: 1, + x_center: 0.453125, + y_center: 0.234375 + }, + { + w: 1, + h: 1, + x_center: 0.484375, + y_center: 0.234375 + }, + { + w: 1, + h: 1, + x_center: 0.484375, + y_center: 0.234375 + }, + { + w: 1, + h: 1, + x_center: 0.515625, + y_center: 0.234375 + }, + { + w: 1, + h: 1, + x_center: 0.515625, + y_center: 0.234375 + }, + { + w: 1, + h: 1, + x_center: 0.546875, + y_center: 0.234375 + }, + { + w: 1, + h: 1, + x_center: 0.546875, + y_center: 0.234375 + }, + { + w: 1, + h: 1, + x_center: 0.578125, + y_center: 0.234375 + }, + { + w: 1, + h: 1, + x_center: 0.578125, + y_center: 0.234375 + }, + { + w: 1, + h: 1, + x_center: 0.609375, + y_center: 0.234375 + }, + { + w: 1, + h: 1, + x_center: 0.609375, + y_center: 0.234375 + }, + { + w: 1, + h: 1, + x_center: 0.640625, + y_center: 0.234375 + }, + { + w: 1, + h: 1, + x_center: 0.640625, + y_center: 0.234375 + }, + { + w: 1, + h: 1, + x_center: 0.671875, + y_center: 0.234375 + }, + { + w: 1, + h: 1, + x_center: 0.671875, + y_center: 0.234375 + }, + { + w: 1, + h: 1, + x_center: 0.703125, + y_center: 0.234375 + }, + { + w: 1, + h: 1, + x_center: 0.703125, + y_center: 0.234375 + }, + { + w: 1, + h: 1, + x_center: 0.734375, + y_center: 0.234375 + }, + { + w: 1, + h: 1, + x_center: 0.734375, + y_center: 0.234375 + }, + { + w: 1, + h: 1, + x_center: 0.765625, + y_center: 0.234375 + }, + { + w: 1, + h: 1, + x_center: 0.765625, + y_center: 0.234375 + }, + { + w: 1, + h: 1, + x_center: 0.796875, + y_center: 0.234375 + }, + { + w: 1, + h: 1, + x_center: 0.796875, + y_center: 0.234375 + }, + { + w: 1, + h: 1, + x_center: 0.828125, + y_center: 0.234375 + }, + { + w: 1, + h: 1, + x_center: 0.828125, + y_center: 0.234375 + }, + { + w: 1, + h: 1, + x_center: 0.859375, + y_center: 0.234375 + }, + { + w: 1, + h: 1, + x_center: 0.859375, + y_center: 0.234375 + }, + { + w: 1, + h: 1, + x_center: 0.890625, + y_center: 0.234375 + }, + { + w: 1, + h: 1, + x_center: 0.890625, + y_center: 0.234375 + }, + { + w: 1, + h: 1, + x_center: 0.921875, + y_center: 0.234375 + }, + { + w: 1, + h: 1, + x_center: 0.921875, + y_center: 0.234375 + }, + { + w: 1, + h: 1, + x_center: 0.953125, + y_center: 0.234375 + }, + { + w: 1, + h: 1, + x_center: 0.953125, + y_center: 0.234375 + }, + { + w: 1, + h: 1, + x_center: 0.984375, + y_center: 0.234375 + }, + { + w: 1, + h: 1, + x_center: 0.984375, + y_center: 0.234375 + }, + { + w: 1, + h: 1, + x_center: 0.015625, + y_center: 0.265625 + }, + { + w: 1, + h: 1, + x_center: 0.015625, + y_center: 0.265625 + }, + { + w: 1, + h: 1, + x_center: 0.046875, + y_center: 0.265625 + }, + { + w: 1, + h: 1, + x_center: 0.046875, + y_center: 0.265625 + }, + { + w: 1, + h: 1, + x_center: 0.078125, + y_center: 0.265625 + }, + { + w: 1, + h: 1, + x_center: 0.078125, + y_center: 0.265625 + }, + { + w: 1, + h: 1, + x_center: 0.109375, + y_center: 0.265625 + }, + { + w: 1, + h: 1, + x_center: 0.109375, + y_center: 0.265625 + }, + { + w: 1, + h: 1, + x_center: 0.140625, + y_center: 0.265625 + }, + { + w: 1, + h: 1, + x_center: 0.140625, + y_center: 0.265625 + }, + { + w: 1, + h: 1, + x_center: 0.171875, + y_center: 0.265625 + }, + { + w: 1, + h: 1, + x_center: 0.171875, + y_center: 0.265625 + }, + { + w: 1, + h: 1, + x_center: 0.203125, + y_center: 0.265625 + }, + { + w: 1, + h: 1, + x_center: 0.203125, + y_center: 0.265625 + }, + { + w: 1, + h: 1, + x_center: 0.234375, + y_center: 0.265625 + }, + { + w: 1, + h: 1, + x_center: 0.234375, + y_center: 0.265625 + }, + { + w: 1, + h: 1, + x_center: 0.265625, + y_center: 0.265625 + }, + { + w: 1, + h: 1, + x_center: 0.265625, + y_center: 0.265625 + }, + { + w: 1, + h: 1, + x_center: 0.296875, + y_center: 0.265625 + }, + { + w: 1, + h: 1, + x_center: 0.296875, + y_center: 0.265625 + }, + { + w: 1, + h: 1, + x_center: 0.328125, + y_center: 0.265625 + }, + { + w: 1, + h: 1, + x_center: 0.328125, + y_center: 0.265625 + }, + { + w: 1, + h: 1, + x_center: 0.359375, + y_center: 0.265625 + }, + { + w: 1, + h: 1, + x_center: 0.359375, + y_center: 0.265625 + }, + { + w: 1, + h: 1, + x_center: 0.390625, + y_center: 0.265625 + }, + { + w: 1, + h: 1, + x_center: 0.390625, + y_center: 0.265625 + }, + { + w: 1, + h: 1, + x_center: 0.421875, + y_center: 0.265625 + }, + { + w: 1, + h: 1, + x_center: 0.421875, + y_center: 0.265625 + }, + { + w: 1, + h: 1, + x_center: 0.453125, + y_center: 0.265625 + }, + { + w: 1, + h: 1, + x_center: 0.453125, + y_center: 0.265625 + }, + { + w: 1, + h: 1, + x_center: 0.484375, + y_center: 0.265625 + }, + { + w: 1, + h: 1, + x_center: 0.484375, + y_center: 0.265625 + }, + { + w: 1, + h: 1, + x_center: 0.515625, + y_center: 0.265625 + }, + { + w: 1, + h: 1, + x_center: 0.515625, + y_center: 0.265625 + }, + { + w: 1, + h: 1, + x_center: 0.546875, + y_center: 0.265625 + }, + { + w: 1, + h: 1, + x_center: 0.546875, + y_center: 0.265625 + }, + { + w: 1, + h: 1, + x_center: 0.578125, + y_center: 0.265625 + }, + { + w: 1, + h: 1, + x_center: 0.578125, + y_center: 0.265625 + }, + { + w: 1, + h: 1, + x_center: 0.609375, + y_center: 0.265625 + }, + { + w: 1, + h: 1, + x_center: 0.609375, + y_center: 0.265625 + }, + { + w: 1, + h: 1, + x_center: 0.640625, + y_center: 0.265625 + }, + { + w: 1, + h: 1, + x_center: 0.640625, + y_center: 0.265625 + }, + { + w: 1, + h: 1, + x_center: 0.671875, + y_center: 0.265625 + }, + { + w: 1, + h: 1, + x_center: 0.671875, + y_center: 0.265625 + }, + { + w: 1, + h: 1, + x_center: 0.703125, + y_center: 0.265625 + }, + { + w: 1, + h: 1, + x_center: 0.703125, + y_center: 0.265625 + }, + { + w: 1, + h: 1, + x_center: 0.734375, + y_center: 0.265625 + }, + { + w: 1, + h: 1, + x_center: 0.734375, + y_center: 0.265625 + }, + { + w: 1, + h: 1, + x_center: 0.765625, + y_center: 0.265625 + }, + { + w: 1, + h: 1, + x_center: 0.765625, + y_center: 0.265625 + }, + { + w: 1, + h: 1, + x_center: 0.796875, + y_center: 0.265625 + }, + { + w: 1, + h: 1, + x_center: 0.796875, + y_center: 0.265625 + }, + { + w: 1, + h: 1, + x_center: 0.828125, + y_center: 0.265625 + }, + { + w: 1, + h: 1, + x_center: 0.828125, + y_center: 0.265625 + }, + { + w: 1, + h: 1, + x_center: 0.859375, + y_center: 0.265625 + }, + { + w: 1, + h: 1, + x_center: 0.859375, + y_center: 0.265625 + }, + { + w: 1, + h: 1, + x_center: 0.890625, + y_center: 0.265625 + }, + { + w: 1, + h: 1, + x_center: 0.890625, + y_center: 0.265625 + }, + { + w: 1, + h: 1, + x_center: 0.921875, + y_center: 0.265625 + }, + { + w: 1, + h: 1, + x_center: 0.921875, + y_center: 0.265625 + }, + { + w: 1, + h: 1, + x_center: 0.953125, + y_center: 0.265625 + }, + { + w: 1, + h: 1, + x_center: 0.953125, + y_center: 0.265625 + }, + { + w: 1, + h: 1, + x_center: 0.984375, + y_center: 0.265625 + }, + { + w: 1, + h: 1, + x_center: 0.984375, + y_center: 0.265625 + }, + { + w: 1, + h: 1, + x_center: 0.015625, + y_center: 0.296875 + }, + { + w: 1, + h: 1, + x_center: 0.015625, + y_center: 0.296875 + }, + { + w: 1, + h: 1, + x_center: 0.046875, + y_center: 0.296875 + }, + { + w: 1, + h: 1, + x_center: 0.046875, + y_center: 0.296875 + }, + { + w: 1, + h: 1, + x_center: 0.078125, + y_center: 0.296875 + }, + { + w: 1, + h: 1, + x_center: 0.078125, + y_center: 0.296875 + }, + { + w: 1, + h: 1, + x_center: 0.109375, + y_center: 0.296875 + }, + { + w: 1, + h: 1, + x_center: 0.109375, + y_center: 0.296875 + }, + { + w: 1, + h: 1, + x_center: 0.140625, + y_center: 0.296875 + }, + { + w: 1, + h: 1, + x_center: 0.140625, + y_center: 0.296875 + }, + { + w: 1, + h: 1, + x_center: 0.171875, + y_center: 0.296875 + }, + { + w: 1, + h: 1, + x_center: 0.171875, + y_center: 0.296875 + }, + { + w: 1, + h: 1, + x_center: 0.203125, + y_center: 0.296875 + }, + { + w: 1, + h: 1, + x_center: 0.203125, + y_center: 0.296875 + }, + { + w: 1, + h: 1, + x_center: 0.234375, + y_center: 0.296875 + }, + { + w: 1, + h: 1, + x_center: 0.234375, + y_center: 0.296875 + }, + { + w: 1, + h: 1, + x_center: 0.265625, + y_center: 0.296875 + }, + { + w: 1, + h: 1, + x_center: 0.265625, + y_center: 0.296875 + }, + { + w: 1, + h: 1, + x_center: 0.296875, + y_center: 0.296875 + }, + { + w: 1, + h: 1, + x_center: 0.296875, + y_center: 0.296875 + }, + { + w: 1, + h: 1, + x_center: 0.328125, + y_center: 0.296875 + }, + { + w: 1, + h: 1, + x_center: 0.328125, + y_center: 0.296875 + }, + { + w: 1, + h: 1, + x_center: 0.359375, + y_center: 0.296875 + }, + { + w: 1, + h: 1, + x_center: 0.359375, + y_center: 0.296875 + }, + { + w: 1, + h: 1, + x_center: 0.390625, + y_center: 0.296875 + }, + { + w: 1, + h: 1, + x_center: 0.390625, + y_center: 0.296875 + }, + { + w: 1, + h: 1, + x_center: 0.421875, + y_center: 0.296875 + }, + { + w: 1, + h: 1, + x_center: 0.421875, + y_center: 0.296875 + }, + { + w: 1, + h: 1, + x_center: 0.453125, + y_center: 0.296875 + }, + { + w: 1, + h: 1, + x_center: 0.453125, + y_center: 0.296875 + }, + { + w: 1, + h: 1, + x_center: 0.484375, + y_center: 0.296875 + }, + { + w: 1, + h: 1, + x_center: 0.484375, + y_center: 0.296875 + }, + { + w: 1, + h: 1, + x_center: 0.515625, + y_center: 0.296875 + }, + { + w: 1, + h: 1, + x_center: 0.515625, + y_center: 0.296875 + }, + { + w: 1, + h: 1, + x_center: 0.546875, + y_center: 0.296875 + }, + { + w: 1, + h: 1, + x_center: 0.546875, + y_center: 0.296875 + }, + { + w: 1, + h: 1, + x_center: 0.578125, + y_center: 0.296875 + }, + { + w: 1, + h: 1, + x_center: 0.578125, + y_center: 0.296875 + }, + { + w: 1, + h: 1, + x_center: 0.609375, + y_center: 0.296875 + }, + { + w: 1, + h: 1, + x_center: 0.609375, + y_center: 0.296875 + }, + { + w: 1, + h: 1, + x_center: 0.640625, + y_center: 0.296875 + }, + { + w: 1, + h: 1, + x_center: 0.640625, + y_center: 0.296875 + }, + { + w: 1, + h: 1, + x_center: 0.671875, + y_center: 0.296875 + }, + { + w: 1, + h: 1, + x_center: 0.671875, + y_center: 0.296875 + }, + { + w: 1, + h: 1, + x_center: 0.703125, + y_center: 0.296875 + }, + { + w: 1, + h: 1, + x_center: 0.703125, + y_center: 0.296875 + }, + { + w: 1, + h: 1, + x_center: 0.734375, + y_center: 0.296875 + }, + { + w: 1, + h: 1, + x_center: 0.734375, + y_center: 0.296875 + }, + { + w: 1, + h: 1, + x_center: 0.765625, + y_center: 0.296875 + }, + { + w: 1, + h: 1, + x_center: 0.765625, + y_center: 0.296875 + }, + { + w: 1, + h: 1, + x_center: 0.796875, + y_center: 0.296875 + }, + { + w: 1, + h: 1, + x_center: 0.796875, + y_center: 0.296875 + }, + { + w: 1, + h: 1, + x_center: 0.828125, + y_center: 0.296875 + }, + { + w: 1, + h: 1, + x_center: 0.828125, + y_center: 0.296875 + }, + { + w: 1, + h: 1, + x_center: 0.859375, + y_center: 0.296875 + }, + { + w: 1, + h: 1, + x_center: 0.859375, + y_center: 0.296875 + }, + { + w: 1, + h: 1, + x_center: 0.890625, + y_center: 0.296875 + }, + { + w: 1, + h: 1, + x_center: 0.890625, + y_center: 0.296875 + }, + { + w: 1, + h: 1, + x_center: 0.921875, + y_center: 0.296875 + }, + { + w: 1, + h: 1, + x_center: 0.921875, + y_center: 0.296875 + }, + { + w: 1, + h: 1, + x_center: 0.953125, + y_center: 0.296875 + }, + { + w: 1, + h: 1, + x_center: 0.953125, + y_center: 0.296875 + }, + { + w: 1, + h: 1, + x_center: 0.984375, + y_center: 0.296875 + }, + { + w: 1, + h: 1, + x_center: 0.984375, + y_center: 0.296875 + }, + { + w: 1, + h: 1, + x_center: 0.015625, + y_center: 0.328125 + }, + { + w: 1, + h: 1, + x_center: 0.015625, + y_center: 0.328125 + }, + { + w: 1, + h: 1, + x_center: 0.046875, + y_center: 0.328125 + }, + { + w: 1, + h: 1, + x_center: 0.046875, + y_center: 0.328125 + }, + { + w: 1, + h: 1, + x_center: 0.078125, + y_center: 0.328125 + }, + { + w: 1, + h: 1, + x_center: 0.078125, + y_center: 0.328125 + }, + { + w: 1, + h: 1, + x_center: 0.109375, + y_center: 0.328125 + }, + { + w: 1, + h: 1, + x_center: 0.109375, + y_center: 0.328125 + }, + { + w: 1, + h: 1, + x_center: 0.140625, + y_center: 0.328125 + }, + { + w: 1, + h: 1, + x_center: 0.140625, + y_center: 0.328125 + }, + { + w: 1, + h: 1, + x_center: 0.171875, + y_center: 0.328125 + }, + { + w: 1, + h: 1, + x_center: 0.171875, + y_center: 0.328125 + }, + { + w: 1, + h: 1, + x_center: 0.203125, + y_center: 0.328125 + }, + { + w: 1, + h: 1, + x_center: 0.203125, + y_center: 0.328125 + }, + { + w: 1, + h: 1, + x_center: 0.234375, + y_center: 0.328125 + }, + { + w: 1, + h: 1, + x_center: 0.234375, + y_center: 0.328125 + }, + { + w: 1, + h: 1, + x_center: 0.265625, + y_center: 0.328125 + }, + { + w: 1, + h: 1, + x_center: 0.265625, + y_center: 0.328125 + }, + { + w: 1, + h: 1, + x_center: 0.296875, + y_center: 0.328125 + }, + { + w: 1, + h: 1, + x_center: 0.296875, + y_center: 0.328125 + }, + { + w: 1, + h: 1, + x_center: 0.328125, + y_center: 0.328125 + }, + { + w: 1, + h: 1, + x_center: 0.328125, + y_center: 0.328125 + }, + { + w: 1, + h: 1, + x_center: 0.359375, + y_center: 0.328125 + }, + { + w: 1, + h: 1, + x_center: 0.359375, + y_center: 0.328125 + }, + { + w: 1, + h: 1, + x_center: 0.390625, + y_center: 0.328125 + }, + { + w: 1, + h: 1, + x_center: 0.390625, + y_center: 0.328125 + }, + { + w: 1, + h: 1, + x_center: 0.421875, + y_center: 0.328125 + }, + { + w: 1, + h: 1, + x_center: 0.421875, + y_center: 0.328125 + }, + { + w: 1, + h: 1, + x_center: 0.453125, + y_center: 0.328125 + }, + { + w: 1, + h: 1, + x_center: 0.453125, + y_center: 0.328125 + }, + { + w: 1, + h: 1, + x_center: 0.484375, + y_center: 0.328125 + }, + { + w: 1, + h: 1, + x_center: 0.484375, + y_center: 0.328125 + }, + { + w: 1, + h: 1, + x_center: 0.515625, + y_center: 0.328125 + }, + { + w: 1, + h: 1, + x_center: 0.515625, + y_center: 0.328125 + }, + { + w: 1, + h: 1, + x_center: 0.546875, + y_center: 0.328125 + }, + { + w: 1, + h: 1, + x_center: 0.546875, + y_center: 0.328125 + }, + { + w: 1, + h: 1, + x_center: 0.578125, + y_center: 0.328125 + }, + { + w: 1, + h: 1, + x_center: 0.578125, + y_center: 0.328125 + }, + { + w: 1, + h: 1, + x_center: 0.609375, + y_center: 0.328125 + }, + { + w: 1, + h: 1, + x_center: 0.609375, + y_center: 0.328125 + }, + { + w: 1, + h: 1, + x_center: 0.640625, + y_center: 0.328125 + }, + { + w: 1, + h: 1, + x_center: 0.640625, + y_center: 0.328125 + }, + { + w: 1, + h: 1, + x_center: 0.671875, + y_center: 0.328125 + }, + { + w: 1, + h: 1, + x_center: 0.671875, + y_center: 0.328125 + }, + { + w: 1, + h: 1, + x_center: 0.703125, + y_center: 0.328125 + }, + { + w: 1, + h: 1, + x_center: 0.703125, + y_center: 0.328125 + }, + { + w: 1, + h: 1, + x_center: 0.734375, + y_center: 0.328125 + }, + { + w: 1, + h: 1, + x_center: 0.734375, + y_center: 0.328125 + }, + { + w: 1, + h: 1, + x_center: 0.765625, + y_center: 0.328125 + }, + { + w: 1, + h: 1, + x_center: 0.765625, + y_center: 0.328125 + }, + { + w: 1, + h: 1, + x_center: 0.796875, + y_center: 0.328125 + }, + { + w: 1, + h: 1, + x_center: 0.796875, + y_center: 0.328125 + }, + { + w: 1, + h: 1, + x_center: 0.828125, + y_center: 0.328125 + }, + { + w: 1, + h: 1, + x_center: 0.828125, + y_center: 0.328125 + }, + { + w: 1, + h: 1, + x_center: 0.859375, + y_center: 0.328125 + }, + { + w: 1, + h: 1, + x_center: 0.859375, + y_center: 0.328125 + }, + { + w: 1, + h: 1, + x_center: 0.890625, + y_center: 0.328125 + }, + { + w: 1, + h: 1, + x_center: 0.890625, + y_center: 0.328125 + }, + { + w: 1, + h: 1, + x_center: 0.921875, + y_center: 0.328125 + }, + { + w: 1, + h: 1, + x_center: 0.921875, + y_center: 0.328125 + }, + { + w: 1, + h: 1, + x_center: 0.953125, + y_center: 0.328125 + }, + { + w: 1, + h: 1, + x_center: 0.953125, + y_center: 0.328125 + }, + { + w: 1, + h: 1, + x_center: 0.984375, + y_center: 0.328125 + }, + { + w: 1, + h: 1, + x_center: 0.984375, + y_center: 0.328125 + }, + { + w: 1, + h: 1, + x_center: 0.015625, + y_center: 0.359375 + }, + { + w: 1, + h: 1, + x_center: 0.015625, + y_center: 0.359375 + }, + { + w: 1, + h: 1, + x_center: 0.046875, + y_center: 0.359375 + }, + { + w: 1, + h: 1, + x_center: 0.046875, + y_center: 0.359375 + }, + { + w: 1, + h: 1, + x_center: 0.078125, + y_center: 0.359375 + }, + { + w: 1, + h: 1, + x_center: 0.078125, + y_center: 0.359375 + }, + { + w: 1, + h: 1, + x_center: 0.109375, + y_center: 0.359375 + }, + { + w: 1, + h: 1, + x_center: 0.109375, + y_center: 0.359375 + }, + { + w: 1, + h: 1, + x_center: 0.140625, + y_center: 0.359375 + }, + { + w: 1, + h: 1, + x_center: 0.140625, + y_center: 0.359375 + }, + { + w: 1, + h: 1, + x_center: 0.171875, + y_center: 0.359375 + }, + { + w: 1, + h: 1, + x_center: 0.171875, + y_center: 0.359375 + }, + { + w: 1, + h: 1, + x_center: 0.203125, + y_center: 0.359375 + }, + { + w: 1, + h: 1, + x_center: 0.203125, + y_center: 0.359375 + }, + { + w: 1, + h: 1, + x_center: 0.234375, + y_center: 0.359375 + }, + { + w: 1, + h: 1, + x_center: 0.234375, + y_center: 0.359375 + }, + { + w: 1, + h: 1, + x_center: 0.265625, + y_center: 0.359375 + }, + { + w: 1, + h: 1, + x_center: 0.265625, + y_center: 0.359375 + }, + { + w: 1, + h: 1, + x_center: 0.296875, + y_center: 0.359375 + }, + { + w: 1, + h: 1, + x_center: 0.296875, + y_center: 0.359375 + }, + { + w: 1, + h: 1, + x_center: 0.328125, + y_center: 0.359375 + }, + { + w: 1, + h: 1, + x_center: 0.328125, + y_center: 0.359375 + }, + { + w: 1, + h: 1, + x_center: 0.359375, + y_center: 0.359375 + }, + { + w: 1, + h: 1, + x_center: 0.359375, + y_center: 0.359375 + }, + { + w: 1, + h: 1, + x_center: 0.390625, + y_center: 0.359375 + }, + { + w: 1, + h: 1, + x_center: 0.390625, + y_center: 0.359375 + }, + { + w: 1, + h: 1, + x_center: 0.421875, + y_center: 0.359375 + }, + { + w: 1, + h: 1, + x_center: 0.421875, + y_center: 0.359375 + }, + { + w: 1, + h: 1, + x_center: 0.453125, + y_center: 0.359375 + }, + { + w: 1, + h: 1, + x_center: 0.453125, + y_center: 0.359375 + }, + { + w: 1, + h: 1, + x_center: 0.484375, + y_center: 0.359375 + }, + { + w: 1, + h: 1, + x_center: 0.484375, + y_center: 0.359375 + }, + { + w: 1, + h: 1, + x_center: 0.515625, + y_center: 0.359375 + }, + { + w: 1, + h: 1, + x_center: 0.515625, + y_center: 0.359375 + }, + { + w: 1, + h: 1, + x_center: 0.546875, + y_center: 0.359375 + }, + { + w: 1, + h: 1, + x_center: 0.546875, + y_center: 0.359375 + }, + { + w: 1, + h: 1, + x_center: 0.578125, + y_center: 0.359375 + }, + { + w: 1, + h: 1, + x_center: 0.578125, + y_center: 0.359375 + }, + { + w: 1, + h: 1, + x_center: 0.609375, + y_center: 0.359375 + }, + { + w: 1, + h: 1, + x_center: 0.609375, + y_center: 0.359375 + }, + { + w: 1, + h: 1, + x_center: 0.640625, + y_center: 0.359375 + }, + { + w: 1, + h: 1, + x_center: 0.640625, + y_center: 0.359375 + }, + { + w: 1, + h: 1, + x_center: 0.671875, + y_center: 0.359375 + }, + { + w: 1, + h: 1, + x_center: 0.671875, + y_center: 0.359375 + }, + { + w: 1, + h: 1, + x_center: 0.703125, + y_center: 0.359375 + }, + { + w: 1, + h: 1, + x_center: 0.703125, + y_center: 0.359375 + }, + { + w: 1, + h: 1, + x_center: 0.734375, + y_center: 0.359375 + }, + { + w: 1, + h: 1, + x_center: 0.734375, + y_center: 0.359375 + }, + { + w: 1, + h: 1, + x_center: 0.765625, + y_center: 0.359375 + }, + { + w: 1, + h: 1, + x_center: 0.765625, + y_center: 0.359375 + }, + { + w: 1, + h: 1, + x_center: 0.796875, + y_center: 0.359375 + }, + { + w: 1, + h: 1, + x_center: 0.796875, + y_center: 0.359375 + }, + { + w: 1, + h: 1, + x_center: 0.828125, + y_center: 0.359375 + }, + { + w: 1, + h: 1, + x_center: 0.828125, + y_center: 0.359375 + }, + { + w: 1, + h: 1, + x_center: 0.859375, + y_center: 0.359375 + }, + { + w: 1, + h: 1, + x_center: 0.859375, + y_center: 0.359375 + }, + { + w: 1, + h: 1, + x_center: 0.890625, + y_center: 0.359375 + }, + { + w: 1, + h: 1, + x_center: 0.890625, + y_center: 0.359375 + }, + { + w: 1, + h: 1, + x_center: 0.921875, + y_center: 0.359375 + }, + { + w: 1, + h: 1, + x_center: 0.921875, + y_center: 0.359375 + }, + { + w: 1, + h: 1, + x_center: 0.953125, + y_center: 0.359375 + }, + { + w: 1, + h: 1, + x_center: 0.953125, + y_center: 0.359375 + }, + { + w: 1, + h: 1, + x_center: 0.984375, + y_center: 0.359375 + }, + { + w: 1, + h: 1, + x_center: 0.984375, + y_center: 0.359375 + }, + { + w: 1, + h: 1, + x_center: 0.015625, + y_center: 0.390625 + }, + { + w: 1, + h: 1, + x_center: 0.015625, + y_center: 0.390625 + }, + { + w: 1, + h: 1, + x_center: 0.046875, + y_center: 0.390625 + }, + { + w: 1, + h: 1, + x_center: 0.046875, + y_center: 0.390625 + }, + { + w: 1, + h: 1, + x_center: 0.078125, + y_center: 0.390625 + }, + { + w: 1, + h: 1, + x_center: 0.078125, + y_center: 0.390625 + }, + { + w: 1, + h: 1, + x_center: 0.109375, + y_center: 0.390625 + }, + { + w: 1, + h: 1, + x_center: 0.109375, + y_center: 0.390625 + }, + { + w: 1, + h: 1, + x_center: 0.140625, + y_center: 0.390625 + }, + { + w: 1, + h: 1, + x_center: 0.140625, + y_center: 0.390625 + }, + { + w: 1, + h: 1, + x_center: 0.171875, + y_center: 0.390625 + }, + { + w: 1, + h: 1, + x_center: 0.171875, + y_center: 0.390625 + }, + { + w: 1, + h: 1, + x_center: 0.203125, + y_center: 0.390625 + }, + { + w: 1, + h: 1, + x_center: 0.203125, + y_center: 0.390625 + }, + { + w: 1, + h: 1, + x_center: 0.234375, + y_center: 0.390625 + }, + { + w: 1, + h: 1, + x_center: 0.234375, + y_center: 0.390625 + }, + { + w: 1, + h: 1, + x_center: 0.265625, + y_center: 0.390625 + }, + { + w: 1, + h: 1, + x_center: 0.265625, + y_center: 0.390625 + }, + { + w: 1, + h: 1, + x_center: 0.296875, + y_center: 0.390625 + }, + { + w: 1, + h: 1, + x_center: 0.296875, + y_center: 0.390625 + }, + { + w: 1, + h: 1, + x_center: 0.328125, + y_center: 0.390625 + }, + { + w: 1, + h: 1, + x_center: 0.328125, + y_center: 0.390625 + }, + { + w: 1, + h: 1, + x_center: 0.359375, + y_center: 0.390625 + }, + { + w: 1, + h: 1, + x_center: 0.359375, + y_center: 0.390625 + }, + { + w: 1, + h: 1, + x_center: 0.390625, + y_center: 0.390625 + }, + { + w: 1, + h: 1, + x_center: 0.390625, + y_center: 0.390625 + }, + { + w: 1, + h: 1, + x_center: 0.421875, + y_center: 0.390625 + }, + { + w: 1, + h: 1, + x_center: 0.421875, + y_center: 0.390625 + }, + { + w: 1, + h: 1, + x_center: 0.453125, + y_center: 0.390625 + }, + { + w: 1, + h: 1, + x_center: 0.453125, + y_center: 0.390625 + }, + { + w: 1, + h: 1, + x_center: 0.484375, + y_center: 0.390625 + }, + { + w: 1, + h: 1, + x_center: 0.484375, + y_center: 0.390625 + }, + { + w: 1, + h: 1, + x_center: 0.515625, + y_center: 0.390625 + }, + { + w: 1, + h: 1, + x_center: 0.515625, + y_center: 0.390625 + }, + { + w: 1, + h: 1, + x_center: 0.546875, + y_center: 0.390625 + }, + { + w: 1, + h: 1, + x_center: 0.546875, + y_center: 0.390625 + }, + { + w: 1, + h: 1, + x_center: 0.578125, + y_center: 0.390625 + }, + { + w: 1, + h: 1, + x_center: 0.578125, + y_center: 0.390625 + }, + { + w: 1, + h: 1, + x_center: 0.609375, + y_center: 0.390625 + }, + { + w: 1, + h: 1, + x_center: 0.609375, + y_center: 0.390625 + }, + { + w: 1, + h: 1, + x_center: 0.640625, + y_center: 0.390625 + }, + { + w: 1, + h: 1, + x_center: 0.640625, + y_center: 0.390625 + }, + { + w: 1, + h: 1, + x_center: 0.671875, + y_center: 0.390625 + }, + { + w: 1, + h: 1, + x_center: 0.671875, + y_center: 0.390625 + }, + { + w: 1, + h: 1, + x_center: 0.703125, + y_center: 0.390625 + }, + { + w: 1, + h: 1, + x_center: 0.703125, + y_center: 0.390625 + }, + { + w: 1, + h: 1, + x_center: 0.734375, + y_center: 0.390625 + }, + { + w: 1, + h: 1, + x_center: 0.734375, + y_center: 0.390625 + }, + { + w: 1, + h: 1, + x_center: 0.765625, + y_center: 0.390625 + }, + { + w: 1, + h: 1, + x_center: 0.765625, + y_center: 0.390625 + }, + { + w: 1, + h: 1, + x_center: 0.796875, + y_center: 0.390625 + }, + { + w: 1, + h: 1, + x_center: 0.796875, + y_center: 0.390625 + }, + { + w: 1, + h: 1, + x_center: 0.828125, + y_center: 0.390625 + }, + { + w: 1, + h: 1, + x_center: 0.828125, + y_center: 0.390625 + }, + { + w: 1, + h: 1, + x_center: 0.859375, + y_center: 0.390625 + }, + { + w: 1, + h: 1, + x_center: 0.859375, + y_center: 0.390625 + }, + { + w: 1, + h: 1, + x_center: 0.890625, + y_center: 0.390625 + }, + { + w: 1, + h: 1, + x_center: 0.890625, + y_center: 0.390625 + }, + { + w: 1, + h: 1, + x_center: 0.921875, + y_center: 0.390625 + }, + { + w: 1, + h: 1, + x_center: 0.921875, + y_center: 0.390625 + }, + { + w: 1, + h: 1, + x_center: 0.953125, + y_center: 0.390625 + }, + { + w: 1, + h: 1, + x_center: 0.953125, + y_center: 0.390625 + }, + { + w: 1, + h: 1, + x_center: 0.984375, + y_center: 0.390625 + }, + { + w: 1, + h: 1, + x_center: 0.984375, + y_center: 0.390625 + }, + { + w: 1, + h: 1, + x_center: 0.015625, + y_center: 0.421875 + }, + { + w: 1, + h: 1, + x_center: 0.015625, + y_center: 0.421875 + }, + { + w: 1, + h: 1, + x_center: 0.046875, + y_center: 0.421875 + }, + { + w: 1, + h: 1, + x_center: 0.046875, + y_center: 0.421875 + }, + { + w: 1, + h: 1, + x_center: 0.078125, + y_center: 0.421875 + }, + { + w: 1, + h: 1, + x_center: 0.078125, + y_center: 0.421875 + }, + { + w: 1, + h: 1, + x_center: 0.109375, + y_center: 0.421875 + }, + { + w: 1, + h: 1, + x_center: 0.109375, + y_center: 0.421875 + }, + { + w: 1, + h: 1, + x_center: 0.140625, + y_center: 0.421875 + }, + { + w: 1, + h: 1, + x_center: 0.140625, + y_center: 0.421875 + }, + { + w: 1, + h: 1, + x_center: 0.171875, + y_center: 0.421875 + }, + { + w: 1, + h: 1, + x_center: 0.171875, + y_center: 0.421875 + }, + { + w: 1, + h: 1, + x_center: 0.203125, + y_center: 0.421875 + }, + { + w: 1, + h: 1, + x_center: 0.203125, + y_center: 0.421875 + }, + { + w: 1, + h: 1, + x_center: 0.234375, + y_center: 0.421875 + }, + { + w: 1, + h: 1, + x_center: 0.234375, + y_center: 0.421875 + }, + { + w: 1, + h: 1, + x_center: 0.265625, + y_center: 0.421875 + }, + { + w: 1, + h: 1, + x_center: 0.265625, + y_center: 0.421875 + }, + { + w: 1, + h: 1, + x_center: 0.296875, + y_center: 0.421875 + }, + { + w: 1, + h: 1, + x_center: 0.296875, + y_center: 0.421875 + }, + { + w: 1, + h: 1, + x_center: 0.328125, + y_center: 0.421875 + }, + { + w: 1, + h: 1, + x_center: 0.328125, + y_center: 0.421875 + }, + { + w: 1, + h: 1, + x_center: 0.359375, + y_center: 0.421875 + }, + { + w: 1, + h: 1, + x_center: 0.359375, + y_center: 0.421875 + }, + { + w: 1, + h: 1, + x_center: 0.390625, + y_center: 0.421875 + }, + { + w: 1, + h: 1, + x_center: 0.390625, + y_center: 0.421875 + }, + { + w: 1, + h: 1, + x_center: 0.421875, + y_center: 0.421875 + }, + { + w: 1, + h: 1, + x_center: 0.421875, + y_center: 0.421875 + }, + { + w: 1, + h: 1, + x_center: 0.453125, + y_center: 0.421875 + }, + { + w: 1, + h: 1, + x_center: 0.453125, + y_center: 0.421875 + }, + { + w: 1, + h: 1, + x_center: 0.484375, + y_center: 0.421875 + }, + { + w: 1, + h: 1, + x_center: 0.484375, + y_center: 0.421875 + }, + { + w: 1, + h: 1, + x_center: 0.515625, + y_center: 0.421875 + }, + { + w: 1, + h: 1, + x_center: 0.515625, + y_center: 0.421875 + }, + { + w: 1, + h: 1, + x_center: 0.546875, + y_center: 0.421875 + }, + { + w: 1, + h: 1, + x_center: 0.546875, + y_center: 0.421875 + }, + { + w: 1, + h: 1, + x_center: 0.578125, + y_center: 0.421875 + }, + { + w: 1, + h: 1, + x_center: 0.578125, + y_center: 0.421875 + }, + { + w: 1, + h: 1, + x_center: 0.609375, + y_center: 0.421875 + }, + { + w: 1, + h: 1, + x_center: 0.609375, + y_center: 0.421875 + }, + { + w: 1, + h: 1, + x_center: 0.640625, + y_center: 0.421875 + }, + { + w: 1, + h: 1, + x_center: 0.640625, + y_center: 0.421875 + }, + { + w: 1, + h: 1, + x_center: 0.671875, + y_center: 0.421875 + }, + { + w: 1, + h: 1, + x_center: 0.671875, + y_center: 0.421875 + }, + { + w: 1, + h: 1, + x_center: 0.703125, + y_center: 0.421875 + }, + { + w: 1, + h: 1, + x_center: 0.703125, + y_center: 0.421875 + }, + { + w: 1, + h: 1, + x_center: 0.734375, + y_center: 0.421875 + }, + { + w: 1, + h: 1, + x_center: 0.734375, + y_center: 0.421875 + }, + { + w: 1, + h: 1, + x_center: 0.765625, + y_center: 0.421875 + }, + { + w: 1, + h: 1, + x_center: 0.765625, + y_center: 0.421875 + }, + { + w: 1, + h: 1, + x_center: 0.796875, + y_center: 0.421875 + }, + { + w: 1, + h: 1, + x_center: 0.796875, + y_center: 0.421875 + }, + { + w: 1, + h: 1, + x_center: 0.828125, + y_center: 0.421875 + }, + { + w: 1, + h: 1, + x_center: 0.828125, + y_center: 0.421875 + }, + { + w: 1, + h: 1, + x_center: 0.859375, + y_center: 0.421875 + }, + { + w: 1, + h: 1, + x_center: 0.859375, + y_center: 0.421875 + }, + { + w: 1, + h: 1, + x_center: 0.890625, + y_center: 0.421875 + }, + { + w: 1, + h: 1, + x_center: 0.890625, + y_center: 0.421875 + }, + { + w: 1, + h: 1, + x_center: 0.921875, + y_center: 0.421875 + }, + { + w: 1, + h: 1, + x_center: 0.921875, + y_center: 0.421875 + }, + { + w: 1, + h: 1, + x_center: 0.953125, + y_center: 0.421875 + }, + { + w: 1, + h: 1, + x_center: 0.953125, + y_center: 0.421875 + }, + { + w: 1, + h: 1, + x_center: 0.984375, + y_center: 0.421875 + }, + { + w: 1, + h: 1, + x_center: 0.984375, + y_center: 0.421875 + }, + { + w: 1, + h: 1, + x_center: 0.015625, + y_center: 0.453125 + }, + { + w: 1, + h: 1, + x_center: 0.015625, + y_center: 0.453125 + }, + { + w: 1, + h: 1, + x_center: 0.046875, + y_center: 0.453125 + }, + { + w: 1, + h: 1, + x_center: 0.046875, + y_center: 0.453125 + }, + { + w: 1, + h: 1, + x_center: 0.078125, + y_center: 0.453125 + }, + { + w: 1, + h: 1, + x_center: 0.078125, + y_center: 0.453125 + }, + { + w: 1, + h: 1, + x_center: 0.109375, + y_center: 0.453125 + }, + { + w: 1, + h: 1, + x_center: 0.109375, + y_center: 0.453125 + }, + { + w: 1, + h: 1, + x_center: 0.140625, + y_center: 0.453125 + }, + { + w: 1, + h: 1, + x_center: 0.140625, + y_center: 0.453125 + }, + { + w: 1, + h: 1, + x_center: 0.171875, + y_center: 0.453125 + }, + { + w: 1, + h: 1, + x_center: 0.171875, + y_center: 0.453125 + }, + { + w: 1, + h: 1, + x_center: 0.203125, + y_center: 0.453125 + }, + { + w: 1, + h: 1, + x_center: 0.203125, + y_center: 0.453125 + }, + { + w: 1, + h: 1, + x_center: 0.234375, + y_center: 0.453125 + }, + { + w: 1, + h: 1, + x_center: 0.234375, + y_center: 0.453125 + }, + { + w: 1, + h: 1, + x_center: 0.265625, + y_center: 0.453125 + }, + { + w: 1, + h: 1, + x_center: 0.265625, + y_center: 0.453125 + }, + { + w: 1, + h: 1, + x_center: 0.296875, + y_center: 0.453125 + }, + { + w: 1, + h: 1, + x_center: 0.296875, + y_center: 0.453125 + }, + { + w: 1, + h: 1, + x_center: 0.328125, + y_center: 0.453125 + }, + { + w: 1, + h: 1, + x_center: 0.328125, + y_center: 0.453125 + }, + { + w: 1, + h: 1, + x_center: 0.359375, + y_center: 0.453125 + }, + { + w: 1, + h: 1, + x_center: 0.359375, + y_center: 0.453125 + }, + { + w: 1, + h: 1, + x_center: 0.390625, + y_center: 0.453125 + }, + { + w: 1, + h: 1, + x_center: 0.390625, + y_center: 0.453125 + }, + { + w: 1, + h: 1, + x_center: 0.421875, + y_center: 0.453125 + }, + { + w: 1, + h: 1, + x_center: 0.421875, + y_center: 0.453125 + }, + { + w: 1, + h: 1, + x_center: 0.453125, + y_center: 0.453125 + }, + { + w: 1, + h: 1, + x_center: 0.453125, + y_center: 0.453125 + }, + { + w: 1, + h: 1, + x_center: 0.484375, + y_center: 0.453125 + }, + { + w: 1, + h: 1, + x_center: 0.484375, + y_center: 0.453125 + }, + { + w: 1, + h: 1, + x_center: 0.515625, + y_center: 0.453125 + }, + { + w: 1, + h: 1, + x_center: 0.515625, + y_center: 0.453125 + }, + { + w: 1, + h: 1, + x_center: 0.546875, + y_center: 0.453125 + }, + { + w: 1, + h: 1, + x_center: 0.546875, + y_center: 0.453125 + }, + { + w: 1, + h: 1, + x_center: 0.578125, + y_center: 0.453125 + }, + { + w: 1, + h: 1, + x_center: 0.578125, + y_center: 0.453125 + }, + { + w: 1, + h: 1, + x_center: 0.609375, + y_center: 0.453125 + }, + { + w: 1, + h: 1, + x_center: 0.609375, + y_center: 0.453125 + }, + { + w: 1, + h: 1, + x_center: 0.640625, + y_center: 0.453125 + }, + { + w: 1, + h: 1, + x_center: 0.640625, + y_center: 0.453125 + }, + { + w: 1, + h: 1, + x_center: 0.671875, + y_center: 0.453125 + }, + { + w: 1, + h: 1, + x_center: 0.671875, + y_center: 0.453125 + }, + { + w: 1, + h: 1, + x_center: 0.703125, + y_center: 0.453125 + }, + { + w: 1, + h: 1, + x_center: 0.703125, + y_center: 0.453125 + }, + { + w: 1, + h: 1, + x_center: 0.734375, + y_center: 0.453125 + }, + { + w: 1, + h: 1, + x_center: 0.734375, + y_center: 0.453125 + }, + { + w: 1, + h: 1, + x_center: 0.765625, + y_center: 0.453125 + }, + { + w: 1, + h: 1, + x_center: 0.765625, + y_center: 0.453125 + }, + { + w: 1, + h: 1, + x_center: 0.796875, + y_center: 0.453125 + }, + { + w: 1, + h: 1, + x_center: 0.796875, + y_center: 0.453125 + }, + { + w: 1, + h: 1, + x_center: 0.828125, + y_center: 0.453125 + }, + { + w: 1, + h: 1, + x_center: 0.828125, + y_center: 0.453125 + }, + { + w: 1, + h: 1, + x_center: 0.859375, + y_center: 0.453125 + }, + { + w: 1, + h: 1, + x_center: 0.859375, + y_center: 0.453125 + }, + { + w: 1, + h: 1, + x_center: 0.890625, + y_center: 0.453125 + }, + { + w: 1, + h: 1, + x_center: 0.890625, + y_center: 0.453125 + }, + { + w: 1, + h: 1, + x_center: 0.921875, + y_center: 0.453125 + }, + { + w: 1, + h: 1, + x_center: 0.921875, + y_center: 0.453125 + }, + { + w: 1, + h: 1, + x_center: 0.953125, + y_center: 0.453125 + }, + { + w: 1, + h: 1, + x_center: 0.953125, + y_center: 0.453125 + }, + { + w: 1, + h: 1, + x_center: 0.984375, + y_center: 0.453125 + }, + { + w: 1, + h: 1, + x_center: 0.984375, + y_center: 0.453125 + }, + { + w: 1, + h: 1, + x_center: 0.015625, + y_center: 0.484375 + }, + { + w: 1, + h: 1, + x_center: 0.015625, + y_center: 0.484375 + }, + { + w: 1, + h: 1, + x_center: 0.046875, + y_center: 0.484375 + }, + { + w: 1, + h: 1, + x_center: 0.046875, + y_center: 0.484375 + }, + { + w: 1, + h: 1, + x_center: 0.078125, + y_center: 0.484375 + }, + { + w: 1, + h: 1, + x_center: 0.078125, + y_center: 0.484375 + }, + { + w: 1, + h: 1, + x_center: 0.109375, + y_center: 0.484375 + }, + { + w: 1, + h: 1, + x_center: 0.109375, + y_center: 0.484375 + }, + { + w: 1, + h: 1, + x_center: 0.140625, + y_center: 0.484375 + }, + { + w: 1, + h: 1, + x_center: 0.140625, + y_center: 0.484375 + }, + { + w: 1, + h: 1, + x_center: 0.171875, + y_center: 0.484375 + }, + { + w: 1, + h: 1, + x_center: 0.171875, + y_center: 0.484375 + }, + { + w: 1, + h: 1, + x_center: 0.203125, + y_center: 0.484375 + }, + { + w: 1, + h: 1, + x_center: 0.203125, + y_center: 0.484375 + }, + { + w: 1, + h: 1, + x_center: 0.234375, + y_center: 0.484375 + }, + { + w: 1, + h: 1, + x_center: 0.234375, + y_center: 0.484375 + }, + { + w: 1, + h: 1, + x_center: 0.265625, + y_center: 0.484375 + }, + { + w: 1, + h: 1, + x_center: 0.265625, + y_center: 0.484375 + }, + { + w: 1, + h: 1, + x_center: 0.296875, + y_center: 0.484375 + }, + { + w: 1, + h: 1, + x_center: 0.296875, + y_center: 0.484375 + }, + { + w: 1, + h: 1, + x_center: 0.328125, + y_center: 0.484375 + }, + { + w: 1, + h: 1, + x_center: 0.328125, + y_center: 0.484375 + }, + { + w: 1, + h: 1, + x_center: 0.359375, + y_center: 0.484375 + }, + { + w: 1, + h: 1, + x_center: 0.359375, + y_center: 0.484375 + }, + { + w: 1, + h: 1, + x_center: 0.390625, + y_center: 0.484375 + }, + { + w: 1, + h: 1, + x_center: 0.390625, + y_center: 0.484375 + }, + { + w: 1, + h: 1, + x_center: 0.421875, + y_center: 0.484375 + }, + { + w: 1, + h: 1, + x_center: 0.421875, + y_center: 0.484375 + }, + { + w: 1, + h: 1, + x_center: 0.453125, + y_center: 0.484375 + }, + { + w: 1, + h: 1, + x_center: 0.453125, + y_center: 0.484375 + }, + { + w: 1, + h: 1, + x_center: 0.484375, + y_center: 0.484375 + }, + { + w: 1, + h: 1, + x_center: 0.484375, + y_center: 0.484375 + }, + { + w: 1, + h: 1, + x_center: 0.515625, + y_center: 0.484375 + }, + { + w: 1, + h: 1, + x_center: 0.515625, + y_center: 0.484375 + }, + { + w: 1, + h: 1, + x_center: 0.546875, + y_center: 0.484375 + }, + { + w: 1, + h: 1, + x_center: 0.546875, + y_center: 0.484375 + }, + { + w: 1, + h: 1, + x_center: 0.578125, + y_center: 0.484375 + }, + { + w: 1, + h: 1, + x_center: 0.578125, + y_center: 0.484375 + }, + { + w: 1, + h: 1, + x_center: 0.609375, + y_center: 0.484375 + }, + { + w: 1, + h: 1, + x_center: 0.609375, + y_center: 0.484375 + }, + { + w: 1, + h: 1, + x_center: 0.640625, + y_center: 0.484375 + }, + { + w: 1, + h: 1, + x_center: 0.640625, + y_center: 0.484375 + }, + { + w: 1, + h: 1, + x_center: 0.671875, + y_center: 0.484375 + }, + { + w: 1, + h: 1, + x_center: 0.671875, + y_center: 0.484375 + }, + { + w: 1, + h: 1, + x_center: 0.703125, + y_center: 0.484375 + }, + { + w: 1, + h: 1, + x_center: 0.703125, + y_center: 0.484375 + }, + { + w: 1, + h: 1, + x_center: 0.734375, + y_center: 0.484375 + }, + { + w: 1, + h: 1, + x_center: 0.734375, + y_center: 0.484375 + }, + { + w: 1, + h: 1, + x_center: 0.765625, + y_center: 0.484375 + }, + { + w: 1, + h: 1, + x_center: 0.765625, + y_center: 0.484375 + }, + { + w: 1, + h: 1, + x_center: 0.796875, + y_center: 0.484375 + }, + { + w: 1, + h: 1, + x_center: 0.796875, + y_center: 0.484375 + }, + { + w: 1, + h: 1, + x_center: 0.828125, + y_center: 0.484375 + }, + { + w: 1, + h: 1, + x_center: 0.828125, + y_center: 0.484375 + }, + { + w: 1, + h: 1, + x_center: 0.859375, + y_center: 0.484375 + }, + { + w: 1, + h: 1, + x_center: 0.859375, + y_center: 0.484375 + }, + { + w: 1, + h: 1, + x_center: 0.890625, + y_center: 0.484375 + }, + { + w: 1, + h: 1, + x_center: 0.890625, + y_center: 0.484375 + }, + { + w: 1, + h: 1, + x_center: 0.921875, + y_center: 0.484375 + }, + { + w: 1, + h: 1, + x_center: 0.921875, + y_center: 0.484375 + }, + { + w: 1, + h: 1, + x_center: 0.953125, + y_center: 0.484375 + }, + { + w: 1, + h: 1, + x_center: 0.953125, + y_center: 0.484375 + }, + { + w: 1, + h: 1, + x_center: 0.984375, + y_center: 0.484375 + }, + { + w: 1, + h: 1, + x_center: 0.984375, + y_center: 0.484375 + }, + { + w: 1, + h: 1, + x_center: 0.015625, + y_center: 0.515625 + }, + { + w: 1, + h: 1, + x_center: 0.015625, + y_center: 0.515625 + }, + { + w: 1, + h: 1, + x_center: 0.046875, + y_center: 0.515625 + }, + { + w: 1, + h: 1, + x_center: 0.046875, + y_center: 0.515625 + }, + { + w: 1, + h: 1, + x_center: 0.078125, + y_center: 0.515625 + }, + { + w: 1, + h: 1, + x_center: 0.078125, + y_center: 0.515625 + }, + { + w: 1, + h: 1, + x_center: 0.109375, + y_center: 0.515625 + }, + { + w: 1, + h: 1, + x_center: 0.109375, + y_center: 0.515625 + }, + { + w: 1, + h: 1, + x_center: 0.140625, + y_center: 0.515625 + }, + { + w: 1, + h: 1, + x_center: 0.140625, + y_center: 0.515625 + }, + { + w: 1, + h: 1, + x_center: 0.171875, + y_center: 0.515625 + }, + { + w: 1, + h: 1, + x_center: 0.171875, + y_center: 0.515625 + }, + { + w: 1, + h: 1, + x_center: 0.203125, + y_center: 0.515625 + }, + { + w: 1, + h: 1, + x_center: 0.203125, + y_center: 0.515625 + }, + { + w: 1, + h: 1, + x_center: 0.234375, + y_center: 0.515625 + }, + { + w: 1, + h: 1, + x_center: 0.234375, + y_center: 0.515625 + }, + { + w: 1, + h: 1, + x_center: 0.265625, + y_center: 0.515625 + }, + { + w: 1, + h: 1, + x_center: 0.265625, + y_center: 0.515625 + }, + { + w: 1, + h: 1, + x_center: 0.296875, + y_center: 0.515625 + }, + { + w: 1, + h: 1, + x_center: 0.296875, + y_center: 0.515625 + }, + { + w: 1, + h: 1, + x_center: 0.328125, + y_center: 0.515625 + }, + { + w: 1, + h: 1, + x_center: 0.328125, + y_center: 0.515625 + }, + { + w: 1, + h: 1, + x_center: 0.359375, + y_center: 0.515625 + }, + { + w: 1, + h: 1, + x_center: 0.359375, + y_center: 0.515625 + }, + { + w: 1, + h: 1, + x_center: 0.390625, + y_center: 0.515625 + }, + { + w: 1, + h: 1, + x_center: 0.390625, + y_center: 0.515625 + }, + { + w: 1, + h: 1, + x_center: 0.421875, + y_center: 0.515625 + }, + { + w: 1, + h: 1, + x_center: 0.421875, + y_center: 0.515625 + }, + { + w: 1, + h: 1, + x_center: 0.453125, + y_center: 0.515625 + }, + { + w: 1, + h: 1, + x_center: 0.453125, + y_center: 0.515625 + }, + { + w: 1, + h: 1, + x_center: 0.484375, + y_center: 0.515625 + }, + { + w: 1, + h: 1, + x_center: 0.484375, + y_center: 0.515625 + }, + { + w: 1, + h: 1, + x_center: 0.515625, + y_center: 0.515625 + }, + { + w: 1, + h: 1, + x_center: 0.515625, + y_center: 0.515625 + }, + { + w: 1, + h: 1, + x_center: 0.546875, + y_center: 0.515625 + }, + { + w: 1, + h: 1, + x_center: 0.546875, + y_center: 0.515625 + }, + { + w: 1, + h: 1, + x_center: 0.578125, + y_center: 0.515625 + }, + { + w: 1, + h: 1, + x_center: 0.578125, + y_center: 0.515625 + }, + { + w: 1, + h: 1, + x_center: 0.609375, + y_center: 0.515625 + }, + { + w: 1, + h: 1, + x_center: 0.609375, + y_center: 0.515625 + }, + { + w: 1, + h: 1, + x_center: 0.640625, + y_center: 0.515625 + }, + { + w: 1, + h: 1, + x_center: 0.640625, + y_center: 0.515625 + }, + { + w: 1, + h: 1, + x_center: 0.671875, + y_center: 0.515625 + }, + { + w: 1, + h: 1, + x_center: 0.671875, + y_center: 0.515625 + }, + { + w: 1, + h: 1, + x_center: 0.703125, + y_center: 0.515625 + }, + { + w: 1, + h: 1, + x_center: 0.703125, + y_center: 0.515625 + }, + { + w: 1, + h: 1, + x_center: 0.734375, + y_center: 0.515625 + }, + { + w: 1, + h: 1, + x_center: 0.734375, + y_center: 0.515625 + }, + { + w: 1, + h: 1, + x_center: 0.765625, + y_center: 0.515625 + }, + { + w: 1, + h: 1, + x_center: 0.765625, + y_center: 0.515625 + }, + { + w: 1, + h: 1, + x_center: 0.796875, + y_center: 0.515625 + }, + { + w: 1, + h: 1, + x_center: 0.796875, + y_center: 0.515625 + }, + { + w: 1, + h: 1, + x_center: 0.828125, + y_center: 0.515625 + }, + { + w: 1, + h: 1, + x_center: 0.828125, + y_center: 0.515625 + }, + { + w: 1, + h: 1, + x_center: 0.859375, + y_center: 0.515625 + }, + { + w: 1, + h: 1, + x_center: 0.859375, + y_center: 0.515625 + }, + { + w: 1, + h: 1, + x_center: 0.890625, + y_center: 0.515625 + }, + { + w: 1, + h: 1, + x_center: 0.890625, + y_center: 0.515625 + }, + { + w: 1, + h: 1, + x_center: 0.921875, + y_center: 0.515625 + }, + { + w: 1, + h: 1, + x_center: 0.921875, + y_center: 0.515625 + }, + { + w: 1, + h: 1, + x_center: 0.953125, + y_center: 0.515625 + }, + { + w: 1, + h: 1, + x_center: 0.953125, + y_center: 0.515625 + }, + { + w: 1, + h: 1, + x_center: 0.984375, + y_center: 0.515625 + }, + { + w: 1, + h: 1, + x_center: 0.984375, + y_center: 0.515625 + }, + { + w: 1, + h: 1, + x_center: 0.015625, + y_center: 0.546875 + }, + { + w: 1, + h: 1, + x_center: 0.015625, + y_center: 0.546875 + }, + { + w: 1, + h: 1, + x_center: 0.046875, + y_center: 0.546875 + }, + { + w: 1, + h: 1, + x_center: 0.046875, + y_center: 0.546875 + }, + { + w: 1, + h: 1, + x_center: 0.078125, + y_center: 0.546875 + }, + { + w: 1, + h: 1, + x_center: 0.078125, + y_center: 0.546875 + }, + { + w: 1, + h: 1, + x_center: 0.109375, + y_center: 0.546875 + }, + { + w: 1, + h: 1, + x_center: 0.109375, + y_center: 0.546875 + }, + { + w: 1, + h: 1, + x_center: 0.140625, + y_center: 0.546875 + }, + { + w: 1, + h: 1, + x_center: 0.140625, + y_center: 0.546875 + }, + { + w: 1, + h: 1, + x_center: 0.171875, + y_center: 0.546875 + }, + { + w: 1, + h: 1, + x_center: 0.171875, + y_center: 0.546875 + }, + { + w: 1, + h: 1, + x_center: 0.203125, + y_center: 0.546875 + }, + { + w: 1, + h: 1, + x_center: 0.203125, + y_center: 0.546875 + }, + { + w: 1, + h: 1, + x_center: 0.234375, + y_center: 0.546875 + }, + { + w: 1, + h: 1, + x_center: 0.234375, + y_center: 0.546875 + }, + { + w: 1, + h: 1, + x_center: 0.265625, + y_center: 0.546875 + }, + { + w: 1, + h: 1, + x_center: 0.265625, + y_center: 0.546875 + }, + { + w: 1, + h: 1, + x_center: 0.296875, + y_center: 0.546875 + }, + { + w: 1, + h: 1, + x_center: 0.296875, + y_center: 0.546875 + }, + { + w: 1, + h: 1, + x_center: 0.328125, + y_center: 0.546875 + }, + { + w: 1, + h: 1, + x_center: 0.328125, + y_center: 0.546875 + }, + { + w: 1, + h: 1, + x_center: 0.359375, + y_center: 0.546875 + }, + { + w: 1, + h: 1, + x_center: 0.359375, + y_center: 0.546875 + }, + { + w: 1, + h: 1, + x_center: 0.390625, + y_center: 0.546875 + }, + { + w: 1, + h: 1, + x_center: 0.390625, + y_center: 0.546875 + }, + { + w: 1, + h: 1, + x_center: 0.421875, + y_center: 0.546875 + }, + { + w: 1, + h: 1, + x_center: 0.421875, + y_center: 0.546875 + }, + { + w: 1, + h: 1, + x_center: 0.453125, + y_center: 0.546875 + }, + { + w: 1, + h: 1, + x_center: 0.453125, + y_center: 0.546875 + }, + { + w: 1, + h: 1, + x_center: 0.484375, + y_center: 0.546875 + }, + { + w: 1, + h: 1, + x_center: 0.484375, + y_center: 0.546875 + }, + { + w: 1, + h: 1, + x_center: 0.515625, + y_center: 0.546875 + }, + { + w: 1, + h: 1, + x_center: 0.515625, + y_center: 0.546875 + }, + { + w: 1, + h: 1, + x_center: 0.546875, + y_center: 0.546875 + }, + { + w: 1, + h: 1, + x_center: 0.546875, + y_center: 0.546875 + }, + { + w: 1, + h: 1, + x_center: 0.578125, + y_center: 0.546875 + }, + { + w: 1, + h: 1, + x_center: 0.578125, + y_center: 0.546875 + }, + { + w: 1, + h: 1, + x_center: 0.609375, + y_center: 0.546875 + }, + { + w: 1, + h: 1, + x_center: 0.609375, + y_center: 0.546875 + }, + { + w: 1, + h: 1, + x_center: 0.640625, + y_center: 0.546875 + }, + { + w: 1, + h: 1, + x_center: 0.640625, + y_center: 0.546875 + }, + { + w: 1, + h: 1, + x_center: 0.671875, + y_center: 0.546875 + }, + { + w: 1, + h: 1, + x_center: 0.671875, + y_center: 0.546875 + }, + { + w: 1, + h: 1, + x_center: 0.703125, + y_center: 0.546875 + }, + { + w: 1, + h: 1, + x_center: 0.703125, + y_center: 0.546875 + }, + { + w: 1, + h: 1, + x_center: 0.734375, + y_center: 0.546875 + }, + { + w: 1, + h: 1, + x_center: 0.734375, + y_center: 0.546875 + }, + { + w: 1, + h: 1, + x_center: 0.765625, + y_center: 0.546875 + }, + { + w: 1, + h: 1, + x_center: 0.765625, + y_center: 0.546875 + }, + { + w: 1, + h: 1, + x_center: 0.796875, + y_center: 0.546875 + }, + { + w: 1, + h: 1, + x_center: 0.796875, + y_center: 0.546875 + }, + { + w: 1, + h: 1, + x_center: 0.828125, + y_center: 0.546875 + }, + { + w: 1, + h: 1, + x_center: 0.828125, + y_center: 0.546875 + }, + { + w: 1, + h: 1, + x_center: 0.859375, + y_center: 0.546875 + }, + { + w: 1, + h: 1, + x_center: 0.859375, + y_center: 0.546875 + }, + { + w: 1, + h: 1, + x_center: 0.890625, + y_center: 0.546875 + }, + { + w: 1, + h: 1, + x_center: 0.890625, + y_center: 0.546875 + }, + { + w: 1, + h: 1, + x_center: 0.921875, + y_center: 0.546875 + }, + { + w: 1, + h: 1, + x_center: 0.921875, + y_center: 0.546875 + }, + { + w: 1, + h: 1, + x_center: 0.953125, + y_center: 0.546875 + }, + { + w: 1, + h: 1, + x_center: 0.953125, + y_center: 0.546875 + }, + { + w: 1, + h: 1, + x_center: 0.984375, + y_center: 0.546875 + }, + { + w: 1, + h: 1, + x_center: 0.984375, + y_center: 0.546875 + }, + { + w: 1, + h: 1, + x_center: 0.015625, + y_center: 0.578125 + }, + { + w: 1, + h: 1, + x_center: 0.015625, + y_center: 0.578125 + }, + { + w: 1, + h: 1, + x_center: 0.046875, + y_center: 0.578125 + }, + { + w: 1, + h: 1, + x_center: 0.046875, + y_center: 0.578125 + }, + { + w: 1, + h: 1, + x_center: 0.078125, + y_center: 0.578125 + }, + { + w: 1, + h: 1, + x_center: 0.078125, + y_center: 0.578125 + }, + { + w: 1, + h: 1, + x_center: 0.109375, + y_center: 0.578125 + }, + { + w: 1, + h: 1, + x_center: 0.109375, + y_center: 0.578125 + }, + { + w: 1, + h: 1, + x_center: 0.140625, + y_center: 0.578125 + }, + { + w: 1, + h: 1, + x_center: 0.140625, + y_center: 0.578125 + }, + { + w: 1, + h: 1, + x_center: 0.171875, + y_center: 0.578125 + }, + { + w: 1, + h: 1, + x_center: 0.171875, + y_center: 0.578125 + }, + { + w: 1, + h: 1, + x_center: 0.203125, + y_center: 0.578125 + }, + { + w: 1, + h: 1, + x_center: 0.203125, + y_center: 0.578125 + }, + { + w: 1, + h: 1, + x_center: 0.234375, + y_center: 0.578125 + }, + { + w: 1, + h: 1, + x_center: 0.234375, + y_center: 0.578125 + }, + { + w: 1, + h: 1, + x_center: 0.265625, + y_center: 0.578125 + }, + { + w: 1, + h: 1, + x_center: 0.265625, + y_center: 0.578125 + }, + { + w: 1, + h: 1, + x_center: 0.296875, + y_center: 0.578125 + }, + { + w: 1, + h: 1, + x_center: 0.296875, + y_center: 0.578125 + }, + { + w: 1, + h: 1, + x_center: 0.328125, + y_center: 0.578125 + }, + { + w: 1, + h: 1, + x_center: 0.328125, + y_center: 0.578125 + }, + { + w: 1, + h: 1, + x_center: 0.359375, + y_center: 0.578125 + }, + { + w: 1, + h: 1, + x_center: 0.359375, + y_center: 0.578125 + }, + { + w: 1, + h: 1, + x_center: 0.390625, + y_center: 0.578125 + }, + { + w: 1, + h: 1, + x_center: 0.390625, + y_center: 0.578125 + }, + { + w: 1, + h: 1, + x_center: 0.421875, + y_center: 0.578125 + }, + { + w: 1, + h: 1, + x_center: 0.421875, + y_center: 0.578125 + }, + { + w: 1, + h: 1, + x_center: 0.453125, + y_center: 0.578125 + }, + { + w: 1, + h: 1, + x_center: 0.453125, + y_center: 0.578125 + }, + { + w: 1, + h: 1, + x_center: 0.484375, + y_center: 0.578125 + }, + { + w: 1, + h: 1, + x_center: 0.484375, + y_center: 0.578125 + }, + { + w: 1, + h: 1, + x_center: 0.515625, + y_center: 0.578125 + }, + { + w: 1, + h: 1, + x_center: 0.515625, + y_center: 0.578125 + }, + { + w: 1, + h: 1, + x_center: 0.546875, + y_center: 0.578125 + }, + { + w: 1, + h: 1, + x_center: 0.546875, + y_center: 0.578125 + }, + { + w: 1, + h: 1, + x_center: 0.578125, + y_center: 0.578125 + }, + { + w: 1, + h: 1, + x_center: 0.578125, + y_center: 0.578125 + }, + { + w: 1, + h: 1, + x_center: 0.609375, + y_center: 0.578125 + }, + { + w: 1, + h: 1, + x_center: 0.609375, + y_center: 0.578125 + }, + { + w: 1, + h: 1, + x_center: 0.640625, + y_center: 0.578125 + }, + { + w: 1, + h: 1, + x_center: 0.640625, + y_center: 0.578125 + }, + { + w: 1, + h: 1, + x_center: 0.671875, + y_center: 0.578125 + }, + { + w: 1, + h: 1, + x_center: 0.671875, + y_center: 0.578125 + }, + { + w: 1, + h: 1, + x_center: 0.703125, + y_center: 0.578125 + }, + { + w: 1, + h: 1, + x_center: 0.703125, + y_center: 0.578125 + }, + { + w: 1, + h: 1, + x_center: 0.734375, + y_center: 0.578125 + }, + { + w: 1, + h: 1, + x_center: 0.734375, + y_center: 0.578125 + }, + { + w: 1, + h: 1, + x_center: 0.765625, + y_center: 0.578125 + }, + { + w: 1, + h: 1, + x_center: 0.765625, + y_center: 0.578125 + }, + { + w: 1, + h: 1, + x_center: 0.796875, + y_center: 0.578125 + }, + { + w: 1, + h: 1, + x_center: 0.796875, + y_center: 0.578125 + }, + { + w: 1, + h: 1, + x_center: 0.828125, + y_center: 0.578125 + }, + { + w: 1, + h: 1, + x_center: 0.828125, + y_center: 0.578125 + }, + { + w: 1, + h: 1, + x_center: 0.859375, + y_center: 0.578125 + }, + { + w: 1, + h: 1, + x_center: 0.859375, + y_center: 0.578125 + }, + { + w: 1, + h: 1, + x_center: 0.890625, + y_center: 0.578125 + }, + { + w: 1, + h: 1, + x_center: 0.890625, + y_center: 0.578125 + }, + { + w: 1, + h: 1, + x_center: 0.921875, + y_center: 0.578125 + }, + { + w: 1, + h: 1, + x_center: 0.921875, + y_center: 0.578125 + }, + { + w: 1, + h: 1, + x_center: 0.953125, + y_center: 0.578125 + }, + { + w: 1, + h: 1, + x_center: 0.953125, + y_center: 0.578125 + }, + { + w: 1, + h: 1, + x_center: 0.984375, + y_center: 0.578125 + }, + { + w: 1, + h: 1, + x_center: 0.984375, + y_center: 0.578125 + }, + { + w: 1, + h: 1, + x_center: 0.015625, + y_center: 0.609375 + }, + { + w: 1, + h: 1, + x_center: 0.015625, + y_center: 0.609375 + }, + { + w: 1, + h: 1, + x_center: 0.046875, + y_center: 0.609375 + }, + { + w: 1, + h: 1, + x_center: 0.046875, + y_center: 0.609375 + }, + { + w: 1, + h: 1, + x_center: 0.078125, + y_center: 0.609375 + }, + { + w: 1, + h: 1, + x_center: 0.078125, + y_center: 0.609375 + }, + { + w: 1, + h: 1, + x_center: 0.109375, + y_center: 0.609375 + }, + { + w: 1, + h: 1, + x_center: 0.109375, + y_center: 0.609375 + }, + { + w: 1, + h: 1, + x_center: 0.140625, + y_center: 0.609375 + }, + { + w: 1, + h: 1, + x_center: 0.140625, + y_center: 0.609375 + }, + { + w: 1, + h: 1, + x_center: 0.171875, + y_center: 0.609375 + }, + { + w: 1, + h: 1, + x_center: 0.171875, + y_center: 0.609375 + }, + { + w: 1, + h: 1, + x_center: 0.203125, + y_center: 0.609375 + }, + { + w: 1, + h: 1, + x_center: 0.203125, + y_center: 0.609375 + }, + { + w: 1, + h: 1, + x_center: 0.234375, + y_center: 0.609375 + }, + { + w: 1, + h: 1, + x_center: 0.234375, + y_center: 0.609375 + }, + { + w: 1, + h: 1, + x_center: 0.265625, + y_center: 0.609375 + }, + { + w: 1, + h: 1, + x_center: 0.265625, + y_center: 0.609375 + }, + { + w: 1, + h: 1, + x_center: 0.296875, + y_center: 0.609375 + }, + { + w: 1, + h: 1, + x_center: 0.296875, + y_center: 0.609375 + }, + { + w: 1, + h: 1, + x_center: 0.328125, + y_center: 0.609375 + }, + { + w: 1, + h: 1, + x_center: 0.328125, + y_center: 0.609375 + }, + { + w: 1, + h: 1, + x_center: 0.359375, + y_center: 0.609375 + }, + { + w: 1, + h: 1, + x_center: 0.359375, + y_center: 0.609375 + }, + { + w: 1, + h: 1, + x_center: 0.390625, + y_center: 0.609375 + }, + { + w: 1, + h: 1, + x_center: 0.390625, + y_center: 0.609375 + }, + { + w: 1, + h: 1, + x_center: 0.421875, + y_center: 0.609375 + }, + { + w: 1, + h: 1, + x_center: 0.421875, + y_center: 0.609375 + }, + { + w: 1, + h: 1, + x_center: 0.453125, + y_center: 0.609375 + }, + { + w: 1, + h: 1, + x_center: 0.453125, + y_center: 0.609375 + }, + { + w: 1, + h: 1, + x_center: 0.484375, + y_center: 0.609375 + }, + { + w: 1, + h: 1, + x_center: 0.484375, + y_center: 0.609375 + }, + { + w: 1, + h: 1, + x_center: 0.515625, + y_center: 0.609375 + }, + { + w: 1, + h: 1, + x_center: 0.515625, + y_center: 0.609375 + }, + { + w: 1, + h: 1, + x_center: 0.546875, + y_center: 0.609375 + }, + { + w: 1, + h: 1, + x_center: 0.546875, + y_center: 0.609375 + }, + { + w: 1, + h: 1, + x_center: 0.578125, + y_center: 0.609375 + }, + { + w: 1, + h: 1, + x_center: 0.578125, + y_center: 0.609375 + }, + { + w: 1, + h: 1, + x_center: 0.609375, + y_center: 0.609375 + }, + { + w: 1, + h: 1, + x_center: 0.609375, + y_center: 0.609375 + }, + { + w: 1, + h: 1, + x_center: 0.640625, + y_center: 0.609375 + }, + { + w: 1, + h: 1, + x_center: 0.640625, + y_center: 0.609375 + }, + { + w: 1, + h: 1, + x_center: 0.671875, + y_center: 0.609375 + }, + { + w: 1, + h: 1, + x_center: 0.671875, + y_center: 0.609375 + }, + { + w: 1, + h: 1, + x_center: 0.703125, + y_center: 0.609375 + }, + { + w: 1, + h: 1, + x_center: 0.703125, + y_center: 0.609375 + }, + { + w: 1, + h: 1, + x_center: 0.734375, + y_center: 0.609375 + }, + { + w: 1, + h: 1, + x_center: 0.734375, + y_center: 0.609375 + }, + { + w: 1, + h: 1, + x_center: 0.765625, + y_center: 0.609375 + }, + { + w: 1, + h: 1, + x_center: 0.765625, + y_center: 0.609375 + }, + { + w: 1, + h: 1, + x_center: 0.796875, + y_center: 0.609375 + }, + { + w: 1, + h: 1, + x_center: 0.796875, + y_center: 0.609375 + }, + { + w: 1, + h: 1, + x_center: 0.828125, + y_center: 0.609375 + }, + { + w: 1, + h: 1, + x_center: 0.828125, + y_center: 0.609375 + }, + { + w: 1, + h: 1, + x_center: 0.859375, + y_center: 0.609375 + }, + { + w: 1, + h: 1, + x_center: 0.859375, + y_center: 0.609375 + }, + { + w: 1, + h: 1, + x_center: 0.890625, + y_center: 0.609375 + }, + { + w: 1, + h: 1, + x_center: 0.890625, + y_center: 0.609375 + }, + { + w: 1, + h: 1, + x_center: 0.921875, + y_center: 0.609375 + }, + { + w: 1, + h: 1, + x_center: 0.921875, + y_center: 0.609375 + }, + { + w: 1, + h: 1, + x_center: 0.953125, + y_center: 0.609375 + }, + { + w: 1, + h: 1, + x_center: 0.953125, + y_center: 0.609375 + }, + { + w: 1, + h: 1, + x_center: 0.984375, + y_center: 0.609375 + }, + { + w: 1, + h: 1, + x_center: 0.984375, + y_center: 0.609375 + }, + { + w: 1, + h: 1, + x_center: 0.015625, + y_center: 0.640625 + }, + { + w: 1, + h: 1, + x_center: 0.015625, + y_center: 0.640625 + }, + { + w: 1, + h: 1, + x_center: 0.046875, + y_center: 0.640625 + }, + { + w: 1, + h: 1, + x_center: 0.046875, + y_center: 0.640625 + }, + { + w: 1, + h: 1, + x_center: 0.078125, + y_center: 0.640625 + }, + { + w: 1, + h: 1, + x_center: 0.078125, + y_center: 0.640625 + }, + { + w: 1, + h: 1, + x_center: 0.109375, + y_center: 0.640625 + }, + { + w: 1, + h: 1, + x_center: 0.109375, + y_center: 0.640625 + }, + { + w: 1, + h: 1, + x_center: 0.140625, + y_center: 0.640625 + }, + { + w: 1, + h: 1, + x_center: 0.140625, + y_center: 0.640625 + }, + { + w: 1, + h: 1, + x_center: 0.171875, + y_center: 0.640625 + }, + { + w: 1, + h: 1, + x_center: 0.171875, + y_center: 0.640625 + }, + { + w: 1, + h: 1, + x_center: 0.203125, + y_center: 0.640625 + }, + { + w: 1, + h: 1, + x_center: 0.203125, + y_center: 0.640625 + }, + { + w: 1, + h: 1, + x_center: 0.234375, + y_center: 0.640625 + }, + { + w: 1, + h: 1, + x_center: 0.234375, + y_center: 0.640625 + }, + { + w: 1, + h: 1, + x_center: 0.265625, + y_center: 0.640625 + }, + { + w: 1, + h: 1, + x_center: 0.265625, + y_center: 0.640625 + }, + { + w: 1, + h: 1, + x_center: 0.296875, + y_center: 0.640625 + }, + { + w: 1, + h: 1, + x_center: 0.296875, + y_center: 0.640625 + }, + { + w: 1, + h: 1, + x_center: 0.328125, + y_center: 0.640625 + }, + { + w: 1, + h: 1, + x_center: 0.328125, + y_center: 0.640625 + }, + { + w: 1, + h: 1, + x_center: 0.359375, + y_center: 0.640625 + }, + { + w: 1, + h: 1, + x_center: 0.359375, + y_center: 0.640625 + }, + { + w: 1, + h: 1, + x_center: 0.390625, + y_center: 0.640625 + }, + { + w: 1, + h: 1, + x_center: 0.390625, + y_center: 0.640625 + }, + { + w: 1, + h: 1, + x_center: 0.421875, + y_center: 0.640625 + }, + { + w: 1, + h: 1, + x_center: 0.421875, + y_center: 0.640625 + }, + { + w: 1, + h: 1, + x_center: 0.453125, + y_center: 0.640625 + }, + { + w: 1, + h: 1, + x_center: 0.453125, + y_center: 0.640625 + }, + { + w: 1, + h: 1, + x_center: 0.484375, + y_center: 0.640625 + }, + { + w: 1, + h: 1, + x_center: 0.484375, + y_center: 0.640625 + }, + { + w: 1, + h: 1, + x_center: 0.515625, + y_center: 0.640625 + }, + { + w: 1, + h: 1, + x_center: 0.515625, + y_center: 0.640625 + }, + { + w: 1, + h: 1, + x_center: 0.546875, + y_center: 0.640625 + }, + { + w: 1, + h: 1, + x_center: 0.546875, + y_center: 0.640625 + }, + { + w: 1, + h: 1, + x_center: 0.578125, + y_center: 0.640625 + }, + { + w: 1, + h: 1, + x_center: 0.578125, + y_center: 0.640625 + }, + { + w: 1, + h: 1, + x_center: 0.609375, + y_center: 0.640625 + }, + { + w: 1, + h: 1, + x_center: 0.609375, + y_center: 0.640625 + }, + { + w: 1, + h: 1, + x_center: 0.640625, + y_center: 0.640625 + }, + { + w: 1, + h: 1, + x_center: 0.640625, + y_center: 0.640625 + }, + { + w: 1, + h: 1, + x_center: 0.671875, + y_center: 0.640625 + }, + { + w: 1, + h: 1, + x_center: 0.671875, + y_center: 0.640625 + }, + { + w: 1, + h: 1, + x_center: 0.703125, + y_center: 0.640625 + }, + { + w: 1, + h: 1, + x_center: 0.703125, + y_center: 0.640625 + }, + { + w: 1, + h: 1, + x_center: 0.734375, + y_center: 0.640625 + }, + { + w: 1, + h: 1, + x_center: 0.734375, + y_center: 0.640625 + }, + { + w: 1, + h: 1, + x_center: 0.765625, + y_center: 0.640625 + }, + { + w: 1, + h: 1, + x_center: 0.765625, + y_center: 0.640625 + }, + { + w: 1, + h: 1, + x_center: 0.796875, + y_center: 0.640625 + }, + { + w: 1, + h: 1, + x_center: 0.796875, + y_center: 0.640625 + }, + { + w: 1, + h: 1, + x_center: 0.828125, + y_center: 0.640625 + }, + { + w: 1, + h: 1, + x_center: 0.828125, + y_center: 0.640625 + }, + { + w: 1, + h: 1, + x_center: 0.859375, + y_center: 0.640625 + }, + { + w: 1, + h: 1, + x_center: 0.859375, + y_center: 0.640625 + }, + { + w: 1, + h: 1, + x_center: 0.890625, + y_center: 0.640625 + }, + { + w: 1, + h: 1, + x_center: 0.890625, + y_center: 0.640625 + }, + { + w: 1, + h: 1, + x_center: 0.921875, + y_center: 0.640625 + }, + { + w: 1, + h: 1, + x_center: 0.921875, + y_center: 0.640625 + }, + { + w: 1, + h: 1, + x_center: 0.953125, + y_center: 0.640625 + }, + { + w: 1, + h: 1, + x_center: 0.953125, + y_center: 0.640625 + }, + { + w: 1, + h: 1, + x_center: 0.984375, + y_center: 0.640625 + }, + { + w: 1, + h: 1, + x_center: 0.984375, + y_center: 0.640625 + }, + { + w: 1, + h: 1, + x_center: 0.015625, + y_center: 0.671875 + }, + { + w: 1, + h: 1, + x_center: 0.015625, + y_center: 0.671875 + }, + { + w: 1, + h: 1, + x_center: 0.046875, + y_center: 0.671875 + }, + { + w: 1, + h: 1, + x_center: 0.046875, + y_center: 0.671875 + }, + { + w: 1, + h: 1, + x_center: 0.078125, + y_center: 0.671875 + }, + { + w: 1, + h: 1, + x_center: 0.078125, + y_center: 0.671875 + }, + { + w: 1, + h: 1, + x_center: 0.109375, + y_center: 0.671875 + }, + { + w: 1, + h: 1, + x_center: 0.109375, + y_center: 0.671875 + }, + { + w: 1, + h: 1, + x_center: 0.140625, + y_center: 0.671875 + }, + { + w: 1, + h: 1, + x_center: 0.140625, + y_center: 0.671875 + }, + { + w: 1, + h: 1, + x_center: 0.171875, + y_center: 0.671875 + }, + { + w: 1, + h: 1, + x_center: 0.171875, + y_center: 0.671875 + }, + { + w: 1, + h: 1, + x_center: 0.203125, + y_center: 0.671875 + }, + { + w: 1, + h: 1, + x_center: 0.203125, + y_center: 0.671875 + }, + { + w: 1, + h: 1, + x_center: 0.234375, + y_center: 0.671875 + }, + { + w: 1, + h: 1, + x_center: 0.234375, + y_center: 0.671875 + }, + { + w: 1, + h: 1, + x_center: 0.265625, + y_center: 0.671875 + }, + { + w: 1, + h: 1, + x_center: 0.265625, + y_center: 0.671875 + }, + { + w: 1, + h: 1, + x_center: 0.296875, + y_center: 0.671875 + }, + { + w: 1, + h: 1, + x_center: 0.296875, + y_center: 0.671875 + }, + { + w: 1, + h: 1, + x_center: 0.328125, + y_center: 0.671875 + }, + { + w: 1, + h: 1, + x_center: 0.328125, + y_center: 0.671875 + }, + { + w: 1, + h: 1, + x_center: 0.359375, + y_center: 0.671875 + }, + { + w: 1, + h: 1, + x_center: 0.359375, + y_center: 0.671875 + }, + { + w: 1, + h: 1, + x_center: 0.390625, + y_center: 0.671875 + }, + { + w: 1, + h: 1, + x_center: 0.390625, + y_center: 0.671875 + }, + { + w: 1, + h: 1, + x_center: 0.421875, + y_center: 0.671875 + }, + { + w: 1, + h: 1, + x_center: 0.421875, + y_center: 0.671875 + }, + { + w: 1, + h: 1, + x_center: 0.453125, + y_center: 0.671875 + }, + { + w: 1, + h: 1, + x_center: 0.453125, + y_center: 0.671875 + }, + { + w: 1, + h: 1, + x_center: 0.484375, + y_center: 0.671875 + }, + { + w: 1, + h: 1, + x_center: 0.484375, + y_center: 0.671875 + }, + { + w: 1, + h: 1, + x_center: 0.515625, + y_center: 0.671875 + }, + { + w: 1, + h: 1, + x_center: 0.515625, + y_center: 0.671875 + }, + { + w: 1, + h: 1, + x_center: 0.546875, + y_center: 0.671875 + }, + { + w: 1, + h: 1, + x_center: 0.546875, + y_center: 0.671875 + }, + { + w: 1, + h: 1, + x_center: 0.578125, + y_center: 0.671875 + }, + { + w: 1, + h: 1, + x_center: 0.578125, + y_center: 0.671875 + }, + { + w: 1, + h: 1, + x_center: 0.609375, + y_center: 0.671875 + }, + { + w: 1, + h: 1, + x_center: 0.609375, + y_center: 0.671875 + }, + { + w: 1, + h: 1, + x_center: 0.640625, + y_center: 0.671875 + }, + { + w: 1, + h: 1, + x_center: 0.640625, + y_center: 0.671875 + }, + { + w: 1, + h: 1, + x_center: 0.671875, + y_center: 0.671875 + }, + { + w: 1, + h: 1, + x_center: 0.671875, + y_center: 0.671875 + }, + { + w: 1, + h: 1, + x_center: 0.703125, + y_center: 0.671875 + }, + { + w: 1, + h: 1, + x_center: 0.703125, + y_center: 0.671875 + }, + { + w: 1, + h: 1, + x_center: 0.734375, + y_center: 0.671875 + }, + { + w: 1, + h: 1, + x_center: 0.734375, + y_center: 0.671875 + }, + { + w: 1, + h: 1, + x_center: 0.765625, + y_center: 0.671875 + }, + { + w: 1, + h: 1, + x_center: 0.765625, + y_center: 0.671875 + }, + { + w: 1, + h: 1, + x_center: 0.796875, + y_center: 0.671875 + }, + { + w: 1, + h: 1, + x_center: 0.796875, + y_center: 0.671875 + }, + { + w: 1, + h: 1, + x_center: 0.828125, + y_center: 0.671875 + }, + { + w: 1, + h: 1, + x_center: 0.828125, + y_center: 0.671875 + }, + { + w: 1, + h: 1, + x_center: 0.859375, + y_center: 0.671875 + }, + { + w: 1, + h: 1, + x_center: 0.859375, + y_center: 0.671875 + }, + { + w: 1, + h: 1, + x_center: 0.890625, + y_center: 0.671875 + }, + { + w: 1, + h: 1, + x_center: 0.890625, + y_center: 0.671875 + }, + { + w: 1, + h: 1, + x_center: 0.921875, + y_center: 0.671875 + }, + { + w: 1, + h: 1, + x_center: 0.921875, + y_center: 0.671875 + }, + { + w: 1, + h: 1, + x_center: 0.953125, + y_center: 0.671875 + }, + { + w: 1, + h: 1, + x_center: 0.953125, + y_center: 0.671875 + }, + { + w: 1, + h: 1, + x_center: 0.984375, + y_center: 0.671875 + }, + { + w: 1, + h: 1, + x_center: 0.984375, + y_center: 0.671875 + }, + { + w: 1, + h: 1, + x_center: 0.015625, + y_center: 0.703125 + }, + { + w: 1, + h: 1, + x_center: 0.015625, + y_center: 0.703125 + }, + { + w: 1, + h: 1, + x_center: 0.046875, + y_center: 0.703125 + }, + { + w: 1, + h: 1, + x_center: 0.046875, + y_center: 0.703125 + }, + { + w: 1, + h: 1, + x_center: 0.078125, + y_center: 0.703125 + }, + { + w: 1, + h: 1, + x_center: 0.078125, + y_center: 0.703125 + }, + { + w: 1, + h: 1, + x_center: 0.109375, + y_center: 0.703125 + }, + { + w: 1, + h: 1, + x_center: 0.109375, + y_center: 0.703125 + }, + { + w: 1, + h: 1, + x_center: 0.140625, + y_center: 0.703125 + }, + { + w: 1, + h: 1, + x_center: 0.140625, + y_center: 0.703125 + }, + { + w: 1, + h: 1, + x_center: 0.171875, + y_center: 0.703125 + }, + { + w: 1, + h: 1, + x_center: 0.171875, + y_center: 0.703125 + }, + { + w: 1, + h: 1, + x_center: 0.203125, + y_center: 0.703125 + }, + { + w: 1, + h: 1, + x_center: 0.203125, + y_center: 0.703125 + }, + { + w: 1, + h: 1, + x_center: 0.234375, + y_center: 0.703125 + }, + { + w: 1, + h: 1, + x_center: 0.234375, + y_center: 0.703125 + }, + { + w: 1, + h: 1, + x_center: 0.265625, + y_center: 0.703125 + }, + { + w: 1, + h: 1, + x_center: 0.265625, + y_center: 0.703125 + }, + { + w: 1, + h: 1, + x_center: 0.296875, + y_center: 0.703125 + }, + { + w: 1, + h: 1, + x_center: 0.296875, + y_center: 0.703125 + }, + { + w: 1, + h: 1, + x_center: 0.328125, + y_center: 0.703125 + }, + { + w: 1, + h: 1, + x_center: 0.328125, + y_center: 0.703125 + }, + { + w: 1, + h: 1, + x_center: 0.359375, + y_center: 0.703125 + }, + { + w: 1, + h: 1, + x_center: 0.359375, + y_center: 0.703125 + }, + { + w: 1, + h: 1, + x_center: 0.390625, + y_center: 0.703125 + }, + { + w: 1, + h: 1, + x_center: 0.390625, + y_center: 0.703125 + }, + { + w: 1, + h: 1, + x_center: 0.421875, + y_center: 0.703125 + }, + { + w: 1, + h: 1, + x_center: 0.421875, + y_center: 0.703125 + }, + { + w: 1, + h: 1, + x_center: 0.453125, + y_center: 0.703125 + }, + { + w: 1, + h: 1, + x_center: 0.453125, + y_center: 0.703125 + }, + { + w: 1, + h: 1, + x_center: 0.484375, + y_center: 0.703125 + }, + { + w: 1, + h: 1, + x_center: 0.484375, + y_center: 0.703125 + }, + { + w: 1, + h: 1, + x_center: 0.515625, + y_center: 0.703125 + }, + { + w: 1, + h: 1, + x_center: 0.515625, + y_center: 0.703125 + }, + { + w: 1, + h: 1, + x_center: 0.546875, + y_center: 0.703125 + }, + { + w: 1, + h: 1, + x_center: 0.546875, + y_center: 0.703125 + }, + { + w: 1, + h: 1, + x_center: 0.578125, + y_center: 0.703125 + }, + { + w: 1, + h: 1, + x_center: 0.578125, + y_center: 0.703125 + }, + { + w: 1, + h: 1, + x_center: 0.609375, + y_center: 0.703125 + }, + { + w: 1, + h: 1, + x_center: 0.609375, + y_center: 0.703125 + }, + { + w: 1, + h: 1, + x_center: 0.640625, + y_center: 0.703125 + }, + { + w: 1, + h: 1, + x_center: 0.640625, + y_center: 0.703125 + }, + { + w: 1, + h: 1, + x_center: 0.671875, + y_center: 0.703125 + }, + { + w: 1, + h: 1, + x_center: 0.671875, + y_center: 0.703125 + }, + { + w: 1, + h: 1, + x_center: 0.703125, + y_center: 0.703125 + }, + { + w: 1, + h: 1, + x_center: 0.703125, + y_center: 0.703125 + }, + { + w: 1, + h: 1, + x_center: 0.734375, + y_center: 0.703125 + }, + { + w: 1, + h: 1, + x_center: 0.734375, + y_center: 0.703125 + }, + { + w: 1, + h: 1, + x_center: 0.765625, + y_center: 0.703125 + }, + { + w: 1, + h: 1, + x_center: 0.765625, + y_center: 0.703125 + }, + { + w: 1, + h: 1, + x_center: 0.796875, + y_center: 0.703125 + }, + { + w: 1, + h: 1, + x_center: 0.796875, + y_center: 0.703125 + }, + { + w: 1, + h: 1, + x_center: 0.828125, + y_center: 0.703125 + }, + { + w: 1, + h: 1, + x_center: 0.828125, + y_center: 0.703125 + }, + { + w: 1, + h: 1, + x_center: 0.859375, + y_center: 0.703125 + }, + { + w: 1, + h: 1, + x_center: 0.859375, + y_center: 0.703125 + }, + { + w: 1, + h: 1, + x_center: 0.890625, + y_center: 0.703125 + }, + { + w: 1, + h: 1, + x_center: 0.890625, + y_center: 0.703125 + }, + { + w: 1, + h: 1, + x_center: 0.921875, + y_center: 0.703125 + }, + { + w: 1, + h: 1, + x_center: 0.921875, + y_center: 0.703125 + }, + { + w: 1, + h: 1, + x_center: 0.953125, + y_center: 0.703125 + }, + { + w: 1, + h: 1, + x_center: 0.953125, + y_center: 0.703125 + }, + { + w: 1, + h: 1, + x_center: 0.984375, + y_center: 0.703125 + }, + { + w: 1, + h: 1, + x_center: 0.984375, + y_center: 0.703125 + }, + { + w: 1, + h: 1, + x_center: 0.015625, + y_center: 0.734375 + }, + { + w: 1, + h: 1, + x_center: 0.015625, + y_center: 0.734375 + }, + { + w: 1, + h: 1, + x_center: 0.046875, + y_center: 0.734375 + }, + { + w: 1, + h: 1, + x_center: 0.046875, + y_center: 0.734375 + }, + { + w: 1, + h: 1, + x_center: 0.078125, + y_center: 0.734375 + }, + { + w: 1, + h: 1, + x_center: 0.078125, + y_center: 0.734375 + }, + { + w: 1, + h: 1, + x_center: 0.109375, + y_center: 0.734375 + }, + { + w: 1, + h: 1, + x_center: 0.109375, + y_center: 0.734375 + }, + { + w: 1, + h: 1, + x_center: 0.140625, + y_center: 0.734375 + }, + { + w: 1, + h: 1, + x_center: 0.140625, + y_center: 0.734375 + }, + { + w: 1, + h: 1, + x_center: 0.171875, + y_center: 0.734375 + }, + { + w: 1, + h: 1, + x_center: 0.171875, + y_center: 0.734375 + }, + { + w: 1, + h: 1, + x_center: 0.203125, + y_center: 0.734375 + }, + { + w: 1, + h: 1, + x_center: 0.203125, + y_center: 0.734375 + }, + { + w: 1, + h: 1, + x_center: 0.234375, + y_center: 0.734375 + }, + { + w: 1, + h: 1, + x_center: 0.234375, + y_center: 0.734375 + }, + { + w: 1, + h: 1, + x_center: 0.265625, + y_center: 0.734375 + }, + { + w: 1, + h: 1, + x_center: 0.265625, + y_center: 0.734375 + }, + { + w: 1, + h: 1, + x_center: 0.296875, + y_center: 0.734375 + }, + { + w: 1, + h: 1, + x_center: 0.296875, + y_center: 0.734375 + }, + { + w: 1, + h: 1, + x_center: 0.328125, + y_center: 0.734375 + }, + { + w: 1, + h: 1, + x_center: 0.328125, + y_center: 0.734375 + }, + { + w: 1, + h: 1, + x_center: 0.359375, + y_center: 0.734375 + }, + { + w: 1, + h: 1, + x_center: 0.359375, + y_center: 0.734375 + }, + { + w: 1, + h: 1, + x_center: 0.390625, + y_center: 0.734375 + }, + { + w: 1, + h: 1, + x_center: 0.390625, + y_center: 0.734375 + }, + { + w: 1, + h: 1, + x_center: 0.421875, + y_center: 0.734375 + }, + { + w: 1, + h: 1, + x_center: 0.421875, + y_center: 0.734375 + }, + { + w: 1, + h: 1, + x_center: 0.453125, + y_center: 0.734375 + }, + { + w: 1, + h: 1, + x_center: 0.453125, + y_center: 0.734375 + }, + { + w: 1, + h: 1, + x_center: 0.484375, + y_center: 0.734375 + }, + { + w: 1, + h: 1, + x_center: 0.484375, + y_center: 0.734375 + }, + { + w: 1, + h: 1, + x_center: 0.515625, + y_center: 0.734375 + }, + { + w: 1, + h: 1, + x_center: 0.515625, + y_center: 0.734375 + }, + { + w: 1, + h: 1, + x_center: 0.546875, + y_center: 0.734375 + }, + { + w: 1, + h: 1, + x_center: 0.546875, + y_center: 0.734375 + }, + { + w: 1, + h: 1, + x_center: 0.578125, + y_center: 0.734375 + }, + { + w: 1, + h: 1, + x_center: 0.578125, + y_center: 0.734375 + }, + { + w: 1, + h: 1, + x_center: 0.609375, + y_center: 0.734375 + }, + { + w: 1, + h: 1, + x_center: 0.609375, + y_center: 0.734375 + }, + { + w: 1, + h: 1, + x_center: 0.640625, + y_center: 0.734375 + }, + { + w: 1, + h: 1, + x_center: 0.640625, + y_center: 0.734375 + }, + { + w: 1, + h: 1, + x_center: 0.671875, + y_center: 0.734375 + }, + { + w: 1, + h: 1, + x_center: 0.671875, + y_center: 0.734375 + }, + { + w: 1, + h: 1, + x_center: 0.703125, + y_center: 0.734375 + }, + { + w: 1, + h: 1, + x_center: 0.703125, + y_center: 0.734375 + }, + { + w: 1, + h: 1, + x_center: 0.734375, + y_center: 0.734375 + }, + { + w: 1, + h: 1, + x_center: 0.734375, + y_center: 0.734375 + }, + { + w: 1, + h: 1, + x_center: 0.765625, + y_center: 0.734375 + }, + { + w: 1, + h: 1, + x_center: 0.765625, + y_center: 0.734375 + }, + { + w: 1, + h: 1, + x_center: 0.796875, + y_center: 0.734375 + }, + { + w: 1, + h: 1, + x_center: 0.796875, + y_center: 0.734375 + }, + { + w: 1, + h: 1, + x_center: 0.828125, + y_center: 0.734375 + }, + { + w: 1, + h: 1, + x_center: 0.828125, + y_center: 0.734375 + }, + { + w: 1, + h: 1, + x_center: 0.859375, + y_center: 0.734375 + }, + { + w: 1, + h: 1, + x_center: 0.859375, + y_center: 0.734375 + }, + { + w: 1, + h: 1, + x_center: 0.890625, + y_center: 0.734375 + }, + { + w: 1, + h: 1, + x_center: 0.890625, + y_center: 0.734375 + }, + { + w: 1, + h: 1, + x_center: 0.921875, + y_center: 0.734375 + }, + { + w: 1, + h: 1, + x_center: 0.921875, + y_center: 0.734375 + }, + { + w: 1, + h: 1, + x_center: 0.953125, + y_center: 0.734375 + }, + { + w: 1, + h: 1, + x_center: 0.953125, + y_center: 0.734375 + }, + { + w: 1, + h: 1, + x_center: 0.984375, + y_center: 0.734375 + }, + { + w: 1, + h: 1, + x_center: 0.984375, + y_center: 0.734375 + }, + { + w: 1, + h: 1, + x_center: 0.015625, + y_center: 0.765625 + }, + { + w: 1, + h: 1, + x_center: 0.015625, + y_center: 0.765625 + }, + { + w: 1, + h: 1, + x_center: 0.046875, + y_center: 0.765625 + }, + { + w: 1, + h: 1, + x_center: 0.046875, + y_center: 0.765625 + }, + { + w: 1, + h: 1, + x_center: 0.078125, + y_center: 0.765625 + }, + { + w: 1, + h: 1, + x_center: 0.078125, + y_center: 0.765625 + }, + { + w: 1, + h: 1, + x_center: 0.109375, + y_center: 0.765625 + }, + { + w: 1, + h: 1, + x_center: 0.109375, + y_center: 0.765625 + }, + { + w: 1, + h: 1, + x_center: 0.140625, + y_center: 0.765625 + }, + { + w: 1, + h: 1, + x_center: 0.140625, + y_center: 0.765625 + }, + { + w: 1, + h: 1, + x_center: 0.171875, + y_center: 0.765625 + }, + { + w: 1, + h: 1, + x_center: 0.171875, + y_center: 0.765625 + }, + { + w: 1, + h: 1, + x_center: 0.203125, + y_center: 0.765625 + }, + { + w: 1, + h: 1, + x_center: 0.203125, + y_center: 0.765625 + }, + { + w: 1, + h: 1, + x_center: 0.234375, + y_center: 0.765625 + }, + { + w: 1, + h: 1, + x_center: 0.234375, + y_center: 0.765625 + }, + { + w: 1, + h: 1, + x_center: 0.265625, + y_center: 0.765625 + }, + { + w: 1, + h: 1, + x_center: 0.265625, + y_center: 0.765625 + }, + { + w: 1, + h: 1, + x_center: 0.296875, + y_center: 0.765625 + }, + { + w: 1, + h: 1, + x_center: 0.296875, + y_center: 0.765625 + }, + { + w: 1, + h: 1, + x_center: 0.328125, + y_center: 0.765625 + }, + { + w: 1, + h: 1, + x_center: 0.328125, + y_center: 0.765625 + }, + { + w: 1, + h: 1, + x_center: 0.359375, + y_center: 0.765625 + }, + { + w: 1, + h: 1, + x_center: 0.359375, + y_center: 0.765625 + }, + { + w: 1, + h: 1, + x_center: 0.390625, + y_center: 0.765625 + }, + { + w: 1, + h: 1, + x_center: 0.390625, + y_center: 0.765625 + }, + { + w: 1, + h: 1, + x_center: 0.421875, + y_center: 0.765625 + }, + { + w: 1, + h: 1, + x_center: 0.421875, + y_center: 0.765625 + }, + { + w: 1, + h: 1, + x_center: 0.453125, + y_center: 0.765625 + }, + { + w: 1, + h: 1, + x_center: 0.453125, + y_center: 0.765625 + }, + { + w: 1, + h: 1, + x_center: 0.484375, + y_center: 0.765625 + }, + { + w: 1, + h: 1, + x_center: 0.484375, + y_center: 0.765625 + }, + { + w: 1, + h: 1, + x_center: 0.515625, + y_center: 0.765625 + }, + { + w: 1, + h: 1, + x_center: 0.515625, + y_center: 0.765625 + }, + { + w: 1, + h: 1, + x_center: 0.546875, + y_center: 0.765625 + }, + { + w: 1, + h: 1, + x_center: 0.546875, + y_center: 0.765625 + }, + { + w: 1, + h: 1, + x_center: 0.578125, + y_center: 0.765625 + }, + { + w: 1, + h: 1, + x_center: 0.578125, + y_center: 0.765625 + }, + { + w: 1, + h: 1, + x_center: 0.609375, + y_center: 0.765625 + }, + { + w: 1, + h: 1, + x_center: 0.609375, + y_center: 0.765625 + }, + { + w: 1, + h: 1, + x_center: 0.640625, + y_center: 0.765625 + }, + { + w: 1, + h: 1, + x_center: 0.640625, + y_center: 0.765625 + }, + { + w: 1, + h: 1, + x_center: 0.671875, + y_center: 0.765625 + }, + { + w: 1, + h: 1, + x_center: 0.671875, + y_center: 0.765625 + }, + { + w: 1, + h: 1, + x_center: 0.703125, + y_center: 0.765625 + }, + { + w: 1, + h: 1, + x_center: 0.703125, + y_center: 0.765625 + }, + { + w: 1, + h: 1, + x_center: 0.734375, + y_center: 0.765625 + }, + { + w: 1, + h: 1, + x_center: 0.734375, + y_center: 0.765625 + }, + { + w: 1, + h: 1, + x_center: 0.765625, + y_center: 0.765625 + }, + { + w: 1, + h: 1, + x_center: 0.765625, + y_center: 0.765625 + }, + { + w: 1, + h: 1, + x_center: 0.796875, + y_center: 0.765625 + }, + { + w: 1, + h: 1, + x_center: 0.796875, + y_center: 0.765625 + }, + { + w: 1, + h: 1, + x_center: 0.828125, + y_center: 0.765625 + }, + { + w: 1, + h: 1, + x_center: 0.828125, + y_center: 0.765625 + }, + { + w: 1, + h: 1, + x_center: 0.859375, + y_center: 0.765625 + }, + { + w: 1, + h: 1, + x_center: 0.859375, + y_center: 0.765625 + }, + { + w: 1, + h: 1, + x_center: 0.890625, + y_center: 0.765625 + }, + { + w: 1, + h: 1, + x_center: 0.890625, + y_center: 0.765625 + }, + { + w: 1, + h: 1, + x_center: 0.921875, + y_center: 0.765625 + }, + { + w: 1, + h: 1, + x_center: 0.921875, + y_center: 0.765625 + }, + { + w: 1, + h: 1, + x_center: 0.953125, + y_center: 0.765625 + }, + { + w: 1, + h: 1, + x_center: 0.953125, + y_center: 0.765625 + }, + { + w: 1, + h: 1, + x_center: 0.984375, + y_center: 0.765625 + }, + { + w: 1, + h: 1, + x_center: 0.984375, + y_center: 0.765625 + }, + { + w: 1, + h: 1, + x_center: 0.015625, + y_center: 0.796875 + }, + { + w: 1, + h: 1, + x_center: 0.015625, + y_center: 0.796875 + }, + { + w: 1, + h: 1, + x_center: 0.046875, + y_center: 0.796875 + }, + { + w: 1, + h: 1, + x_center: 0.046875, + y_center: 0.796875 + }, + { + w: 1, + h: 1, + x_center: 0.078125, + y_center: 0.796875 + }, + { + w: 1, + h: 1, + x_center: 0.078125, + y_center: 0.796875 + }, + { + w: 1, + h: 1, + x_center: 0.109375, + y_center: 0.796875 + }, + { + w: 1, + h: 1, + x_center: 0.109375, + y_center: 0.796875 + }, + { + w: 1, + h: 1, + x_center: 0.140625, + y_center: 0.796875 + }, + { + w: 1, + h: 1, + x_center: 0.140625, + y_center: 0.796875 + }, + { + w: 1, + h: 1, + x_center: 0.171875, + y_center: 0.796875 + }, + { + w: 1, + h: 1, + x_center: 0.171875, + y_center: 0.796875 + }, + { + w: 1, + h: 1, + x_center: 0.203125, + y_center: 0.796875 + }, + { + w: 1, + h: 1, + x_center: 0.203125, + y_center: 0.796875 + }, + { + w: 1, + h: 1, + x_center: 0.234375, + y_center: 0.796875 + }, + { + w: 1, + h: 1, + x_center: 0.234375, + y_center: 0.796875 + }, + { + w: 1, + h: 1, + x_center: 0.265625, + y_center: 0.796875 + }, + { + w: 1, + h: 1, + x_center: 0.265625, + y_center: 0.796875 + }, + { + w: 1, + h: 1, + x_center: 0.296875, + y_center: 0.796875 + }, + { + w: 1, + h: 1, + x_center: 0.296875, + y_center: 0.796875 + }, + { + w: 1, + h: 1, + x_center: 0.328125, + y_center: 0.796875 + }, + { + w: 1, + h: 1, + x_center: 0.328125, + y_center: 0.796875 + }, + { + w: 1, + h: 1, + x_center: 0.359375, + y_center: 0.796875 + }, + { + w: 1, + h: 1, + x_center: 0.359375, + y_center: 0.796875 + }, + { + w: 1, + h: 1, + x_center: 0.390625, + y_center: 0.796875 + }, + { + w: 1, + h: 1, + x_center: 0.390625, + y_center: 0.796875 + }, + { + w: 1, + h: 1, + x_center: 0.421875, + y_center: 0.796875 + }, + { + w: 1, + h: 1, + x_center: 0.421875, + y_center: 0.796875 + }, + { + w: 1, + h: 1, + x_center: 0.453125, + y_center: 0.796875 + }, + { + w: 1, + h: 1, + x_center: 0.453125, + y_center: 0.796875 + }, + { + w: 1, + h: 1, + x_center: 0.484375, + y_center: 0.796875 + }, + { + w: 1, + h: 1, + x_center: 0.484375, + y_center: 0.796875 + }, + { + w: 1, + h: 1, + x_center: 0.515625, + y_center: 0.796875 + }, + { + w: 1, + h: 1, + x_center: 0.515625, + y_center: 0.796875 + }, + { + w: 1, + h: 1, + x_center: 0.546875, + y_center: 0.796875 + }, + { + w: 1, + h: 1, + x_center: 0.546875, + y_center: 0.796875 + }, + { + w: 1, + h: 1, + x_center: 0.578125, + y_center: 0.796875 + }, + { + w: 1, + h: 1, + x_center: 0.578125, + y_center: 0.796875 + }, + { + w: 1, + h: 1, + x_center: 0.609375, + y_center: 0.796875 + }, + { + w: 1, + h: 1, + x_center: 0.609375, + y_center: 0.796875 + }, + { + w: 1, + h: 1, + x_center: 0.640625, + y_center: 0.796875 + }, + { + w: 1, + h: 1, + x_center: 0.640625, + y_center: 0.796875 + }, + { + w: 1, + h: 1, + x_center: 0.671875, + y_center: 0.796875 + }, + { + w: 1, + h: 1, + x_center: 0.671875, + y_center: 0.796875 + }, + { + w: 1, + h: 1, + x_center: 0.703125, + y_center: 0.796875 + }, + { + w: 1, + h: 1, + x_center: 0.703125, + y_center: 0.796875 + }, + { + w: 1, + h: 1, + x_center: 0.734375, + y_center: 0.796875 + }, + { + w: 1, + h: 1, + x_center: 0.734375, + y_center: 0.796875 + }, + { + w: 1, + h: 1, + x_center: 0.765625, + y_center: 0.796875 + }, + { + w: 1, + h: 1, + x_center: 0.765625, + y_center: 0.796875 + }, + { + w: 1, + h: 1, + x_center: 0.796875, + y_center: 0.796875 + }, + { + w: 1, + h: 1, + x_center: 0.796875, + y_center: 0.796875 + }, + { + w: 1, + h: 1, + x_center: 0.828125, + y_center: 0.796875 + }, + { + w: 1, + h: 1, + x_center: 0.828125, + y_center: 0.796875 + }, + { + w: 1, + h: 1, + x_center: 0.859375, + y_center: 0.796875 + }, + { + w: 1, + h: 1, + x_center: 0.859375, + y_center: 0.796875 + }, + { + w: 1, + h: 1, + x_center: 0.890625, + y_center: 0.796875 + }, + { + w: 1, + h: 1, + x_center: 0.890625, + y_center: 0.796875 + }, + { + w: 1, + h: 1, + x_center: 0.921875, + y_center: 0.796875 + }, + { + w: 1, + h: 1, + x_center: 0.921875, + y_center: 0.796875 + }, + { + w: 1, + h: 1, + x_center: 0.953125, + y_center: 0.796875 + }, + { + w: 1, + h: 1, + x_center: 0.953125, + y_center: 0.796875 + }, + { + w: 1, + h: 1, + x_center: 0.984375, + y_center: 0.796875 + }, + { + w: 1, + h: 1, + x_center: 0.984375, + y_center: 0.796875 + }, + { + w: 1, + h: 1, + x_center: 0.015625, + y_center: 0.828125 + }, + { + w: 1, + h: 1, + x_center: 0.015625, + y_center: 0.828125 + }, + { + w: 1, + h: 1, + x_center: 0.046875, + y_center: 0.828125 + }, + { + w: 1, + h: 1, + x_center: 0.046875, + y_center: 0.828125 + }, + { + w: 1, + h: 1, + x_center: 0.078125, + y_center: 0.828125 + }, + { + w: 1, + h: 1, + x_center: 0.078125, + y_center: 0.828125 + }, + { + w: 1, + h: 1, + x_center: 0.109375, + y_center: 0.828125 + }, + { + w: 1, + h: 1, + x_center: 0.109375, + y_center: 0.828125 + }, + { + w: 1, + h: 1, + x_center: 0.140625, + y_center: 0.828125 + }, + { + w: 1, + h: 1, + x_center: 0.140625, + y_center: 0.828125 + }, + { + w: 1, + h: 1, + x_center: 0.171875, + y_center: 0.828125 + }, + { + w: 1, + h: 1, + x_center: 0.171875, + y_center: 0.828125 + }, + { + w: 1, + h: 1, + x_center: 0.203125, + y_center: 0.828125 + }, + { + w: 1, + h: 1, + x_center: 0.203125, + y_center: 0.828125 + }, + { + w: 1, + h: 1, + x_center: 0.234375, + y_center: 0.828125 + }, + { + w: 1, + h: 1, + x_center: 0.234375, + y_center: 0.828125 + }, + { + w: 1, + h: 1, + x_center: 0.265625, + y_center: 0.828125 + }, + { + w: 1, + h: 1, + x_center: 0.265625, + y_center: 0.828125 + }, + { + w: 1, + h: 1, + x_center: 0.296875, + y_center: 0.828125 + }, + { + w: 1, + h: 1, + x_center: 0.296875, + y_center: 0.828125 + }, + { + w: 1, + h: 1, + x_center: 0.328125, + y_center: 0.828125 + }, + { + w: 1, + h: 1, + x_center: 0.328125, + y_center: 0.828125 + }, + { + w: 1, + h: 1, + x_center: 0.359375, + y_center: 0.828125 + }, + { + w: 1, + h: 1, + x_center: 0.359375, + y_center: 0.828125 + }, + { + w: 1, + h: 1, + x_center: 0.390625, + y_center: 0.828125 + }, + { + w: 1, + h: 1, + x_center: 0.390625, + y_center: 0.828125 + }, + { + w: 1, + h: 1, + x_center: 0.421875, + y_center: 0.828125 + }, + { + w: 1, + h: 1, + x_center: 0.421875, + y_center: 0.828125 + }, + { + w: 1, + h: 1, + x_center: 0.453125, + y_center: 0.828125 + }, + { + w: 1, + h: 1, + x_center: 0.453125, + y_center: 0.828125 + }, + { + w: 1, + h: 1, + x_center: 0.484375, + y_center: 0.828125 + }, + { + w: 1, + h: 1, + x_center: 0.484375, + y_center: 0.828125 + }, + { + w: 1, + h: 1, + x_center: 0.515625, + y_center: 0.828125 + }, + { + w: 1, + h: 1, + x_center: 0.515625, + y_center: 0.828125 + }, + { + w: 1, + h: 1, + x_center: 0.546875, + y_center: 0.828125 + }, + { + w: 1, + h: 1, + x_center: 0.546875, + y_center: 0.828125 + }, + { + w: 1, + h: 1, + x_center: 0.578125, + y_center: 0.828125 + }, + { + w: 1, + h: 1, + x_center: 0.578125, + y_center: 0.828125 + }, + { + w: 1, + h: 1, + x_center: 0.609375, + y_center: 0.828125 + }, + { + w: 1, + h: 1, + x_center: 0.609375, + y_center: 0.828125 + }, + { + w: 1, + h: 1, + x_center: 0.640625, + y_center: 0.828125 + }, + { + w: 1, + h: 1, + x_center: 0.640625, + y_center: 0.828125 + }, + { + w: 1, + h: 1, + x_center: 0.671875, + y_center: 0.828125 + }, + { + w: 1, + h: 1, + x_center: 0.671875, + y_center: 0.828125 + }, + { + w: 1, + h: 1, + x_center: 0.703125, + y_center: 0.828125 + }, + { + w: 1, + h: 1, + x_center: 0.703125, + y_center: 0.828125 + }, + { + w: 1, + h: 1, + x_center: 0.734375, + y_center: 0.828125 + }, + { + w: 1, + h: 1, + x_center: 0.734375, + y_center: 0.828125 + }, + { + w: 1, + h: 1, + x_center: 0.765625, + y_center: 0.828125 + }, + { + w: 1, + h: 1, + x_center: 0.765625, + y_center: 0.828125 + }, + { + w: 1, + h: 1, + x_center: 0.796875, + y_center: 0.828125 + }, + { + w: 1, + h: 1, + x_center: 0.796875, + y_center: 0.828125 + }, + { + w: 1, + h: 1, + x_center: 0.828125, + y_center: 0.828125 + }, + { + w: 1, + h: 1, + x_center: 0.828125, + y_center: 0.828125 + }, + { + w: 1, + h: 1, + x_center: 0.859375, + y_center: 0.828125 + }, + { + w: 1, + h: 1, + x_center: 0.859375, + y_center: 0.828125 + }, + { + w: 1, + h: 1, + x_center: 0.890625, + y_center: 0.828125 + }, + { + w: 1, + h: 1, + x_center: 0.890625, + y_center: 0.828125 + }, + { + w: 1, + h: 1, + x_center: 0.921875, + y_center: 0.828125 + }, + { + w: 1, + h: 1, + x_center: 0.921875, + y_center: 0.828125 + }, + { + w: 1, + h: 1, + x_center: 0.953125, + y_center: 0.828125 + }, + { + w: 1, + h: 1, + x_center: 0.953125, + y_center: 0.828125 + }, + { + w: 1, + h: 1, + x_center: 0.984375, + y_center: 0.828125 + }, + { + w: 1, + h: 1, + x_center: 0.984375, + y_center: 0.828125 + }, + { + w: 1, + h: 1, + x_center: 0.015625, + y_center: 0.859375 + }, + { + w: 1, + h: 1, + x_center: 0.015625, + y_center: 0.859375 + }, + { + w: 1, + h: 1, + x_center: 0.046875, + y_center: 0.859375 + }, + { + w: 1, + h: 1, + x_center: 0.046875, + y_center: 0.859375 + }, + { + w: 1, + h: 1, + x_center: 0.078125, + y_center: 0.859375 + }, + { + w: 1, + h: 1, + x_center: 0.078125, + y_center: 0.859375 + }, + { + w: 1, + h: 1, + x_center: 0.109375, + y_center: 0.859375 + }, + { + w: 1, + h: 1, + x_center: 0.109375, + y_center: 0.859375 + }, + { + w: 1, + h: 1, + x_center: 0.140625, + y_center: 0.859375 + }, + { + w: 1, + h: 1, + x_center: 0.140625, + y_center: 0.859375 + }, + { + w: 1, + h: 1, + x_center: 0.171875, + y_center: 0.859375 + }, + { + w: 1, + h: 1, + x_center: 0.171875, + y_center: 0.859375 + }, + { + w: 1, + h: 1, + x_center: 0.203125, + y_center: 0.859375 + }, + { + w: 1, + h: 1, + x_center: 0.203125, + y_center: 0.859375 + }, + { + w: 1, + h: 1, + x_center: 0.234375, + y_center: 0.859375 + }, + { + w: 1, + h: 1, + x_center: 0.234375, + y_center: 0.859375 + }, + { + w: 1, + h: 1, + x_center: 0.265625, + y_center: 0.859375 + }, + { + w: 1, + h: 1, + x_center: 0.265625, + y_center: 0.859375 + }, + { + w: 1, + h: 1, + x_center: 0.296875, + y_center: 0.859375 + }, + { + w: 1, + h: 1, + x_center: 0.296875, + y_center: 0.859375 + }, + { + w: 1, + h: 1, + x_center: 0.328125, + y_center: 0.859375 + }, + { + w: 1, + h: 1, + x_center: 0.328125, + y_center: 0.859375 + }, + { + w: 1, + h: 1, + x_center: 0.359375, + y_center: 0.859375 + }, + { + w: 1, + h: 1, + x_center: 0.359375, + y_center: 0.859375 + }, + { + w: 1, + h: 1, + x_center: 0.390625, + y_center: 0.859375 + }, + { + w: 1, + h: 1, + x_center: 0.390625, + y_center: 0.859375 + }, + { + w: 1, + h: 1, + x_center: 0.421875, + y_center: 0.859375 + }, + { + w: 1, + h: 1, + x_center: 0.421875, + y_center: 0.859375 + }, + { + w: 1, + h: 1, + x_center: 0.453125, + y_center: 0.859375 + }, + { + w: 1, + h: 1, + x_center: 0.453125, + y_center: 0.859375 + }, + { + w: 1, + h: 1, + x_center: 0.484375, + y_center: 0.859375 + }, + { + w: 1, + h: 1, + x_center: 0.484375, + y_center: 0.859375 + }, + { + w: 1, + h: 1, + x_center: 0.515625, + y_center: 0.859375 + }, + { + w: 1, + h: 1, + x_center: 0.515625, + y_center: 0.859375 + }, + { + w: 1, + h: 1, + x_center: 0.546875, + y_center: 0.859375 + }, + { + w: 1, + h: 1, + x_center: 0.546875, + y_center: 0.859375 + }, + { + w: 1, + h: 1, + x_center: 0.578125, + y_center: 0.859375 + }, + { + w: 1, + h: 1, + x_center: 0.578125, + y_center: 0.859375 + }, + { + w: 1, + h: 1, + x_center: 0.609375, + y_center: 0.859375 + }, + { + w: 1, + h: 1, + x_center: 0.609375, + y_center: 0.859375 + }, + { + w: 1, + h: 1, + x_center: 0.640625, + y_center: 0.859375 + }, + { + w: 1, + h: 1, + x_center: 0.640625, + y_center: 0.859375 + }, + { + w: 1, + h: 1, + x_center: 0.671875, + y_center: 0.859375 + }, + { + w: 1, + h: 1, + x_center: 0.671875, + y_center: 0.859375 + }, + { + w: 1, + h: 1, + x_center: 0.703125, + y_center: 0.859375 + }, + { + w: 1, + h: 1, + x_center: 0.703125, + y_center: 0.859375 + }, + { + w: 1, + h: 1, + x_center: 0.734375, + y_center: 0.859375 + }, + { + w: 1, + h: 1, + x_center: 0.734375, + y_center: 0.859375 + }, + { + w: 1, + h: 1, + x_center: 0.765625, + y_center: 0.859375 + }, + { + w: 1, + h: 1, + x_center: 0.765625, + y_center: 0.859375 + }, + { + w: 1, + h: 1, + x_center: 0.796875, + y_center: 0.859375 + }, + { + w: 1, + h: 1, + x_center: 0.796875, + y_center: 0.859375 + }, + { + w: 1, + h: 1, + x_center: 0.828125, + y_center: 0.859375 + }, + { + w: 1, + h: 1, + x_center: 0.828125, + y_center: 0.859375 + }, + { + w: 1, + h: 1, + x_center: 0.859375, + y_center: 0.859375 + }, + { + w: 1, + h: 1, + x_center: 0.859375, + y_center: 0.859375 + }, + { + w: 1, + h: 1, + x_center: 0.890625, + y_center: 0.859375 + }, + { + w: 1, + h: 1, + x_center: 0.890625, + y_center: 0.859375 + }, + { + w: 1, + h: 1, + x_center: 0.921875, + y_center: 0.859375 + }, + { + w: 1, + h: 1, + x_center: 0.921875, + y_center: 0.859375 + }, + { + w: 1, + h: 1, + x_center: 0.953125, + y_center: 0.859375 + }, + { + w: 1, + h: 1, + x_center: 0.953125, + y_center: 0.859375 + }, + { + w: 1, + h: 1, + x_center: 0.984375, + y_center: 0.859375 + }, + { + w: 1, + h: 1, + x_center: 0.984375, + y_center: 0.859375 + }, + { + w: 1, + h: 1, + x_center: 0.015625, + y_center: 0.890625 + }, + { + w: 1, + h: 1, + x_center: 0.015625, + y_center: 0.890625 + }, + { + w: 1, + h: 1, + x_center: 0.046875, + y_center: 0.890625 + }, + { + w: 1, + h: 1, + x_center: 0.046875, + y_center: 0.890625 + }, + { + w: 1, + h: 1, + x_center: 0.078125, + y_center: 0.890625 + }, + { + w: 1, + h: 1, + x_center: 0.078125, + y_center: 0.890625 + }, + { + w: 1, + h: 1, + x_center: 0.109375, + y_center: 0.890625 + }, + { + w: 1, + h: 1, + x_center: 0.109375, + y_center: 0.890625 + }, + { + w: 1, + h: 1, + x_center: 0.140625, + y_center: 0.890625 + }, + { + w: 1, + h: 1, + x_center: 0.140625, + y_center: 0.890625 + }, + { + w: 1, + h: 1, + x_center: 0.171875, + y_center: 0.890625 + }, + { + w: 1, + h: 1, + x_center: 0.171875, + y_center: 0.890625 + }, + { + w: 1, + h: 1, + x_center: 0.203125, + y_center: 0.890625 + }, + { + w: 1, + h: 1, + x_center: 0.203125, + y_center: 0.890625 + }, + { + w: 1, + h: 1, + x_center: 0.234375, + y_center: 0.890625 + }, + { + w: 1, + h: 1, + x_center: 0.234375, + y_center: 0.890625 + }, + { + w: 1, + h: 1, + x_center: 0.265625, + y_center: 0.890625 + }, + { + w: 1, + h: 1, + x_center: 0.265625, + y_center: 0.890625 + }, + { + w: 1, + h: 1, + x_center: 0.296875, + y_center: 0.890625 + }, + { + w: 1, + h: 1, + x_center: 0.296875, + y_center: 0.890625 + }, + { + w: 1, + h: 1, + x_center: 0.328125, + y_center: 0.890625 + }, + { + w: 1, + h: 1, + x_center: 0.328125, + y_center: 0.890625 + }, + { + w: 1, + h: 1, + x_center: 0.359375, + y_center: 0.890625 + }, + { + w: 1, + h: 1, + x_center: 0.359375, + y_center: 0.890625 + }, + { + w: 1, + h: 1, + x_center: 0.390625, + y_center: 0.890625 + }, + { + w: 1, + h: 1, + x_center: 0.390625, + y_center: 0.890625 + }, + { + w: 1, + h: 1, + x_center: 0.421875, + y_center: 0.890625 + }, + { + w: 1, + h: 1, + x_center: 0.421875, + y_center: 0.890625 + }, + { + w: 1, + h: 1, + x_center: 0.453125, + y_center: 0.890625 + }, + { + w: 1, + h: 1, + x_center: 0.453125, + y_center: 0.890625 + }, + { + w: 1, + h: 1, + x_center: 0.484375, + y_center: 0.890625 + }, + { + w: 1, + h: 1, + x_center: 0.484375, + y_center: 0.890625 + }, + { + w: 1, + h: 1, + x_center: 0.515625, + y_center: 0.890625 + }, + { + w: 1, + h: 1, + x_center: 0.515625, + y_center: 0.890625 + }, + { + w: 1, + h: 1, + x_center: 0.546875, + y_center: 0.890625 + }, + { + w: 1, + h: 1, + x_center: 0.546875, + y_center: 0.890625 + }, + { + w: 1, + h: 1, + x_center: 0.578125, + y_center: 0.890625 + }, + { + w: 1, + h: 1, + x_center: 0.578125, + y_center: 0.890625 + }, + { + w: 1, + h: 1, + x_center: 0.609375, + y_center: 0.890625 + }, + { + w: 1, + h: 1, + x_center: 0.609375, + y_center: 0.890625 + }, + { + w: 1, + h: 1, + x_center: 0.640625, + y_center: 0.890625 + }, + { + w: 1, + h: 1, + x_center: 0.640625, + y_center: 0.890625 + }, + { + w: 1, + h: 1, + x_center: 0.671875, + y_center: 0.890625 + }, + { + w: 1, + h: 1, + x_center: 0.671875, + y_center: 0.890625 + }, + { + w: 1, + h: 1, + x_center: 0.703125, + y_center: 0.890625 + }, + { + w: 1, + h: 1, + x_center: 0.703125, + y_center: 0.890625 + }, + { + w: 1, + h: 1, + x_center: 0.734375, + y_center: 0.890625 + }, + { + w: 1, + h: 1, + x_center: 0.734375, + y_center: 0.890625 + }, + { + w: 1, + h: 1, + x_center: 0.765625, + y_center: 0.890625 + }, + { + w: 1, + h: 1, + x_center: 0.765625, + y_center: 0.890625 + }, + { + w: 1, + h: 1, + x_center: 0.796875, + y_center: 0.890625 + }, + { + w: 1, + h: 1, + x_center: 0.796875, + y_center: 0.890625 + }, + { + w: 1, + h: 1, + x_center: 0.828125, + y_center: 0.890625 + }, + { + w: 1, + h: 1, + x_center: 0.828125, + y_center: 0.890625 + }, + { + w: 1, + h: 1, + x_center: 0.859375, + y_center: 0.890625 + }, + { + w: 1, + h: 1, + x_center: 0.859375, + y_center: 0.890625 + }, + { + w: 1, + h: 1, + x_center: 0.890625, + y_center: 0.890625 + }, + { + w: 1, + h: 1, + x_center: 0.890625, + y_center: 0.890625 + }, + { + w: 1, + h: 1, + x_center: 0.921875, + y_center: 0.890625 + }, + { + w: 1, + h: 1, + x_center: 0.921875, + y_center: 0.890625 + }, + { + w: 1, + h: 1, + x_center: 0.953125, + y_center: 0.890625 + }, + { + w: 1, + h: 1, + x_center: 0.953125, + y_center: 0.890625 + }, + { + w: 1, + h: 1, + x_center: 0.984375, + y_center: 0.890625 + }, + { + w: 1, + h: 1, + x_center: 0.984375, + y_center: 0.890625 + }, + { + w: 1, + h: 1, + x_center: 0.015625, + y_center: 0.921875 + }, + { + w: 1, + h: 1, + x_center: 0.015625, + y_center: 0.921875 + }, + { + w: 1, + h: 1, + x_center: 0.046875, + y_center: 0.921875 + }, + { + w: 1, + h: 1, + x_center: 0.046875, + y_center: 0.921875 + }, + { + w: 1, + h: 1, + x_center: 0.078125, + y_center: 0.921875 + }, + { + w: 1, + h: 1, + x_center: 0.078125, + y_center: 0.921875 + }, + { + w: 1, + h: 1, + x_center: 0.109375, + y_center: 0.921875 + }, + { + w: 1, + h: 1, + x_center: 0.109375, + y_center: 0.921875 + }, + { + w: 1, + h: 1, + x_center: 0.140625, + y_center: 0.921875 + }, + { + w: 1, + h: 1, + x_center: 0.140625, + y_center: 0.921875 + }, + { + w: 1, + h: 1, + x_center: 0.171875, + y_center: 0.921875 + }, + { + w: 1, + h: 1, + x_center: 0.171875, + y_center: 0.921875 + }, + { + w: 1, + h: 1, + x_center: 0.203125, + y_center: 0.921875 + }, + { + w: 1, + h: 1, + x_center: 0.203125, + y_center: 0.921875 + }, + { + w: 1, + h: 1, + x_center: 0.234375, + y_center: 0.921875 + }, + { + w: 1, + h: 1, + x_center: 0.234375, + y_center: 0.921875 + }, + { + w: 1, + h: 1, + x_center: 0.265625, + y_center: 0.921875 + }, + { + w: 1, + h: 1, + x_center: 0.265625, + y_center: 0.921875 + }, + { + w: 1, + h: 1, + x_center: 0.296875, + y_center: 0.921875 + }, + { + w: 1, + h: 1, + x_center: 0.296875, + y_center: 0.921875 + }, + { + w: 1, + h: 1, + x_center: 0.328125, + y_center: 0.921875 + }, + { + w: 1, + h: 1, + x_center: 0.328125, + y_center: 0.921875 + }, + { + w: 1, + h: 1, + x_center: 0.359375, + y_center: 0.921875 + }, + { + w: 1, + h: 1, + x_center: 0.359375, + y_center: 0.921875 + }, + { + w: 1, + h: 1, + x_center: 0.390625, + y_center: 0.921875 + }, + { + w: 1, + h: 1, + x_center: 0.390625, + y_center: 0.921875 + }, + { + w: 1, + h: 1, + x_center: 0.421875, + y_center: 0.921875 + }, + { + w: 1, + h: 1, + x_center: 0.421875, + y_center: 0.921875 + }, + { + w: 1, + h: 1, + x_center: 0.453125, + y_center: 0.921875 + }, + { + w: 1, + h: 1, + x_center: 0.453125, + y_center: 0.921875 + }, + { + w: 1, + h: 1, + x_center: 0.484375, + y_center: 0.921875 + }, + { + w: 1, + h: 1, + x_center: 0.484375, + y_center: 0.921875 + }, + { + w: 1, + h: 1, + x_center: 0.515625, + y_center: 0.921875 + }, + { + w: 1, + h: 1, + x_center: 0.515625, + y_center: 0.921875 + }, + { + w: 1, + h: 1, + x_center: 0.546875, + y_center: 0.921875 + }, + { + w: 1, + h: 1, + x_center: 0.546875, + y_center: 0.921875 + }, + { + w: 1, + h: 1, + x_center: 0.578125, + y_center: 0.921875 + }, + { + w: 1, + h: 1, + x_center: 0.578125, + y_center: 0.921875 + }, + { + w: 1, + h: 1, + x_center: 0.609375, + y_center: 0.921875 + }, + { + w: 1, + h: 1, + x_center: 0.609375, + y_center: 0.921875 + }, + { + w: 1, + h: 1, + x_center: 0.640625, + y_center: 0.921875 + }, + { + w: 1, + h: 1, + x_center: 0.640625, + y_center: 0.921875 + }, + { + w: 1, + h: 1, + x_center: 0.671875, + y_center: 0.921875 + }, + { + w: 1, + h: 1, + x_center: 0.671875, + y_center: 0.921875 + }, + { + w: 1, + h: 1, + x_center: 0.703125, + y_center: 0.921875 + }, + { + w: 1, + h: 1, + x_center: 0.703125, + y_center: 0.921875 + }, + { + w: 1, + h: 1, + x_center: 0.734375, + y_center: 0.921875 + }, + { + w: 1, + h: 1, + x_center: 0.734375, + y_center: 0.921875 + }, + { + w: 1, + h: 1, + x_center: 0.765625, + y_center: 0.921875 + }, + { + w: 1, + h: 1, + x_center: 0.765625, + y_center: 0.921875 + }, + { + w: 1, + h: 1, + x_center: 0.796875, + y_center: 0.921875 + }, + { + w: 1, + h: 1, + x_center: 0.796875, + y_center: 0.921875 + }, + { + w: 1, + h: 1, + x_center: 0.828125, + y_center: 0.921875 + }, + { + w: 1, + h: 1, + x_center: 0.828125, + y_center: 0.921875 + }, + { + w: 1, + h: 1, + x_center: 0.859375, + y_center: 0.921875 + }, + { + w: 1, + h: 1, + x_center: 0.859375, + y_center: 0.921875 + }, + { + w: 1, + h: 1, + x_center: 0.890625, + y_center: 0.921875 + }, + { + w: 1, + h: 1, + x_center: 0.890625, + y_center: 0.921875 + }, + { + w: 1, + h: 1, + x_center: 0.921875, + y_center: 0.921875 + }, + { + w: 1, + h: 1, + x_center: 0.921875, + y_center: 0.921875 + }, + { + w: 1, + h: 1, + x_center: 0.953125, + y_center: 0.921875 + }, + { + w: 1, + h: 1, + x_center: 0.953125, + y_center: 0.921875 + }, + { + w: 1, + h: 1, + x_center: 0.984375, + y_center: 0.921875 + }, + { + w: 1, + h: 1, + x_center: 0.984375, + y_center: 0.921875 + }, + { + w: 1, + h: 1, + x_center: 0.015625, + y_center: 0.953125 + }, + { + w: 1, + h: 1, + x_center: 0.015625, + y_center: 0.953125 + }, + { + w: 1, + h: 1, + x_center: 0.046875, + y_center: 0.953125 + }, + { + w: 1, + h: 1, + x_center: 0.046875, + y_center: 0.953125 + }, + { + w: 1, + h: 1, + x_center: 0.078125, + y_center: 0.953125 + }, + { + w: 1, + h: 1, + x_center: 0.078125, + y_center: 0.953125 + }, + { + w: 1, + h: 1, + x_center: 0.109375, + y_center: 0.953125 + }, + { + w: 1, + h: 1, + x_center: 0.109375, + y_center: 0.953125 + }, + { + w: 1, + h: 1, + x_center: 0.140625, + y_center: 0.953125 + }, + { + w: 1, + h: 1, + x_center: 0.140625, + y_center: 0.953125 + }, + { + w: 1, + h: 1, + x_center: 0.171875, + y_center: 0.953125 + }, + { + w: 1, + h: 1, + x_center: 0.171875, + y_center: 0.953125 + }, + { + w: 1, + h: 1, + x_center: 0.203125, + y_center: 0.953125 + }, + { + w: 1, + h: 1, + x_center: 0.203125, + y_center: 0.953125 + }, + { + w: 1, + h: 1, + x_center: 0.234375, + y_center: 0.953125 + }, + { + w: 1, + h: 1, + x_center: 0.234375, + y_center: 0.953125 + }, + { + w: 1, + h: 1, + x_center: 0.265625, + y_center: 0.953125 + }, + { + w: 1, + h: 1, + x_center: 0.265625, + y_center: 0.953125 + }, + { + w: 1, + h: 1, + x_center: 0.296875, + y_center: 0.953125 + }, + { + w: 1, + h: 1, + x_center: 0.296875, + y_center: 0.953125 + }, + { + w: 1, + h: 1, + x_center: 0.328125, + y_center: 0.953125 + }, + { + w: 1, + h: 1, + x_center: 0.328125, + y_center: 0.953125 + }, + { + w: 1, + h: 1, + x_center: 0.359375, + y_center: 0.953125 + }, + { + w: 1, + h: 1, + x_center: 0.359375, + y_center: 0.953125 + }, + { + w: 1, + h: 1, + x_center: 0.390625, + y_center: 0.953125 + }, + { + w: 1, + h: 1, + x_center: 0.390625, + y_center: 0.953125 + }, + { + w: 1, + h: 1, + x_center: 0.421875, + y_center: 0.953125 + }, + { + w: 1, + h: 1, + x_center: 0.421875, + y_center: 0.953125 + }, + { + w: 1, + h: 1, + x_center: 0.453125, + y_center: 0.953125 + }, + { + w: 1, + h: 1, + x_center: 0.453125, + y_center: 0.953125 + }, + { + w: 1, + h: 1, + x_center: 0.484375, + y_center: 0.953125 + }, + { + w: 1, + h: 1, + x_center: 0.484375, + y_center: 0.953125 + }, + { + w: 1, + h: 1, + x_center: 0.515625, + y_center: 0.953125 + }, + { + w: 1, + h: 1, + x_center: 0.515625, + y_center: 0.953125 + }, + { + w: 1, + h: 1, + x_center: 0.546875, + y_center: 0.953125 + }, + { + w: 1, + h: 1, + x_center: 0.546875, + y_center: 0.953125 + }, + { + w: 1, + h: 1, + x_center: 0.578125, + y_center: 0.953125 + }, + { + w: 1, + h: 1, + x_center: 0.578125, + y_center: 0.953125 + }, + { + w: 1, + h: 1, + x_center: 0.609375, + y_center: 0.953125 + }, + { + w: 1, + h: 1, + x_center: 0.609375, + y_center: 0.953125 + }, + { + w: 1, + h: 1, + x_center: 0.640625, + y_center: 0.953125 + }, + { + w: 1, + h: 1, + x_center: 0.640625, + y_center: 0.953125 + }, + { + w: 1, + h: 1, + x_center: 0.671875, + y_center: 0.953125 + }, + { + w: 1, + h: 1, + x_center: 0.671875, + y_center: 0.953125 + }, + { + w: 1, + h: 1, + x_center: 0.703125, + y_center: 0.953125 + }, + { + w: 1, + h: 1, + x_center: 0.703125, + y_center: 0.953125 + }, + { + w: 1, + h: 1, + x_center: 0.734375, + y_center: 0.953125 + }, + { + w: 1, + h: 1, + x_center: 0.734375, + y_center: 0.953125 + }, + { + w: 1, + h: 1, + x_center: 0.765625, + y_center: 0.953125 + }, + { + w: 1, + h: 1, + x_center: 0.765625, + y_center: 0.953125 + }, + { + w: 1, + h: 1, + x_center: 0.796875, + y_center: 0.953125 + }, + { + w: 1, + h: 1, + x_center: 0.796875, + y_center: 0.953125 + }, + { + w: 1, + h: 1, + x_center: 0.828125, + y_center: 0.953125 + }, + { + w: 1, + h: 1, + x_center: 0.828125, + y_center: 0.953125 + }, + { + w: 1, + h: 1, + x_center: 0.859375, + y_center: 0.953125 + }, + { + w: 1, + h: 1, + x_center: 0.859375, + y_center: 0.953125 + }, + { + w: 1, + h: 1, + x_center: 0.890625, + y_center: 0.953125 + }, + { + w: 1, + h: 1, + x_center: 0.890625, + y_center: 0.953125 + }, + { + w: 1, + h: 1, + x_center: 0.921875, + y_center: 0.953125 + }, + { + w: 1, + h: 1, + x_center: 0.921875, + y_center: 0.953125 + }, + { + w: 1, + h: 1, + x_center: 0.953125, + y_center: 0.953125 + }, + { + w: 1, + h: 1, + x_center: 0.953125, + y_center: 0.953125 + }, + { + w: 1, + h: 1, + x_center: 0.984375, + y_center: 0.953125 + }, + { + w: 1, + h: 1, + x_center: 0.984375, + y_center: 0.953125 + }, + { + w: 1, + h: 1, + x_center: 0.015625, + y_center: 0.984375 + }, + { + w: 1, + h: 1, + x_center: 0.015625, + y_center: 0.984375 + }, + { + w: 1, + h: 1, + x_center: 0.046875, + y_center: 0.984375 + }, + { + w: 1, + h: 1, + x_center: 0.046875, + y_center: 0.984375 + }, + { + w: 1, + h: 1, + x_center: 0.078125, + y_center: 0.984375 + }, + { + w: 1, + h: 1, + x_center: 0.078125, + y_center: 0.984375 + }, + { + w: 1, + h: 1, + x_center: 0.109375, + y_center: 0.984375 + }, + { + w: 1, + h: 1, + x_center: 0.109375, + y_center: 0.984375 + }, + { + w: 1, + h: 1, + x_center: 0.140625, + y_center: 0.984375 + }, + { + w: 1, + h: 1, + x_center: 0.140625, + y_center: 0.984375 + }, + { + w: 1, + h: 1, + x_center: 0.171875, + y_center: 0.984375 + }, + { + w: 1, + h: 1, + x_center: 0.171875, + y_center: 0.984375 + }, + { + w: 1, + h: 1, + x_center: 0.203125, + y_center: 0.984375 + }, + { + w: 1, + h: 1, + x_center: 0.203125, + y_center: 0.984375 + }, + { + w: 1, + h: 1, + x_center: 0.234375, + y_center: 0.984375 + }, + { + w: 1, + h: 1, + x_center: 0.234375, + y_center: 0.984375 + }, + { + w: 1, + h: 1, + x_center: 0.265625, + y_center: 0.984375 + }, + { + w: 1, + h: 1, + x_center: 0.265625, + y_center: 0.984375 + }, + { + w: 1, + h: 1, + x_center: 0.296875, + y_center: 0.984375 + }, + { + w: 1, + h: 1, + x_center: 0.296875, + y_center: 0.984375 + }, + { + w: 1, + h: 1, + x_center: 0.328125, + y_center: 0.984375 + }, + { + w: 1, + h: 1, + x_center: 0.328125, + y_center: 0.984375 + }, + { + w: 1, + h: 1, + x_center: 0.359375, + y_center: 0.984375 + }, + { + w: 1, + h: 1, + x_center: 0.359375, + y_center: 0.984375 + }, + { + w: 1, + h: 1, + x_center: 0.390625, + y_center: 0.984375 + }, + { + w: 1, + h: 1, + x_center: 0.390625, + y_center: 0.984375 + }, + { + w: 1, + h: 1, + x_center: 0.421875, + y_center: 0.984375 + }, + { + w: 1, + h: 1, + x_center: 0.421875, + y_center: 0.984375 + }, + { + w: 1, + h: 1, + x_center: 0.453125, + y_center: 0.984375 + }, + { + w: 1, + h: 1, + x_center: 0.453125, + y_center: 0.984375 + }, + { + w: 1, + h: 1, + x_center: 0.484375, + y_center: 0.984375 + }, + { + w: 1, + h: 1, + x_center: 0.484375, + y_center: 0.984375 + }, + { + w: 1, + h: 1, + x_center: 0.515625, + y_center: 0.984375 + }, + { + w: 1, + h: 1, + x_center: 0.515625, + y_center: 0.984375 + }, + { + w: 1, + h: 1, + x_center: 0.546875, + y_center: 0.984375 + }, + { + w: 1, + h: 1, + x_center: 0.546875, + y_center: 0.984375 + }, + { + w: 1, + h: 1, + x_center: 0.578125, + y_center: 0.984375 + }, + { + w: 1, + h: 1, + x_center: 0.578125, + y_center: 0.984375 + }, + { + w: 1, + h: 1, + x_center: 0.609375, + y_center: 0.984375 + }, + { + w: 1, + h: 1, + x_center: 0.609375, + y_center: 0.984375 + }, + { + w: 1, + h: 1, + x_center: 0.640625, + y_center: 0.984375 + }, + { + w: 1, + h: 1, + x_center: 0.640625, + y_center: 0.984375 + }, + { + w: 1, + h: 1, + x_center: 0.671875, + y_center: 0.984375 + }, + { + w: 1, + h: 1, + x_center: 0.671875, + y_center: 0.984375 + }, + { + w: 1, + h: 1, + x_center: 0.703125, + y_center: 0.984375 + }, + { + w: 1, + h: 1, + x_center: 0.703125, + y_center: 0.984375 + }, + { + w: 1, + h: 1, + x_center: 0.734375, + y_center: 0.984375 + }, + { + w: 1, + h: 1, + x_center: 0.734375, + y_center: 0.984375 + }, + { + w: 1, + h: 1, + x_center: 0.765625, + y_center: 0.984375 + }, + { + w: 1, + h: 1, + x_center: 0.765625, + y_center: 0.984375 + }, + { + w: 1, + h: 1, + x_center: 0.796875, + y_center: 0.984375 + }, + { + w: 1, + h: 1, + x_center: 0.796875, + y_center: 0.984375 + }, + { + w: 1, + h: 1, + x_center: 0.828125, + y_center: 0.984375 + }, + { + w: 1, + h: 1, + x_center: 0.828125, + y_center: 0.984375 + }, + { + w: 1, + h: 1, + x_center: 0.859375, + y_center: 0.984375 + }, + { + w: 1, + h: 1, + x_center: 0.859375, + y_center: 0.984375 + }, + { + w: 1, + h: 1, + x_center: 0.890625, + y_center: 0.984375 + }, + { + w: 1, + h: 1, + x_center: 0.890625, + y_center: 0.984375 + }, + { + w: 1, + h: 1, + x_center: 0.921875, + y_center: 0.984375 + }, + { + w: 1, + h: 1, + x_center: 0.921875, + y_center: 0.984375 + }, + { + w: 1, + h: 1, + x_center: 0.953125, + y_center: 0.984375 + }, + { + w: 1, + h: 1, + x_center: 0.953125, + y_center: 0.984375 + }, + { + w: 1, + h: 1, + x_center: 0.984375, + y_center: 0.984375 + }, + { + w: 1, + h: 1, + x_center: 0.984375, + y_center: 0.984375 + }, + { + w: 1, + h: 1, + x_center: 0.03125, + y_center: 0.03125 + }, + { + w: 1, + h: 1, + x_center: 0.03125, + y_center: 0.03125 + }, + { + w: 1, + h: 1, + x_center: 0.09375, + y_center: 0.03125 + }, + { + w: 1, + h: 1, + x_center: 0.09375, + y_center: 0.03125 + }, + { + w: 1, + h: 1, + x_center: 0.15625, + y_center: 0.03125 + }, + { + w: 1, + h: 1, + x_center: 0.15625, + y_center: 0.03125 + }, + { + w: 1, + h: 1, + x_center: 0.21875, + y_center: 0.03125 + }, + { + w: 1, + h: 1, + x_center: 0.21875, + y_center: 0.03125 + }, + { + w: 1, + h: 1, + x_center: 0.28125, + y_center: 0.03125 + }, + { + w: 1, + h: 1, + x_center: 0.28125, + y_center: 0.03125 + }, + { + w: 1, + h: 1, + x_center: 0.34375, + y_center: 0.03125 + }, + { + w: 1, + h: 1, + x_center: 0.34375, + y_center: 0.03125 + }, + { + w: 1, + h: 1, + x_center: 0.40625, + y_center: 0.03125 + }, + { + w: 1, + h: 1, + x_center: 0.40625, + y_center: 0.03125 + }, + { + w: 1, + h: 1, + x_center: 0.46875, + y_center: 0.03125 + }, + { + w: 1, + h: 1, + x_center: 0.46875, + y_center: 0.03125 + }, + { + w: 1, + h: 1, + x_center: 0.53125, + y_center: 0.03125 + }, + { + w: 1, + h: 1, + x_center: 0.53125, + y_center: 0.03125 + }, + { + w: 1, + h: 1, + x_center: 0.59375, + y_center: 0.03125 + }, + { + w: 1, + h: 1, + x_center: 0.59375, + y_center: 0.03125 + }, + { + w: 1, + h: 1, + x_center: 0.65625, + y_center: 0.03125 + }, + { + w: 1, + h: 1, + x_center: 0.65625, + y_center: 0.03125 + }, + { + w: 1, + h: 1, + x_center: 0.71875, + y_center: 0.03125 + }, + { + w: 1, + h: 1, + x_center: 0.71875, + y_center: 0.03125 + }, + { + w: 1, + h: 1, + x_center: 0.78125, + y_center: 0.03125 + }, + { + w: 1, + h: 1, + x_center: 0.78125, + y_center: 0.03125 + }, + { + w: 1, + h: 1, + x_center: 0.84375, + y_center: 0.03125 + }, + { + w: 1, + h: 1, + x_center: 0.84375, + y_center: 0.03125 + }, + { + w: 1, + h: 1, + x_center: 0.90625, + y_center: 0.03125 + }, + { + w: 1, + h: 1, + x_center: 0.90625, + y_center: 0.03125 + }, + { + w: 1, + h: 1, + x_center: 0.96875, + y_center: 0.03125 + }, + { + w: 1, + h: 1, + x_center: 0.96875, + y_center: 0.03125 + }, + { + w: 1, + h: 1, + x_center: 0.03125, + y_center: 0.09375 + }, + { + w: 1, + h: 1, + x_center: 0.03125, + y_center: 0.09375 + }, + { + w: 1, + h: 1, + x_center: 0.09375, + y_center: 0.09375 + }, + { + w: 1, + h: 1, + x_center: 0.09375, + y_center: 0.09375 + }, + { + w: 1, + h: 1, + x_center: 0.15625, + y_center: 0.09375 + }, + { + w: 1, + h: 1, + x_center: 0.15625, + y_center: 0.09375 + }, + { + w: 1, + h: 1, + x_center: 0.21875, + y_center: 0.09375 + }, + { + w: 1, + h: 1, + x_center: 0.21875, + y_center: 0.09375 + }, + { + w: 1, + h: 1, + x_center: 0.28125, + y_center: 0.09375 + }, + { + w: 1, + h: 1, + x_center: 0.28125, + y_center: 0.09375 + }, + { + w: 1, + h: 1, + x_center: 0.34375, + y_center: 0.09375 + }, + { + w: 1, + h: 1, + x_center: 0.34375, + y_center: 0.09375 + }, + { + w: 1, + h: 1, + x_center: 0.40625, + y_center: 0.09375 + }, + { + w: 1, + h: 1, + x_center: 0.40625, + y_center: 0.09375 + }, + { + w: 1, + h: 1, + x_center: 0.46875, + y_center: 0.09375 + }, + { + w: 1, + h: 1, + x_center: 0.46875, + y_center: 0.09375 + }, + { + w: 1, + h: 1, + x_center: 0.53125, + y_center: 0.09375 + }, + { + w: 1, + h: 1, + x_center: 0.53125, + y_center: 0.09375 + }, + { + w: 1, + h: 1, + x_center: 0.59375, + y_center: 0.09375 + }, + { + w: 1, + h: 1, + x_center: 0.59375, + y_center: 0.09375 + }, + { + w: 1, + h: 1, + x_center: 0.65625, + y_center: 0.09375 + }, + { + w: 1, + h: 1, + x_center: 0.65625, + y_center: 0.09375 + }, + { + w: 1, + h: 1, + x_center: 0.71875, + y_center: 0.09375 + }, + { + w: 1, + h: 1, + x_center: 0.71875, + y_center: 0.09375 + }, + { + w: 1, + h: 1, + x_center: 0.78125, + y_center: 0.09375 + }, + { + w: 1, + h: 1, + x_center: 0.78125, + y_center: 0.09375 + }, + { + w: 1, + h: 1, + x_center: 0.84375, + y_center: 0.09375 + }, + { + w: 1, + h: 1, + x_center: 0.84375, + y_center: 0.09375 + }, + { + w: 1, + h: 1, + x_center: 0.90625, + y_center: 0.09375 + }, + { + w: 1, + h: 1, + x_center: 0.90625, + y_center: 0.09375 + }, + { + w: 1, + h: 1, + x_center: 0.96875, + y_center: 0.09375 + }, + { + w: 1, + h: 1, + x_center: 0.96875, + y_center: 0.09375 + }, + { + w: 1, + h: 1, + x_center: 0.03125, + y_center: 0.15625 + }, + { + w: 1, + h: 1, + x_center: 0.03125, + y_center: 0.15625 + }, + { + w: 1, + h: 1, + x_center: 0.09375, + y_center: 0.15625 + }, + { + w: 1, + h: 1, + x_center: 0.09375, + y_center: 0.15625 + }, + { + w: 1, + h: 1, + x_center: 0.15625, + y_center: 0.15625 + }, + { + w: 1, + h: 1, + x_center: 0.15625, + y_center: 0.15625 + }, + { + w: 1, + h: 1, + x_center: 0.21875, + y_center: 0.15625 + }, + { + w: 1, + h: 1, + x_center: 0.21875, + y_center: 0.15625 + }, + { + w: 1, + h: 1, + x_center: 0.28125, + y_center: 0.15625 + }, + { + w: 1, + h: 1, + x_center: 0.28125, + y_center: 0.15625 + }, + { + w: 1, + h: 1, + x_center: 0.34375, + y_center: 0.15625 + }, + { + w: 1, + h: 1, + x_center: 0.34375, + y_center: 0.15625 + }, + { + w: 1, + h: 1, + x_center: 0.40625, + y_center: 0.15625 + }, + { + w: 1, + h: 1, + x_center: 0.40625, + y_center: 0.15625 + }, + { + w: 1, + h: 1, + x_center: 0.46875, + y_center: 0.15625 + }, + { + w: 1, + h: 1, + x_center: 0.46875, + y_center: 0.15625 + }, + { + w: 1, + h: 1, + x_center: 0.53125, + y_center: 0.15625 + }, + { + w: 1, + h: 1, + x_center: 0.53125, + y_center: 0.15625 + }, + { + w: 1, + h: 1, + x_center: 0.59375, + y_center: 0.15625 + }, + { + w: 1, + h: 1, + x_center: 0.59375, + y_center: 0.15625 + }, + { + w: 1, + h: 1, + x_center: 0.65625, + y_center: 0.15625 + }, + { + w: 1, + h: 1, + x_center: 0.65625, + y_center: 0.15625 + }, + { + w: 1, + h: 1, + x_center: 0.71875, + y_center: 0.15625 + }, + { + w: 1, + h: 1, + x_center: 0.71875, + y_center: 0.15625 + }, + { + w: 1, + h: 1, + x_center: 0.78125, + y_center: 0.15625 + }, + { + w: 1, + h: 1, + x_center: 0.78125, + y_center: 0.15625 + }, + { + w: 1, + h: 1, + x_center: 0.84375, + y_center: 0.15625 + }, + { + w: 1, + h: 1, + x_center: 0.84375, + y_center: 0.15625 + }, + { + w: 1, + h: 1, + x_center: 0.90625, + y_center: 0.15625 + }, + { + w: 1, + h: 1, + x_center: 0.90625, + y_center: 0.15625 + }, + { + w: 1, + h: 1, + x_center: 0.96875, + y_center: 0.15625 + }, + { + w: 1, + h: 1, + x_center: 0.96875, + y_center: 0.15625 + }, + { + w: 1, + h: 1, + x_center: 0.03125, + y_center: 0.21875 + }, + { + w: 1, + h: 1, + x_center: 0.03125, + y_center: 0.21875 + }, + { + w: 1, + h: 1, + x_center: 0.09375, + y_center: 0.21875 + }, + { + w: 1, + h: 1, + x_center: 0.09375, + y_center: 0.21875 + }, + { + w: 1, + h: 1, + x_center: 0.15625, + y_center: 0.21875 + }, + { + w: 1, + h: 1, + x_center: 0.15625, + y_center: 0.21875 + }, + { + w: 1, + h: 1, + x_center: 0.21875, + y_center: 0.21875 + }, + { + w: 1, + h: 1, + x_center: 0.21875, + y_center: 0.21875 + }, + { + w: 1, + h: 1, + x_center: 0.28125, + y_center: 0.21875 + }, + { + w: 1, + h: 1, + x_center: 0.28125, + y_center: 0.21875 + }, + { + w: 1, + h: 1, + x_center: 0.34375, + y_center: 0.21875 + }, + { + w: 1, + h: 1, + x_center: 0.34375, + y_center: 0.21875 + }, + { + w: 1, + h: 1, + x_center: 0.40625, + y_center: 0.21875 + }, + { + w: 1, + h: 1, + x_center: 0.40625, + y_center: 0.21875 + }, + { + w: 1, + h: 1, + x_center: 0.46875, + y_center: 0.21875 + }, + { + w: 1, + h: 1, + x_center: 0.46875, + y_center: 0.21875 + }, + { + w: 1, + h: 1, + x_center: 0.53125, + y_center: 0.21875 + }, + { + w: 1, + h: 1, + x_center: 0.53125, + y_center: 0.21875 + }, + { + w: 1, + h: 1, + x_center: 0.59375, + y_center: 0.21875 + }, + { + w: 1, + h: 1, + x_center: 0.59375, + y_center: 0.21875 + }, + { + w: 1, + h: 1, + x_center: 0.65625, + y_center: 0.21875 + }, + { + w: 1, + h: 1, + x_center: 0.65625, + y_center: 0.21875 + }, + { + w: 1, + h: 1, + x_center: 0.71875, + y_center: 0.21875 + }, + { + w: 1, + h: 1, + x_center: 0.71875, + y_center: 0.21875 + }, + { + w: 1, + h: 1, + x_center: 0.78125, + y_center: 0.21875 + }, + { + w: 1, + h: 1, + x_center: 0.78125, + y_center: 0.21875 + }, + { + w: 1, + h: 1, + x_center: 0.84375, + y_center: 0.21875 + }, + { + w: 1, + h: 1, + x_center: 0.84375, + y_center: 0.21875 + }, + { + w: 1, + h: 1, + x_center: 0.90625, + y_center: 0.21875 + }, + { + w: 1, + h: 1, + x_center: 0.90625, + y_center: 0.21875 + }, + { + w: 1, + h: 1, + x_center: 0.96875, + y_center: 0.21875 + }, + { + w: 1, + h: 1, + x_center: 0.96875, + y_center: 0.21875 + }, + { + w: 1, + h: 1, + x_center: 0.03125, + y_center: 0.28125 + }, + { + w: 1, + h: 1, + x_center: 0.03125, + y_center: 0.28125 + }, + { + w: 1, + h: 1, + x_center: 0.09375, + y_center: 0.28125 + }, + { + w: 1, + h: 1, + x_center: 0.09375, + y_center: 0.28125 + }, + { + w: 1, + h: 1, + x_center: 0.15625, + y_center: 0.28125 + }, + { + w: 1, + h: 1, + x_center: 0.15625, + y_center: 0.28125 + }, + { + w: 1, + h: 1, + x_center: 0.21875, + y_center: 0.28125 + }, + { + w: 1, + h: 1, + x_center: 0.21875, + y_center: 0.28125 + }, + { + w: 1, + h: 1, + x_center: 0.28125, + y_center: 0.28125 + }, + { + w: 1, + h: 1, + x_center: 0.28125, + y_center: 0.28125 + }, + { + w: 1, + h: 1, + x_center: 0.34375, + y_center: 0.28125 + }, + { + w: 1, + h: 1, + x_center: 0.34375, + y_center: 0.28125 + }, + { + w: 1, + h: 1, + x_center: 0.40625, + y_center: 0.28125 + }, + { + w: 1, + h: 1, + x_center: 0.40625, + y_center: 0.28125 + }, + { + w: 1, + h: 1, + x_center: 0.46875, + y_center: 0.28125 + }, + { + w: 1, + h: 1, + x_center: 0.46875, + y_center: 0.28125 + }, + { + w: 1, + h: 1, + x_center: 0.53125, + y_center: 0.28125 + }, + { + w: 1, + h: 1, + x_center: 0.53125, + y_center: 0.28125 + }, + { + w: 1, + h: 1, + x_center: 0.59375, + y_center: 0.28125 + }, + { + w: 1, + h: 1, + x_center: 0.59375, + y_center: 0.28125 + }, + { + w: 1, + h: 1, + x_center: 0.65625, + y_center: 0.28125 + }, + { + w: 1, + h: 1, + x_center: 0.65625, + y_center: 0.28125 + }, + { + w: 1, + h: 1, + x_center: 0.71875, + y_center: 0.28125 + }, + { + w: 1, + h: 1, + x_center: 0.71875, + y_center: 0.28125 + }, + { + w: 1, + h: 1, + x_center: 0.78125, + y_center: 0.28125 + }, + { + w: 1, + h: 1, + x_center: 0.78125, + y_center: 0.28125 + }, + { + w: 1, + h: 1, + x_center: 0.84375, + y_center: 0.28125 + }, + { + w: 1, + h: 1, + x_center: 0.84375, + y_center: 0.28125 + }, + { + w: 1, + h: 1, + x_center: 0.90625, + y_center: 0.28125 + }, + { + w: 1, + h: 1, + x_center: 0.90625, + y_center: 0.28125 + }, + { + w: 1, + h: 1, + x_center: 0.96875, + y_center: 0.28125 + }, + { + w: 1, + h: 1, + x_center: 0.96875, + y_center: 0.28125 + }, + { + w: 1, + h: 1, + x_center: 0.03125, + y_center: 0.34375 + }, + { + w: 1, + h: 1, + x_center: 0.03125, + y_center: 0.34375 + }, + { + w: 1, + h: 1, + x_center: 0.09375, + y_center: 0.34375 + }, + { + w: 1, + h: 1, + x_center: 0.09375, + y_center: 0.34375 + }, + { + w: 1, + h: 1, + x_center: 0.15625, + y_center: 0.34375 + }, + { + w: 1, + h: 1, + x_center: 0.15625, + y_center: 0.34375 + }, + { + w: 1, + h: 1, + x_center: 0.21875, + y_center: 0.34375 + }, + { + w: 1, + h: 1, + x_center: 0.21875, + y_center: 0.34375 + }, + { + w: 1, + h: 1, + x_center: 0.28125, + y_center: 0.34375 + }, + { + w: 1, + h: 1, + x_center: 0.28125, + y_center: 0.34375 + }, + { + w: 1, + h: 1, + x_center: 0.34375, + y_center: 0.34375 + }, + { + w: 1, + h: 1, + x_center: 0.34375, + y_center: 0.34375 + }, + { + w: 1, + h: 1, + x_center: 0.40625, + y_center: 0.34375 + }, + { + w: 1, + h: 1, + x_center: 0.40625, + y_center: 0.34375 + }, + { + w: 1, + h: 1, + x_center: 0.46875, + y_center: 0.34375 + }, + { + w: 1, + h: 1, + x_center: 0.46875, + y_center: 0.34375 + }, + { + w: 1, + h: 1, + x_center: 0.53125, + y_center: 0.34375 + }, + { + w: 1, + h: 1, + x_center: 0.53125, + y_center: 0.34375 + }, + { + w: 1, + h: 1, + x_center: 0.59375, + y_center: 0.34375 + }, + { + w: 1, + h: 1, + x_center: 0.59375, + y_center: 0.34375 + }, + { + w: 1, + h: 1, + x_center: 0.65625, + y_center: 0.34375 + }, + { + w: 1, + h: 1, + x_center: 0.65625, + y_center: 0.34375 + }, + { + w: 1, + h: 1, + x_center: 0.71875, + y_center: 0.34375 + }, + { + w: 1, + h: 1, + x_center: 0.71875, + y_center: 0.34375 + }, + { + w: 1, + h: 1, + x_center: 0.78125, + y_center: 0.34375 + }, + { + w: 1, + h: 1, + x_center: 0.78125, + y_center: 0.34375 + }, + { + w: 1, + h: 1, + x_center: 0.84375, + y_center: 0.34375 + }, + { + w: 1, + h: 1, + x_center: 0.84375, + y_center: 0.34375 + }, + { + w: 1, + h: 1, + x_center: 0.90625, + y_center: 0.34375 + }, + { + w: 1, + h: 1, + x_center: 0.90625, + y_center: 0.34375 + }, + { + w: 1, + h: 1, + x_center: 0.96875, + y_center: 0.34375 + }, + { + w: 1, + h: 1, + x_center: 0.96875, + y_center: 0.34375 + }, + { + w: 1, + h: 1, + x_center: 0.03125, + y_center: 0.40625 + }, + { + w: 1, + h: 1, + x_center: 0.03125, + y_center: 0.40625 + }, + { + w: 1, + h: 1, + x_center: 0.09375, + y_center: 0.40625 + }, + { + w: 1, + h: 1, + x_center: 0.09375, + y_center: 0.40625 + }, + { + w: 1, + h: 1, + x_center: 0.15625, + y_center: 0.40625 + }, + { + w: 1, + h: 1, + x_center: 0.15625, + y_center: 0.40625 + }, + { + w: 1, + h: 1, + x_center: 0.21875, + y_center: 0.40625 + }, + { + w: 1, + h: 1, + x_center: 0.21875, + y_center: 0.40625 + }, + { + w: 1, + h: 1, + x_center: 0.28125, + y_center: 0.40625 + }, + { + w: 1, + h: 1, + x_center: 0.28125, + y_center: 0.40625 + }, + { + w: 1, + h: 1, + x_center: 0.34375, + y_center: 0.40625 + }, + { + w: 1, + h: 1, + x_center: 0.34375, + y_center: 0.40625 + }, + { + w: 1, + h: 1, + x_center: 0.40625, + y_center: 0.40625 + }, + { + w: 1, + h: 1, + x_center: 0.40625, + y_center: 0.40625 + }, + { + w: 1, + h: 1, + x_center: 0.46875, + y_center: 0.40625 + }, + { + w: 1, + h: 1, + x_center: 0.46875, + y_center: 0.40625 + }, + { + w: 1, + h: 1, + x_center: 0.53125, + y_center: 0.40625 + }, + { + w: 1, + h: 1, + x_center: 0.53125, + y_center: 0.40625 + }, + { + w: 1, + h: 1, + x_center: 0.59375, + y_center: 0.40625 + }, + { + w: 1, + h: 1, + x_center: 0.59375, + y_center: 0.40625 + }, + { + w: 1, + h: 1, + x_center: 0.65625, + y_center: 0.40625 + }, + { + w: 1, + h: 1, + x_center: 0.65625, + y_center: 0.40625 + }, + { + w: 1, + h: 1, + x_center: 0.71875, + y_center: 0.40625 + }, + { + w: 1, + h: 1, + x_center: 0.71875, + y_center: 0.40625 + }, + { + w: 1, + h: 1, + x_center: 0.78125, + y_center: 0.40625 + }, + { + w: 1, + h: 1, + x_center: 0.78125, + y_center: 0.40625 + }, + { + w: 1, + h: 1, + x_center: 0.84375, + y_center: 0.40625 + }, + { + w: 1, + h: 1, + x_center: 0.84375, + y_center: 0.40625 + }, + { + w: 1, + h: 1, + x_center: 0.90625, + y_center: 0.40625 + }, + { + w: 1, + h: 1, + x_center: 0.90625, + y_center: 0.40625 + }, + { + w: 1, + h: 1, + x_center: 0.96875, + y_center: 0.40625 + }, + { + w: 1, + h: 1, + x_center: 0.96875, + y_center: 0.40625 + }, + { + w: 1, + h: 1, + x_center: 0.03125, + y_center: 0.46875 + }, + { + w: 1, + h: 1, + x_center: 0.03125, + y_center: 0.46875 + }, + { + w: 1, + h: 1, + x_center: 0.09375, + y_center: 0.46875 + }, + { + w: 1, + h: 1, + x_center: 0.09375, + y_center: 0.46875 + }, + { + w: 1, + h: 1, + x_center: 0.15625, + y_center: 0.46875 + }, + { + w: 1, + h: 1, + x_center: 0.15625, + y_center: 0.46875 + }, + { + w: 1, + h: 1, + x_center: 0.21875, + y_center: 0.46875 + }, + { + w: 1, + h: 1, + x_center: 0.21875, + y_center: 0.46875 + }, + { + w: 1, + h: 1, + x_center: 0.28125, + y_center: 0.46875 + }, + { + w: 1, + h: 1, + x_center: 0.28125, + y_center: 0.46875 + }, + { + w: 1, + h: 1, + x_center: 0.34375, + y_center: 0.46875 + }, + { + w: 1, + h: 1, + x_center: 0.34375, + y_center: 0.46875 + }, + { + w: 1, + h: 1, + x_center: 0.40625, + y_center: 0.46875 + }, + { + w: 1, + h: 1, + x_center: 0.40625, + y_center: 0.46875 + }, + { + w: 1, + h: 1, + x_center: 0.46875, + y_center: 0.46875 + }, + { + w: 1, + h: 1, + x_center: 0.46875, + y_center: 0.46875 + }, + { + w: 1, + h: 1, + x_center: 0.53125, + y_center: 0.46875 + }, + { + w: 1, + h: 1, + x_center: 0.53125, + y_center: 0.46875 + }, + { + w: 1, + h: 1, + x_center: 0.59375, + y_center: 0.46875 + }, + { + w: 1, + h: 1, + x_center: 0.59375, + y_center: 0.46875 + }, + { + w: 1, + h: 1, + x_center: 0.65625, + y_center: 0.46875 + }, + { + w: 1, + h: 1, + x_center: 0.65625, + y_center: 0.46875 + }, + { + w: 1, + h: 1, + x_center: 0.71875, + y_center: 0.46875 + }, + { + w: 1, + h: 1, + x_center: 0.71875, + y_center: 0.46875 + }, + { + w: 1, + h: 1, + x_center: 0.78125, + y_center: 0.46875 + }, + { + w: 1, + h: 1, + x_center: 0.78125, + y_center: 0.46875 + }, + { + w: 1, + h: 1, + x_center: 0.84375, + y_center: 0.46875 + }, + { + w: 1, + h: 1, + x_center: 0.84375, + y_center: 0.46875 + }, + { + w: 1, + h: 1, + x_center: 0.90625, + y_center: 0.46875 + }, + { + w: 1, + h: 1, + x_center: 0.90625, + y_center: 0.46875 + }, + { + w: 1, + h: 1, + x_center: 0.96875, + y_center: 0.46875 + }, + { + w: 1, + h: 1, + x_center: 0.96875, + y_center: 0.46875 + }, + { + w: 1, + h: 1, + x_center: 0.03125, + y_center: 0.53125 + }, + { + w: 1, + h: 1, + x_center: 0.03125, + y_center: 0.53125 + }, + { + w: 1, + h: 1, + x_center: 0.09375, + y_center: 0.53125 + }, + { + w: 1, + h: 1, + x_center: 0.09375, + y_center: 0.53125 + }, + { + w: 1, + h: 1, + x_center: 0.15625, + y_center: 0.53125 + }, + { + w: 1, + h: 1, + x_center: 0.15625, + y_center: 0.53125 + }, + { + w: 1, + h: 1, + x_center: 0.21875, + y_center: 0.53125 + }, + { + w: 1, + h: 1, + x_center: 0.21875, + y_center: 0.53125 + }, + { + w: 1, + h: 1, + x_center: 0.28125, + y_center: 0.53125 + }, + { + w: 1, + h: 1, + x_center: 0.28125, + y_center: 0.53125 + }, + { + w: 1, + h: 1, + x_center: 0.34375, + y_center: 0.53125 + }, + { + w: 1, + h: 1, + x_center: 0.34375, + y_center: 0.53125 + }, + { + w: 1, + h: 1, + x_center: 0.40625, + y_center: 0.53125 + }, + { + w: 1, + h: 1, + x_center: 0.40625, + y_center: 0.53125 + }, + { + w: 1, + h: 1, + x_center: 0.46875, + y_center: 0.53125 + }, + { + w: 1, + h: 1, + x_center: 0.46875, + y_center: 0.53125 + }, + { + w: 1, + h: 1, + x_center: 0.53125, + y_center: 0.53125 + }, + { + w: 1, + h: 1, + x_center: 0.53125, + y_center: 0.53125 + }, + { + w: 1, + h: 1, + x_center: 0.59375, + y_center: 0.53125 + }, + { + w: 1, + h: 1, + x_center: 0.59375, + y_center: 0.53125 + }, + { + w: 1, + h: 1, + x_center: 0.65625, + y_center: 0.53125 + }, + { + w: 1, + h: 1, + x_center: 0.65625, + y_center: 0.53125 + }, + { + w: 1, + h: 1, + x_center: 0.71875, + y_center: 0.53125 + }, + { + w: 1, + h: 1, + x_center: 0.71875, + y_center: 0.53125 + }, + { + w: 1, + h: 1, + x_center: 0.78125, + y_center: 0.53125 + }, + { + w: 1, + h: 1, + x_center: 0.78125, + y_center: 0.53125 + }, + { + w: 1, + h: 1, + x_center: 0.84375, + y_center: 0.53125 + }, + { + w: 1, + h: 1, + x_center: 0.84375, + y_center: 0.53125 + }, + { + w: 1, + h: 1, + x_center: 0.90625, + y_center: 0.53125 + }, + { + w: 1, + h: 1, + x_center: 0.90625, + y_center: 0.53125 + }, + { + w: 1, + h: 1, + x_center: 0.96875, + y_center: 0.53125 + }, + { + w: 1, + h: 1, + x_center: 0.96875, + y_center: 0.53125 + }, + { + w: 1, + h: 1, + x_center: 0.03125, + y_center: 0.59375 + }, + { + w: 1, + h: 1, + x_center: 0.03125, + y_center: 0.59375 + }, + { + w: 1, + h: 1, + x_center: 0.09375, + y_center: 0.59375 + }, + { + w: 1, + h: 1, + x_center: 0.09375, + y_center: 0.59375 + }, + { + w: 1, + h: 1, + x_center: 0.15625, + y_center: 0.59375 + }, + { + w: 1, + h: 1, + x_center: 0.15625, + y_center: 0.59375 + }, + { + w: 1, + h: 1, + x_center: 0.21875, + y_center: 0.59375 + }, + { + w: 1, + h: 1, + x_center: 0.21875, + y_center: 0.59375 + }, + { + w: 1, + h: 1, + x_center: 0.28125, + y_center: 0.59375 + }, + { + w: 1, + h: 1, + x_center: 0.28125, + y_center: 0.59375 + }, + { + w: 1, + h: 1, + x_center: 0.34375, + y_center: 0.59375 + }, + { + w: 1, + h: 1, + x_center: 0.34375, + y_center: 0.59375 + }, + { + w: 1, + h: 1, + x_center: 0.40625, + y_center: 0.59375 + }, + { + w: 1, + h: 1, + x_center: 0.40625, + y_center: 0.59375 + }, + { + w: 1, + h: 1, + x_center: 0.46875, + y_center: 0.59375 + }, + { + w: 1, + h: 1, + x_center: 0.46875, + y_center: 0.59375 + }, + { + w: 1, + h: 1, + x_center: 0.53125, + y_center: 0.59375 + }, + { + w: 1, + h: 1, + x_center: 0.53125, + y_center: 0.59375 + }, + { + w: 1, + h: 1, + x_center: 0.59375, + y_center: 0.59375 + }, + { + w: 1, + h: 1, + x_center: 0.59375, + y_center: 0.59375 + }, + { + w: 1, + h: 1, + x_center: 0.65625, + y_center: 0.59375 + }, + { + w: 1, + h: 1, + x_center: 0.65625, + y_center: 0.59375 + }, + { + w: 1, + h: 1, + x_center: 0.71875, + y_center: 0.59375 + }, + { + w: 1, + h: 1, + x_center: 0.71875, + y_center: 0.59375 + }, + { + w: 1, + h: 1, + x_center: 0.78125, + y_center: 0.59375 + }, + { + w: 1, + h: 1, + x_center: 0.78125, + y_center: 0.59375 + }, + { + w: 1, + h: 1, + x_center: 0.84375, + y_center: 0.59375 + }, + { + w: 1, + h: 1, + x_center: 0.84375, + y_center: 0.59375 + }, + { + w: 1, + h: 1, + x_center: 0.90625, + y_center: 0.59375 + }, + { + w: 1, + h: 1, + x_center: 0.90625, + y_center: 0.59375 + }, + { + w: 1, + h: 1, + x_center: 0.96875, + y_center: 0.59375 + }, + { + w: 1, + h: 1, + x_center: 0.96875, + y_center: 0.59375 + }, + { + w: 1, + h: 1, + x_center: 0.03125, + y_center: 0.65625 + }, + { + w: 1, + h: 1, + x_center: 0.03125, + y_center: 0.65625 + }, + { + w: 1, + h: 1, + x_center: 0.09375, + y_center: 0.65625 + }, + { + w: 1, + h: 1, + x_center: 0.09375, + y_center: 0.65625 + }, + { + w: 1, + h: 1, + x_center: 0.15625, + y_center: 0.65625 + }, + { + w: 1, + h: 1, + x_center: 0.15625, + y_center: 0.65625 + }, + { + w: 1, + h: 1, + x_center: 0.21875, + y_center: 0.65625 + }, + { + w: 1, + h: 1, + x_center: 0.21875, + y_center: 0.65625 + }, + { + w: 1, + h: 1, + x_center: 0.28125, + y_center: 0.65625 + }, + { + w: 1, + h: 1, + x_center: 0.28125, + y_center: 0.65625 + }, + { + w: 1, + h: 1, + x_center: 0.34375, + y_center: 0.65625 + }, + { + w: 1, + h: 1, + x_center: 0.34375, + y_center: 0.65625 + }, + { + w: 1, + h: 1, + x_center: 0.40625, + y_center: 0.65625 + }, + { + w: 1, + h: 1, + x_center: 0.40625, + y_center: 0.65625 + }, + { + w: 1, + h: 1, + x_center: 0.46875, + y_center: 0.65625 + }, + { + w: 1, + h: 1, + x_center: 0.46875, + y_center: 0.65625 + }, + { + w: 1, + h: 1, + x_center: 0.53125, + y_center: 0.65625 + }, + { + w: 1, + h: 1, + x_center: 0.53125, + y_center: 0.65625 + }, + { + w: 1, + h: 1, + x_center: 0.59375, + y_center: 0.65625 + }, + { + w: 1, + h: 1, + x_center: 0.59375, + y_center: 0.65625 + }, + { + w: 1, + h: 1, + x_center: 0.65625, + y_center: 0.65625 + }, + { + w: 1, + h: 1, + x_center: 0.65625, + y_center: 0.65625 + }, + { + w: 1, + h: 1, + x_center: 0.71875, + y_center: 0.65625 + }, + { + w: 1, + h: 1, + x_center: 0.71875, + y_center: 0.65625 + }, + { + w: 1, + h: 1, + x_center: 0.78125, + y_center: 0.65625 + }, + { + w: 1, + h: 1, + x_center: 0.78125, + y_center: 0.65625 + }, + { + w: 1, + h: 1, + x_center: 0.84375, + y_center: 0.65625 + }, + { + w: 1, + h: 1, + x_center: 0.84375, + y_center: 0.65625 + }, + { + w: 1, + h: 1, + x_center: 0.90625, + y_center: 0.65625 + }, + { + w: 1, + h: 1, + x_center: 0.90625, + y_center: 0.65625 + }, + { + w: 1, + h: 1, + x_center: 0.96875, + y_center: 0.65625 + }, + { + w: 1, + h: 1, + x_center: 0.96875, + y_center: 0.65625 + }, + { + w: 1, + h: 1, + x_center: 0.03125, + y_center: 0.71875 + }, + { + w: 1, + h: 1, + x_center: 0.03125, + y_center: 0.71875 + }, + { + w: 1, + h: 1, + x_center: 0.09375, + y_center: 0.71875 + }, + { + w: 1, + h: 1, + x_center: 0.09375, + y_center: 0.71875 + }, + { + w: 1, + h: 1, + x_center: 0.15625, + y_center: 0.71875 + }, + { + w: 1, + h: 1, + x_center: 0.15625, + y_center: 0.71875 + }, + { + w: 1, + h: 1, + x_center: 0.21875, + y_center: 0.71875 + }, + { + w: 1, + h: 1, + x_center: 0.21875, + y_center: 0.71875 + }, + { + w: 1, + h: 1, + x_center: 0.28125, + y_center: 0.71875 + }, + { + w: 1, + h: 1, + x_center: 0.28125, + y_center: 0.71875 + }, + { + w: 1, + h: 1, + x_center: 0.34375, + y_center: 0.71875 + }, + { + w: 1, + h: 1, + x_center: 0.34375, + y_center: 0.71875 + }, + { + w: 1, + h: 1, + x_center: 0.40625, + y_center: 0.71875 + }, + { + w: 1, + h: 1, + x_center: 0.40625, + y_center: 0.71875 + }, + { + w: 1, + h: 1, + x_center: 0.46875, + y_center: 0.71875 + }, + { + w: 1, + h: 1, + x_center: 0.46875, + y_center: 0.71875 + }, + { + w: 1, + h: 1, + x_center: 0.53125, + y_center: 0.71875 + }, + { + w: 1, + h: 1, + x_center: 0.53125, + y_center: 0.71875 + }, + { + w: 1, + h: 1, + x_center: 0.59375, + y_center: 0.71875 + }, + { + w: 1, + h: 1, + x_center: 0.59375, + y_center: 0.71875 + }, + { + w: 1, + h: 1, + x_center: 0.65625, + y_center: 0.71875 + }, + { + w: 1, + h: 1, + x_center: 0.65625, + y_center: 0.71875 + }, + { + w: 1, + h: 1, + x_center: 0.71875, + y_center: 0.71875 + }, + { + w: 1, + h: 1, + x_center: 0.71875, + y_center: 0.71875 + }, + { + w: 1, + h: 1, + x_center: 0.78125, + y_center: 0.71875 + }, + { + w: 1, + h: 1, + x_center: 0.78125, + y_center: 0.71875 + }, + { + w: 1, + h: 1, + x_center: 0.84375, + y_center: 0.71875 + }, + { + w: 1, + h: 1, + x_center: 0.84375, + y_center: 0.71875 + }, + { + w: 1, + h: 1, + x_center: 0.90625, + y_center: 0.71875 + }, + { + w: 1, + h: 1, + x_center: 0.90625, + y_center: 0.71875 + }, + { + w: 1, + h: 1, + x_center: 0.96875, + y_center: 0.71875 + }, + { + w: 1, + h: 1, + x_center: 0.96875, + y_center: 0.71875 + }, + { + w: 1, + h: 1, + x_center: 0.03125, + y_center: 0.78125 + }, + { + w: 1, + h: 1, + x_center: 0.03125, + y_center: 0.78125 + }, + { + w: 1, + h: 1, + x_center: 0.09375, + y_center: 0.78125 + }, + { + w: 1, + h: 1, + x_center: 0.09375, + y_center: 0.78125 + }, + { + w: 1, + h: 1, + x_center: 0.15625, + y_center: 0.78125 + }, + { + w: 1, + h: 1, + x_center: 0.15625, + y_center: 0.78125 + }, + { + w: 1, + h: 1, + x_center: 0.21875, + y_center: 0.78125 + }, + { + w: 1, + h: 1, + x_center: 0.21875, + y_center: 0.78125 + }, + { + w: 1, + h: 1, + x_center: 0.28125, + y_center: 0.78125 + }, + { + w: 1, + h: 1, + x_center: 0.28125, + y_center: 0.78125 + }, + { + w: 1, + h: 1, + x_center: 0.34375, + y_center: 0.78125 + }, + { + w: 1, + h: 1, + x_center: 0.34375, + y_center: 0.78125 + }, + { + w: 1, + h: 1, + x_center: 0.40625, + y_center: 0.78125 + }, + { + w: 1, + h: 1, + x_center: 0.40625, + y_center: 0.78125 + }, + { + w: 1, + h: 1, + x_center: 0.46875, + y_center: 0.78125 + }, + { + w: 1, + h: 1, + x_center: 0.46875, + y_center: 0.78125 + }, + { + w: 1, + h: 1, + x_center: 0.53125, + y_center: 0.78125 + }, + { + w: 1, + h: 1, + x_center: 0.53125, + y_center: 0.78125 + }, + { + w: 1, + h: 1, + x_center: 0.59375, + y_center: 0.78125 + }, + { + w: 1, + h: 1, + x_center: 0.59375, + y_center: 0.78125 + }, + { + w: 1, + h: 1, + x_center: 0.65625, + y_center: 0.78125 + }, + { + w: 1, + h: 1, + x_center: 0.65625, + y_center: 0.78125 + }, + { + w: 1, + h: 1, + x_center: 0.71875, + y_center: 0.78125 + }, + { + w: 1, + h: 1, + x_center: 0.71875, + y_center: 0.78125 + }, + { + w: 1, + h: 1, + x_center: 0.78125, + y_center: 0.78125 + }, + { + w: 1, + h: 1, + x_center: 0.78125, + y_center: 0.78125 + }, + { + w: 1, + h: 1, + x_center: 0.84375, + y_center: 0.78125 + }, + { + w: 1, + h: 1, + x_center: 0.84375, + y_center: 0.78125 + }, + { + w: 1, + h: 1, + x_center: 0.90625, + y_center: 0.78125 + }, + { + w: 1, + h: 1, + x_center: 0.90625, + y_center: 0.78125 + }, + { + w: 1, + h: 1, + x_center: 0.96875, + y_center: 0.78125 + }, + { + w: 1, + h: 1, + x_center: 0.96875, + y_center: 0.78125 + }, + { + w: 1, + h: 1, + x_center: 0.03125, + y_center: 0.84375 + }, + { + w: 1, + h: 1, + x_center: 0.03125, + y_center: 0.84375 + }, + { + w: 1, + h: 1, + x_center: 0.09375, + y_center: 0.84375 + }, + { + w: 1, + h: 1, + x_center: 0.09375, + y_center: 0.84375 + }, + { + w: 1, + h: 1, + x_center: 0.15625, + y_center: 0.84375 + }, + { + w: 1, + h: 1, + x_center: 0.15625, + y_center: 0.84375 + }, + { + w: 1, + h: 1, + x_center: 0.21875, + y_center: 0.84375 + }, + { + w: 1, + h: 1, + x_center: 0.21875, + y_center: 0.84375 + }, + { + w: 1, + h: 1, + x_center: 0.28125, + y_center: 0.84375 + }, + { + w: 1, + h: 1, + x_center: 0.28125, + y_center: 0.84375 + }, + { + w: 1, + h: 1, + x_center: 0.34375, + y_center: 0.84375 + }, + { + w: 1, + h: 1, + x_center: 0.34375, + y_center: 0.84375 + }, + { + w: 1, + h: 1, + x_center: 0.40625, + y_center: 0.84375 + }, + { + w: 1, + h: 1, + x_center: 0.40625, + y_center: 0.84375 + }, + { + w: 1, + h: 1, + x_center: 0.46875, + y_center: 0.84375 + }, + { + w: 1, + h: 1, + x_center: 0.46875, + y_center: 0.84375 + }, + { + w: 1, + h: 1, + x_center: 0.53125, + y_center: 0.84375 + }, + { + w: 1, + h: 1, + x_center: 0.53125, + y_center: 0.84375 + }, + { + w: 1, + h: 1, + x_center: 0.59375, + y_center: 0.84375 + }, + { + w: 1, + h: 1, + x_center: 0.59375, + y_center: 0.84375 + }, + { + w: 1, + h: 1, + x_center: 0.65625, + y_center: 0.84375 + }, + { + w: 1, + h: 1, + x_center: 0.65625, + y_center: 0.84375 + }, + { + w: 1, + h: 1, + x_center: 0.71875, + y_center: 0.84375 + }, + { + w: 1, + h: 1, + x_center: 0.71875, + y_center: 0.84375 + }, + { + w: 1, + h: 1, + x_center: 0.78125, + y_center: 0.84375 + }, + { + w: 1, + h: 1, + x_center: 0.78125, + y_center: 0.84375 + }, + { + w: 1, + h: 1, + x_center: 0.84375, + y_center: 0.84375 + }, + { + w: 1, + h: 1, + x_center: 0.84375, + y_center: 0.84375 + }, + { + w: 1, + h: 1, + x_center: 0.90625, + y_center: 0.84375 + }, + { + w: 1, + h: 1, + x_center: 0.90625, + y_center: 0.84375 + }, + { + w: 1, + h: 1, + x_center: 0.96875, + y_center: 0.84375 + }, + { + w: 1, + h: 1, + x_center: 0.96875, + y_center: 0.84375 + }, + { + w: 1, + h: 1, + x_center: 0.03125, + y_center: 0.90625 + }, + { + w: 1, + h: 1, + x_center: 0.03125, + y_center: 0.90625 + }, + { + w: 1, + h: 1, + x_center: 0.09375, + y_center: 0.90625 + }, + { + w: 1, + h: 1, + x_center: 0.09375, + y_center: 0.90625 + }, + { + w: 1, + h: 1, + x_center: 0.15625, + y_center: 0.90625 + }, + { + w: 1, + h: 1, + x_center: 0.15625, + y_center: 0.90625 + }, + { + w: 1, + h: 1, + x_center: 0.21875, + y_center: 0.90625 + }, + { + w: 1, + h: 1, + x_center: 0.21875, + y_center: 0.90625 + }, + { + w: 1, + h: 1, + x_center: 0.28125, + y_center: 0.90625 + }, + { + w: 1, + h: 1, + x_center: 0.28125, + y_center: 0.90625 + }, + { + w: 1, + h: 1, + x_center: 0.34375, + y_center: 0.90625 + }, + { + w: 1, + h: 1, + x_center: 0.34375, + y_center: 0.90625 + }, + { + w: 1, + h: 1, + x_center: 0.40625, + y_center: 0.90625 + }, + { + w: 1, + h: 1, + x_center: 0.40625, + y_center: 0.90625 + }, + { + w: 1, + h: 1, + x_center: 0.46875, + y_center: 0.90625 + }, + { + w: 1, + h: 1, + x_center: 0.46875, + y_center: 0.90625 + }, + { + w: 1, + h: 1, + x_center: 0.53125, + y_center: 0.90625 + }, + { + w: 1, + h: 1, + x_center: 0.53125, + y_center: 0.90625 + }, + { + w: 1, + h: 1, + x_center: 0.59375, + y_center: 0.90625 + }, + { + w: 1, + h: 1, + x_center: 0.59375, + y_center: 0.90625 + }, + { + w: 1, + h: 1, + x_center: 0.65625, + y_center: 0.90625 + }, + { + w: 1, + h: 1, + x_center: 0.65625, + y_center: 0.90625 + }, + { + w: 1, + h: 1, + x_center: 0.71875, + y_center: 0.90625 + }, + { + w: 1, + h: 1, + x_center: 0.71875, + y_center: 0.90625 + }, + { + w: 1, + h: 1, + x_center: 0.78125, + y_center: 0.90625 + }, + { + w: 1, + h: 1, + x_center: 0.78125, + y_center: 0.90625 + }, + { + w: 1, + h: 1, + x_center: 0.84375, + y_center: 0.90625 + }, + { + w: 1, + h: 1, + x_center: 0.84375, + y_center: 0.90625 + }, + { + w: 1, + h: 1, + x_center: 0.90625, + y_center: 0.90625 + }, + { + w: 1, + h: 1, + x_center: 0.90625, + y_center: 0.90625 + }, + { + w: 1, + h: 1, + x_center: 0.96875, + y_center: 0.90625 + }, + { + w: 1, + h: 1, + x_center: 0.96875, + y_center: 0.90625 + }, + { + w: 1, + h: 1, + x_center: 0.03125, + y_center: 0.96875 + }, + { + w: 1, + h: 1, + x_center: 0.03125, + y_center: 0.96875 + }, + { + w: 1, + h: 1, + x_center: 0.09375, + y_center: 0.96875 + }, + { + w: 1, + h: 1, + x_center: 0.09375, + y_center: 0.96875 + }, + { + w: 1, + h: 1, + x_center: 0.15625, + y_center: 0.96875 + }, + { + w: 1, + h: 1, + x_center: 0.15625, + y_center: 0.96875 + }, + { + w: 1, + h: 1, + x_center: 0.21875, + y_center: 0.96875 + }, + { + w: 1, + h: 1, + x_center: 0.21875, + y_center: 0.96875 + }, + { + w: 1, + h: 1, + x_center: 0.28125, + y_center: 0.96875 + }, + { + w: 1, + h: 1, + x_center: 0.28125, + y_center: 0.96875 + }, + { + w: 1, + h: 1, + x_center: 0.34375, + y_center: 0.96875 + }, + { + w: 1, + h: 1, + x_center: 0.34375, + y_center: 0.96875 + }, + { + w: 1, + h: 1, + x_center: 0.40625, + y_center: 0.96875 + }, + { + w: 1, + h: 1, + x_center: 0.40625, + y_center: 0.96875 + }, + { + w: 1, + h: 1, + x_center: 0.46875, + y_center: 0.96875 + }, + { + w: 1, + h: 1, + x_center: 0.46875, + y_center: 0.96875 + }, + { + w: 1, + h: 1, + x_center: 0.53125, + y_center: 0.96875 + }, + { + w: 1, + h: 1, + x_center: 0.53125, + y_center: 0.96875 + }, + { + w: 1, + h: 1, + x_center: 0.59375, + y_center: 0.96875 + }, + { + w: 1, + h: 1, + x_center: 0.59375, + y_center: 0.96875 + }, + { + w: 1, + h: 1, + x_center: 0.65625, + y_center: 0.96875 + }, + { + w: 1, + h: 1, + x_center: 0.65625, + y_center: 0.96875 + }, + { + w: 1, + h: 1, + x_center: 0.71875, + y_center: 0.96875 + }, + { + w: 1, + h: 1, + x_center: 0.71875, + y_center: 0.96875 + }, + { + w: 1, + h: 1, + x_center: 0.78125, + y_center: 0.96875 + }, + { + w: 1, + h: 1, + x_center: 0.78125, + y_center: 0.96875 + }, + { + w: 1, + h: 1, + x_center: 0.84375, + y_center: 0.96875 + }, + { + w: 1, + h: 1, + x_center: 0.84375, + y_center: 0.96875 + }, + { + w: 1, + h: 1, + x_center: 0.90625, + y_center: 0.96875 + }, + { + w: 1, + h: 1, + x_center: 0.90625, + y_center: 0.96875 + }, + { + w: 1, + h: 1, + x_center: 0.96875, + y_center: 0.96875 + }, + { + w: 1, + h: 1, + x_center: 0.96875, + y_center: 0.96875 + }, + { + w: 1, + h: 1, + x_center: 0.0625, + y_center: 0.0625 + }, + { + w: 1, + h: 1, + x_center: 0.0625, + y_center: 0.0625 + }, + { + w: 1, + h: 1, + x_center: 0.0625, + y_center: 0.0625 + }, + { + w: 1, + h: 1, + x_center: 0.0625, + y_center: 0.0625 + }, + { + w: 1, + h: 1, + x_center: 0.0625, + y_center: 0.0625 + }, + { + w: 1, + h: 1, + x_center: 0.0625, + y_center: 0.0625 + }, + { + w: 1, + h: 1, + x_center: 0.1875, + y_center: 0.0625 + }, + { + w: 1, + h: 1, + x_center: 0.1875, + y_center: 0.0625 + }, + { + w: 1, + h: 1, + x_center: 0.1875, + y_center: 0.0625 + }, + { + w: 1, + h: 1, + x_center: 0.1875, + y_center: 0.0625 + }, + { + w: 1, + h: 1, + x_center: 0.1875, + y_center: 0.0625 + }, + { + w: 1, + h: 1, + x_center: 0.1875, + y_center: 0.0625 + }, + { + w: 1, + h: 1, + x_center: 0.3125, + y_center: 0.0625 + }, + { + w: 1, + h: 1, + x_center: 0.3125, + y_center: 0.0625 + }, + { + w: 1, + h: 1, + x_center: 0.3125, + y_center: 0.0625 + }, + { + w: 1, + h: 1, + x_center: 0.3125, + y_center: 0.0625 + }, + { + w: 1, + h: 1, + x_center: 0.3125, + y_center: 0.0625 + }, + { + w: 1, + h: 1, + x_center: 0.3125, + y_center: 0.0625 + }, + { + w: 1, + h: 1, + x_center: 0.4375, + y_center: 0.0625 + }, + { + w: 1, + h: 1, + x_center: 0.4375, + y_center: 0.0625 + }, + { + w: 1, + h: 1, + x_center: 0.4375, + y_center: 0.0625 + }, + { + w: 1, + h: 1, + x_center: 0.4375, + y_center: 0.0625 + }, + { + w: 1, + h: 1, + x_center: 0.4375, + y_center: 0.0625 + }, + { + w: 1, + h: 1, + x_center: 0.4375, + y_center: 0.0625 + }, + { + w: 1, + h: 1, + x_center: 0.5625, + y_center: 0.0625 + }, + { + w: 1, + h: 1, + x_center: 0.5625, + y_center: 0.0625 + }, + { + w: 1, + h: 1, + x_center: 0.5625, + y_center: 0.0625 + }, + { + w: 1, + h: 1, + x_center: 0.5625, + y_center: 0.0625 + }, + { + w: 1, + h: 1, + x_center: 0.5625, + y_center: 0.0625 + }, + { + w: 1, + h: 1, + x_center: 0.5625, + y_center: 0.0625 + }, + { + w: 1, + h: 1, + x_center: 0.6875, + y_center: 0.0625 + }, + { + w: 1, + h: 1, + x_center: 0.6875, + y_center: 0.0625 + }, + { + w: 1, + h: 1, + x_center: 0.6875, + y_center: 0.0625 + }, + { + w: 1, + h: 1, + x_center: 0.6875, + y_center: 0.0625 + }, + { + w: 1, + h: 1, + x_center: 0.6875, + y_center: 0.0625 + }, + { + w: 1, + h: 1, + x_center: 0.6875, + y_center: 0.0625 + }, + { + w: 1, + h: 1, + x_center: 0.8125, + y_center: 0.0625 + }, + { + w: 1, + h: 1, + x_center: 0.8125, + y_center: 0.0625 + }, + { + w: 1, + h: 1, + x_center: 0.8125, + y_center: 0.0625 + }, + { + w: 1, + h: 1, + x_center: 0.8125, + y_center: 0.0625 + }, + { + w: 1, + h: 1, + x_center: 0.8125, + y_center: 0.0625 + }, + { + w: 1, + h: 1, + x_center: 0.8125, + y_center: 0.0625 + }, + { + w: 1, + h: 1, + x_center: 0.9375, + y_center: 0.0625 + }, + { + w: 1, + h: 1, + x_center: 0.9375, + y_center: 0.0625 + }, + { + w: 1, + h: 1, + x_center: 0.9375, + y_center: 0.0625 + }, + { + w: 1, + h: 1, + x_center: 0.9375, + y_center: 0.0625 + }, + { + w: 1, + h: 1, + x_center: 0.9375, + y_center: 0.0625 + }, + { + w: 1, + h: 1, + x_center: 0.9375, + y_center: 0.0625 + }, + { + w: 1, + h: 1, + x_center: 0.0625, + y_center: 0.1875 + }, + { + w: 1, + h: 1, + x_center: 0.0625, + y_center: 0.1875 + }, + { + w: 1, + h: 1, + x_center: 0.0625, + y_center: 0.1875 + }, + { + w: 1, + h: 1, + x_center: 0.0625, + y_center: 0.1875 + }, + { + w: 1, + h: 1, + x_center: 0.0625, + y_center: 0.1875 + }, + { + w: 1, + h: 1, + x_center: 0.0625, + y_center: 0.1875 + }, + { + w: 1, + h: 1, + x_center: 0.1875, + y_center: 0.1875 + }, + { + w: 1, + h: 1, + x_center: 0.1875, + y_center: 0.1875 + }, + { + w: 1, + h: 1, + x_center: 0.1875, + y_center: 0.1875 + }, + { + w: 1, + h: 1, + x_center: 0.1875, + y_center: 0.1875 + }, + { + w: 1, + h: 1, + x_center: 0.1875, + y_center: 0.1875 + }, + { + w: 1, + h: 1, + x_center: 0.1875, + y_center: 0.1875 + }, + { + w: 1, + h: 1, + x_center: 0.3125, + y_center: 0.1875 + }, + { + w: 1, + h: 1, + x_center: 0.3125, + y_center: 0.1875 + }, + { + w: 1, + h: 1, + x_center: 0.3125, + y_center: 0.1875 + }, + { + w: 1, + h: 1, + x_center: 0.3125, + y_center: 0.1875 + }, + { + w: 1, + h: 1, + x_center: 0.3125, + y_center: 0.1875 + }, + { + w: 1, + h: 1, + x_center: 0.3125, + y_center: 0.1875 + }, + { + w: 1, + h: 1, + x_center: 0.4375, + y_center: 0.1875 + }, + { + w: 1, + h: 1, + x_center: 0.4375, + y_center: 0.1875 + }, + { + w: 1, + h: 1, + x_center: 0.4375, + y_center: 0.1875 + }, + { + w: 1, + h: 1, + x_center: 0.4375, + y_center: 0.1875 + }, + { + w: 1, + h: 1, + x_center: 0.4375, + y_center: 0.1875 + }, + { + w: 1, + h: 1, + x_center: 0.4375, + y_center: 0.1875 + }, + { + w: 1, + h: 1, + x_center: 0.5625, + y_center: 0.1875 + }, + { + w: 1, + h: 1, + x_center: 0.5625, + y_center: 0.1875 + }, + { + w: 1, + h: 1, + x_center: 0.5625, + y_center: 0.1875 + }, + { + w: 1, + h: 1, + x_center: 0.5625, + y_center: 0.1875 + }, + { + w: 1, + h: 1, + x_center: 0.5625, + y_center: 0.1875 + }, + { + w: 1, + h: 1, + x_center: 0.5625, + y_center: 0.1875 + }, + { + w: 1, + h: 1, + x_center: 0.6875, + y_center: 0.1875 + }, + { + w: 1, + h: 1, + x_center: 0.6875, + y_center: 0.1875 + }, + { + w: 1, + h: 1, + x_center: 0.6875, + y_center: 0.1875 + }, + { + w: 1, + h: 1, + x_center: 0.6875, + y_center: 0.1875 + }, + { + w: 1, + h: 1, + x_center: 0.6875, + y_center: 0.1875 + }, + { + w: 1, + h: 1, + x_center: 0.6875, + y_center: 0.1875 + }, + { + w: 1, + h: 1, + x_center: 0.8125, + y_center: 0.1875 + }, + { + w: 1, + h: 1, + x_center: 0.8125, + y_center: 0.1875 + }, + { + w: 1, + h: 1, + x_center: 0.8125, + y_center: 0.1875 + }, + { + w: 1, + h: 1, + x_center: 0.8125, + y_center: 0.1875 + }, + { + w: 1, + h: 1, + x_center: 0.8125, + y_center: 0.1875 + }, + { + w: 1, + h: 1, + x_center: 0.8125, + y_center: 0.1875 + }, + { + w: 1, + h: 1, + x_center: 0.9375, + y_center: 0.1875 + }, + { + w: 1, + h: 1, + x_center: 0.9375, + y_center: 0.1875 + }, + { + w: 1, + h: 1, + x_center: 0.9375, + y_center: 0.1875 + }, + { + w: 1, + h: 1, + x_center: 0.9375, + y_center: 0.1875 + }, + { + w: 1, + h: 1, + x_center: 0.9375, + y_center: 0.1875 + }, + { + w: 1, + h: 1, + x_center: 0.9375, + y_center: 0.1875 + }, + { + w: 1, + h: 1, + x_center: 0.0625, + y_center: 0.3125 + }, + { + w: 1, + h: 1, + x_center: 0.0625, + y_center: 0.3125 + }, + { + w: 1, + h: 1, + x_center: 0.0625, + y_center: 0.3125 + }, + { + w: 1, + h: 1, + x_center: 0.0625, + y_center: 0.3125 + }, + { + w: 1, + h: 1, + x_center: 0.0625, + y_center: 0.3125 + }, + { + w: 1, + h: 1, + x_center: 0.0625, + y_center: 0.3125 + }, + { + w: 1, + h: 1, + x_center: 0.1875, + y_center: 0.3125 + }, + { + w: 1, + h: 1, + x_center: 0.1875, + y_center: 0.3125 + }, + { + w: 1, + h: 1, + x_center: 0.1875, + y_center: 0.3125 + }, + { + w: 1, + h: 1, + x_center: 0.1875, + y_center: 0.3125 + }, + { + w: 1, + h: 1, + x_center: 0.1875, + y_center: 0.3125 + }, + { + w: 1, + h: 1, + x_center: 0.1875, + y_center: 0.3125 + }, + { + w: 1, + h: 1, + x_center: 0.3125, + y_center: 0.3125 + }, + { + w: 1, + h: 1, + x_center: 0.3125, + y_center: 0.3125 + }, + { + w: 1, + h: 1, + x_center: 0.3125, + y_center: 0.3125 + }, + { + w: 1, + h: 1, + x_center: 0.3125, + y_center: 0.3125 + }, + { + w: 1, + h: 1, + x_center: 0.3125, + y_center: 0.3125 + }, + { + w: 1, + h: 1, + x_center: 0.3125, + y_center: 0.3125 + }, + { + w: 1, + h: 1, + x_center: 0.4375, + y_center: 0.3125 + }, + { + w: 1, + h: 1, + x_center: 0.4375, + y_center: 0.3125 + }, + { + w: 1, + h: 1, + x_center: 0.4375, + y_center: 0.3125 + }, + { + w: 1, + h: 1, + x_center: 0.4375, + y_center: 0.3125 + }, + { + w: 1, + h: 1, + x_center: 0.4375, + y_center: 0.3125 + }, + { + w: 1, + h: 1, + x_center: 0.4375, + y_center: 0.3125 + }, + { + w: 1, + h: 1, + x_center: 0.5625, + y_center: 0.3125 + }, + { + w: 1, + h: 1, + x_center: 0.5625, + y_center: 0.3125 + }, + { + w: 1, + h: 1, + x_center: 0.5625, + y_center: 0.3125 + }, + { + w: 1, + h: 1, + x_center: 0.5625, + y_center: 0.3125 + }, + { + w: 1, + h: 1, + x_center: 0.5625, + y_center: 0.3125 + }, + { + w: 1, + h: 1, + x_center: 0.5625, + y_center: 0.3125 + }, + { + w: 1, + h: 1, + x_center: 0.6875, + y_center: 0.3125 + }, + { + w: 1, + h: 1, + x_center: 0.6875, + y_center: 0.3125 + }, + { + w: 1, + h: 1, + x_center: 0.6875, + y_center: 0.3125 + }, + { + w: 1, + h: 1, + x_center: 0.6875, + y_center: 0.3125 + }, + { + w: 1, + h: 1, + x_center: 0.6875, + y_center: 0.3125 + }, + { + w: 1, + h: 1, + x_center: 0.6875, + y_center: 0.3125 + }, + { + w: 1, + h: 1, + x_center: 0.8125, + y_center: 0.3125 + }, + { + w: 1, + h: 1, + x_center: 0.8125, + y_center: 0.3125 + }, + { + w: 1, + h: 1, + x_center: 0.8125, + y_center: 0.3125 + }, + { + w: 1, + h: 1, + x_center: 0.8125, + y_center: 0.3125 + }, + { + w: 1, + h: 1, + x_center: 0.8125, + y_center: 0.3125 + }, + { + w: 1, + h: 1, + x_center: 0.8125, + y_center: 0.3125 + }, + { + w: 1, + h: 1, + x_center: 0.9375, + y_center: 0.3125 + }, + { + w: 1, + h: 1, + x_center: 0.9375, + y_center: 0.3125 + }, + { + w: 1, + h: 1, + x_center: 0.9375, + y_center: 0.3125 + }, + { + w: 1, + h: 1, + x_center: 0.9375, + y_center: 0.3125 + }, + { + w: 1, + h: 1, + x_center: 0.9375, + y_center: 0.3125 + }, + { + w: 1, + h: 1, + x_center: 0.9375, + y_center: 0.3125 + }, + { + w: 1, + h: 1, + x_center: 0.0625, + y_center: 0.4375 + }, + { + w: 1, + h: 1, + x_center: 0.0625, + y_center: 0.4375 + }, + { + w: 1, + h: 1, + x_center: 0.0625, + y_center: 0.4375 + }, + { + w: 1, + h: 1, + x_center: 0.0625, + y_center: 0.4375 + }, + { + w: 1, + h: 1, + x_center: 0.0625, + y_center: 0.4375 + }, + { + w: 1, + h: 1, + x_center: 0.0625, + y_center: 0.4375 + }, + { + w: 1, + h: 1, + x_center: 0.1875, + y_center: 0.4375 + }, + { + w: 1, + h: 1, + x_center: 0.1875, + y_center: 0.4375 + }, + { + w: 1, + h: 1, + x_center: 0.1875, + y_center: 0.4375 + }, + { + w: 1, + h: 1, + x_center: 0.1875, + y_center: 0.4375 + }, + { + w: 1, + h: 1, + x_center: 0.1875, + y_center: 0.4375 + }, + { + w: 1, + h: 1, + x_center: 0.1875, + y_center: 0.4375 + }, + { + w: 1, + h: 1, + x_center: 0.3125, + y_center: 0.4375 + }, + { + w: 1, + h: 1, + x_center: 0.3125, + y_center: 0.4375 + }, + { + w: 1, + h: 1, + x_center: 0.3125, + y_center: 0.4375 + }, + { + w: 1, + h: 1, + x_center: 0.3125, + y_center: 0.4375 + }, + { + w: 1, + h: 1, + x_center: 0.3125, + y_center: 0.4375 + }, + { + w: 1, + h: 1, + x_center: 0.3125, + y_center: 0.4375 + }, + { + w: 1, + h: 1, + x_center: 0.4375, + y_center: 0.4375 + }, + { + w: 1, + h: 1, + x_center: 0.4375, + y_center: 0.4375 + }, + { + w: 1, + h: 1, + x_center: 0.4375, + y_center: 0.4375 + }, + { + w: 1, + h: 1, + x_center: 0.4375, + y_center: 0.4375 + }, + { + w: 1, + h: 1, + x_center: 0.4375, + y_center: 0.4375 + }, + { + w: 1, + h: 1, + x_center: 0.4375, + y_center: 0.4375 + }, + { + w: 1, + h: 1, + x_center: 0.5625, + y_center: 0.4375 + }, + { + w: 1, + h: 1, + x_center: 0.5625, + y_center: 0.4375 + }, + { + w: 1, + h: 1, + x_center: 0.5625, + y_center: 0.4375 + }, + { + w: 1, + h: 1, + x_center: 0.5625, + y_center: 0.4375 + }, + { + w: 1, + h: 1, + x_center: 0.5625, + y_center: 0.4375 + }, + { + w: 1, + h: 1, + x_center: 0.5625, + y_center: 0.4375 + }, + { + w: 1, + h: 1, + x_center: 0.6875, + y_center: 0.4375 + }, + { + w: 1, + h: 1, + x_center: 0.6875, + y_center: 0.4375 + }, + { + w: 1, + h: 1, + x_center: 0.6875, + y_center: 0.4375 + }, + { + w: 1, + h: 1, + x_center: 0.6875, + y_center: 0.4375 + }, + { + w: 1, + h: 1, + x_center: 0.6875, + y_center: 0.4375 + }, + { + w: 1, + h: 1, + x_center: 0.6875, + y_center: 0.4375 + }, + { + w: 1, + h: 1, + x_center: 0.8125, + y_center: 0.4375 + }, + { + w: 1, + h: 1, + x_center: 0.8125, + y_center: 0.4375 + }, + { + w: 1, + h: 1, + x_center: 0.8125, + y_center: 0.4375 + }, + { + w: 1, + h: 1, + x_center: 0.8125, + y_center: 0.4375 + }, + { + w: 1, + h: 1, + x_center: 0.8125, + y_center: 0.4375 + }, + { + w: 1, + h: 1, + x_center: 0.8125, + y_center: 0.4375 + }, + { + w: 1, + h: 1, + x_center: 0.9375, + y_center: 0.4375 + }, + { + w: 1, + h: 1, + x_center: 0.9375, + y_center: 0.4375 + }, + { + w: 1, + h: 1, + x_center: 0.9375, + y_center: 0.4375 + }, + { + w: 1, + h: 1, + x_center: 0.9375, + y_center: 0.4375 + }, + { + w: 1, + h: 1, + x_center: 0.9375, + y_center: 0.4375 + }, + { + w: 1, + h: 1, + x_center: 0.9375, + y_center: 0.4375 + }, + { + w: 1, + h: 1, + x_center: 0.0625, + y_center: 0.5625 + }, + { + w: 1, + h: 1, + x_center: 0.0625, + y_center: 0.5625 + }, + { + w: 1, + h: 1, + x_center: 0.0625, + y_center: 0.5625 + }, + { + w: 1, + h: 1, + x_center: 0.0625, + y_center: 0.5625 + }, + { + w: 1, + h: 1, + x_center: 0.0625, + y_center: 0.5625 + }, + { + w: 1, + h: 1, + x_center: 0.0625, + y_center: 0.5625 + }, + { + w: 1, + h: 1, + x_center: 0.1875, + y_center: 0.5625 + }, + { + w: 1, + h: 1, + x_center: 0.1875, + y_center: 0.5625 + }, + { + w: 1, + h: 1, + x_center: 0.1875, + y_center: 0.5625 + }, + { + w: 1, + h: 1, + x_center: 0.1875, + y_center: 0.5625 + }, + { + w: 1, + h: 1, + x_center: 0.1875, + y_center: 0.5625 + }, + { + w: 1, + h: 1, + x_center: 0.1875, + y_center: 0.5625 + }, + { + w: 1, + h: 1, + x_center: 0.3125, + y_center: 0.5625 + }, + { + w: 1, + h: 1, + x_center: 0.3125, + y_center: 0.5625 + }, + { + w: 1, + h: 1, + x_center: 0.3125, + y_center: 0.5625 + }, + { + w: 1, + h: 1, + x_center: 0.3125, + y_center: 0.5625 + }, + { + w: 1, + h: 1, + x_center: 0.3125, + y_center: 0.5625 + }, + { + w: 1, + h: 1, + x_center: 0.3125, + y_center: 0.5625 + }, + { + w: 1, + h: 1, + x_center: 0.4375, + y_center: 0.5625 + }, + { + w: 1, + h: 1, + x_center: 0.4375, + y_center: 0.5625 + }, + { + w: 1, + h: 1, + x_center: 0.4375, + y_center: 0.5625 + }, + { + w: 1, + h: 1, + x_center: 0.4375, + y_center: 0.5625 + }, + { + w: 1, + h: 1, + x_center: 0.4375, + y_center: 0.5625 + }, + { + w: 1, + h: 1, + x_center: 0.4375, + y_center: 0.5625 + }, + { + w: 1, + h: 1, + x_center: 0.5625, + y_center: 0.5625 + }, + { + w: 1, + h: 1, + x_center: 0.5625, + y_center: 0.5625 + }, + { + w: 1, + h: 1, + x_center: 0.5625, + y_center: 0.5625 + }, + { + w: 1, + h: 1, + x_center: 0.5625, + y_center: 0.5625 + }, + { + w: 1, + h: 1, + x_center: 0.5625, + y_center: 0.5625 + }, + { + w: 1, + h: 1, + x_center: 0.5625, + y_center: 0.5625 + }, + { + w: 1, + h: 1, + x_center: 0.6875, + y_center: 0.5625 + }, + { + w: 1, + h: 1, + x_center: 0.6875, + y_center: 0.5625 + }, + { + w: 1, + h: 1, + x_center: 0.6875, + y_center: 0.5625 + }, + { + w: 1, + h: 1, + x_center: 0.6875, + y_center: 0.5625 + }, + { + w: 1, + h: 1, + x_center: 0.6875, + y_center: 0.5625 + }, + { + w: 1, + h: 1, + x_center: 0.6875, + y_center: 0.5625 + }, + { + w: 1, + h: 1, + x_center: 0.8125, + y_center: 0.5625 + }, + { + w: 1, + h: 1, + x_center: 0.8125, + y_center: 0.5625 + }, + { + w: 1, + h: 1, + x_center: 0.8125, + y_center: 0.5625 + }, + { + w: 1, + h: 1, + x_center: 0.8125, + y_center: 0.5625 + }, + { + w: 1, + h: 1, + x_center: 0.8125, + y_center: 0.5625 + }, + { + w: 1, + h: 1, + x_center: 0.8125, + y_center: 0.5625 + }, + { + w: 1, + h: 1, + x_center: 0.9375, + y_center: 0.5625 + }, + { + w: 1, + h: 1, + x_center: 0.9375, + y_center: 0.5625 + }, + { + w: 1, + h: 1, + x_center: 0.9375, + y_center: 0.5625 + }, + { + w: 1, + h: 1, + x_center: 0.9375, + y_center: 0.5625 + }, + { + w: 1, + h: 1, + x_center: 0.9375, + y_center: 0.5625 + }, + { + w: 1, + h: 1, + x_center: 0.9375, + y_center: 0.5625 + }, + { + w: 1, + h: 1, + x_center: 0.0625, + y_center: 0.6875 + }, + { + w: 1, + h: 1, + x_center: 0.0625, + y_center: 0.6875 + }, + { + w: 1, + h: 1, + x_center: 0.0625, + y_center: 0.6875 + }, + { + w: 1, + h: 1, + x_center: 0.0625, + y_center: 0.6875 + }, + { + w: 1, + h: 1, + x_center: 0.0625, + y_center: 0.6875 + }, + { + w: 1, + h: 1, + x_center: 0.0625, + y_center: 0.6875 + }, + { + w: 1, + h: 1, + x_center: 0.1875, + y_center: 0.6875 + }, + { + w: 1, + h: 1, + x_center: 0.1875, + y_center: 0.6875 + }, + { + w: 1, + h: 1, + x_center: 0.1875, + y_center: 0.6875 + }, + { + w: 1, + h: 1, + x_center: 0.1875, + y_center: 0.6875 + }, + { + w: 1, + h: 1, + x_center: 0.1875, + y_center: 0.6875 + }, + { + w: 1, + h: 1, + x_center: 0.1875, + y_center: 0.6875 + }, + { + w: 1, + h: 1, + x_center: 0.3125, + y_center: 0.6875 + }, + { + w: 1, + h: 1, + x_center: 0.3125, + y_center: 0.6875 + }, + { + w: 1, + h: 1, + x_center: 0.3125, + y_center: 0.6875 + }, + { + w: 1, + h: 1, + x_center: 0.3125, + y_center: 0.6875 + }, + { + w: 1, + h: 1, + x_center: 0.3125, + y_center: 0.6875 + }, + { + w: 1, + h: 1, + x_center: 0.3125, + y_center: 0.6875 + }, + { + w: 1, + h: 1, + x_center: 0.4375, + y_center: 0.6875 + }, + { + w: 1, + h: 1, + x_center: 0.4375, + y_center: 0.6875 + }, + { + w: 1, + h: 1, + x_center: 0.4375, + y_center: 0.6875 + }, + { + w: 1, + h: 1, + x_center: 0.4375, + y_center: 0.6875 + }, + { + w: 1, + h: 1, + x_center: 0.4375, + y_center: 0.6875 + }, + { + w: 1, + h: 1, + x_center: 0.4375, + y_center: 0.6875 + }, + { + w: 1, + h: 1, + x_center: 0.5625, + y_center: 0.6875 + }, + { + w: 1, + h: 1, + x_center: 0.5625, + y_center: 0.6875 + }, + { + w: 1, + h: 1, + x_center: 0.5625, + y_center: 0.6875 + }, + { + w: 1, + h: 1, + x_center: 0.5625, + y_center: 0.6875 + }, + { + w: 1, + h: 1, + x_center: 0.5625, + y_center: 0.6875 + }, + { + w: 1, + h: 1, + x_center: 0.5625, + y_center: 0.6875 + }, + { + w: 1, + h: 1, + x_center: 0.6875, + y_center: 0.6875 + }, + { + w: 1, + h: 1, + x_center: 0.6875, + y_center: 0.6875 + }, + { + w: 1, + h: 1, + x_center: 0.6875, + y_center: 0.6875 + }, + { + w: 1, + h: 1, + x_center: 0.6875, + y_center: 0.6875 + }, + { + w: 1, + h: 1, + x_center: 0.6875, + y_center: 0.6875 + }, + { + w: 1, + h: 1, + x_center: 0.6875, + y_center: 0.6875 + }, + { + w: 1, + h: 1, + x_center: 0.8125, + y_center: 0.6875 + }, + { + w: 1, + h: 1, + x_center: 0.8125, + y_center: 0.6875 + }, + { + w: 1, + h: 1, + x_center: 0.8125, + y_center: 0.6875 + }, + { + w: 1, + h: 1, + x_center: 0.8125, + y_center: 0.6875 + }, + { + w: 1, + h: 1, + x_center: 0.8125, + y_center: 0.6875 + }, + { + w: 1, + h: 1, + x_center: 0.8125, + y_center: 0.6875 + }, + { + w: 1, + h: 1, + x_center: 0.9375, + y_center: 0.6875 + }, + { + w: 1, + h: 1, + x_center: 0.9375, + y_center: 0.6875 + }, + { + w: 1, + h: 1, + x_center: 0.9375, + y_center: 0.6875 + }, + { + w: 1, + h: 1, + x_center: 0.9375, + y_center: 0.6875 + }, + { + w: 1, + h: 1, + x_center: 0.9375, + y_center: 0.6875 + }, + { + w: 1, + h: 1, + x_center: 0.9375, + y_center: 0.6875 + }, + { + w: 1, + h: 1, + x_center: 0.0625, + y_center: 0.8125 + }, + { + w: 1, + h: 1, + x_center: 0.0625, + y_center: 0.8125 + }, + { + w: 1, + h: 1, + x_center: 0.0625, + y_center: 0.8125 + }, + { + w: 1, + h: 1, + x_center: 0.0625, + y_center: 0.8125 + }, + { + w: 1, + h: 1, + x_center: 0.0625, + y_center: 0.8125 + }, + { + w: 1, + h: 1, + x_center: 0.0625, + y_center: 0.8125 + }, + { + w: 1, + h: 1, + x_center: 0.1875, + y_center: 0.8125 + }, + { + w: 1, + h: 1, + x_center: 0.1875, + y_center: 0.8125 + }, + { + w: 1, + h: 1, + x_center: 0.1875, + y_center: 0.8125 + }, + { + w: 1, + h: 1, + x_center: 0.1875, + y_center: 0.8125 + }, + { + w: 1, + h: 1, + x_center: 0.1875, + y_center: 0.8125 + }, + { + w: 1, + h: 1, + x_center: 0.1875, + y_center: 0.8125 + }, + { + w: 1, + h: 1, + x_center: 0.3125, + y_center: 0.8125 + }, + { + w: 1, + h: 1, + x_center: 0.3125, + y_center: 0.8125 + }, + { + w: 1, + h: 1, + x_center: 0.3125, + y_center: 0.8125 + }, + { + w: 1, + h: 1, + x_center: 0.3125, + y_center: 0.8125 + }, + { + w: 1, + h: 1, + x_center: 0.3125, + y_center: 0.8125 + }, + { + w: 1, + h: 1, + x_center: 0.3125, + y_center: 0.8125 + }, + { + w: 1, + h: 1, + x_center: 0.4375, + y_center: 0.8125 + }, + { + w: 1, + h: 1, + x_center: 0.4375, + y_center: 0.8125 + }, + { + w: 1, + h: 1, + x_center: 0.4375, + y_center: 0.8125 + }, + { + w: 1, + h: 1, + x_center: 0.4375, + y_center: 0.8125 + }, + { + w: 1, + h: 1, + x_center: 0.4375, + y_center: 0.8125 + }, + { + w: 1, + h: 1, + x_center: 0.4375, + y_center: 0.8125 + }, + { + w: 1, + h: 1, + x_center: 0.5625, + y_center: 0.8125 + }, + { + w: 1, + h: 1, + x_center: 0.5625, + y_center: 0.8125 + }, + { + w: 1, + h: 1, + x_center: 0.5625, + y_center: 0.8125 + }, + { + w: 1, + h: 1, + x_center: 0.5625, + y_center: 0.8125 + }, + { + w: 1, + h: 1, + x_center: 0.5625, + y_center: 0.8125 + }, + { + w: 1, + h: 1, + x_center: 0.5625, + y_center: 0.8125 + }, + { + w: 1, + h: 1, + x_center: 0.6875, + y_center: 0.8125 + }, + { + w: 1, + h: 1, + x_center: 0.6875, + y_center: 0.8125 + }, + { + w: 1, + h: 1, + x_center: 0.6875, + y_center: 0.8125 + }, + { + w: 1, + h: 1, + x_center: 0.6875, + y_center: 0.8125 + }, + { + w: 1, + h: 1, + x_center: 0.6875, + y_center: 0.8125 + }, + { + w: 1, + h: 1, + x_center: 0.6875, + y_center: 0.8125 + }, + { + w: 1, + h: 1, + x_center: 0.8125, + y_center: 0.8125 + }, + { + w: 1, + h: 1, + x_center: 0.8125, + y_center: 0.8125 + }, + { + w: 1, + h: 1, + x_center: 0.8125, + y_center: 0.8125 + }, + { + w: 1, + h: 1, + x_center: 0.8125, + y_center: 0.8125 + }, + { + w: 1, + h: 1, + x_center: 0.8125, + y_center: 0.8125 + }, + { + w: 1, + h: 1, + x_center: 0.8125, + y_center: 0.8125 + }, + { + w: 1, + h: 1, + x_center: 0.9375, + y_center: 0.8125 + }, + { + w: 1, + h: 1, + x_center: 0.9375, + y_center: 0.8125 + }, + { + w: 1, + h: 1, + x_center: 0.9375, + y_center: 0.8125 + }, + { + w: 1, + h: 1, + x_center: 0.9375, + y_center: 0.8125 + }, + { + w: 1, + h: 1, + x_center: 0.9375, + y_center: 0.8125 + }, + { + w: 1, + h: 1, + x_center: 0.9375, + y_center: 0.8125 + }, + { + w: 1, + h: 1, + x_center: 0.0625, + y_center: 0.9375 + }, + { + w: 1, + h: 1, + x_center: 0.0625, + y_center: 0.9375 + }, + { + w: 1, + h: 1, + x_center: 0.0625, + y_center: 0.9375 + }, + { + w: 1, + h: 1, + x_center: 0.0625, + y_center: 0.9375 + }, + { + w: 1, + h: 1, + x_center: 0.0625, + y_center: 0.9375 + }, + { + w: 1, + h: 1, + x_center: 0.0625, + y_center: 0.9375 + }, + { + w: 1, + h: 1, + x_center: 0.1875, + y_center: 0.9375 + }, + { + w: 1, + h: 1, + x_center: 0.1875, + y_center: 0.9375 + }, + { + w: 1, + h: 1, + x_center: 0.1875, + y_center: 0.9375 + }, + { + w: 1, + h: 1, + x_center: 0.1875, + y_center: 0.9375 + }, + { + w: 1, + h: 1, + x_center: 0.1875, + y_center: 0.9375 + }, + { + w: 1, + h: 1, + x_center: 0.1875, + y_center: 0.9375 + }, + { + w: 1, + h: 1, + x_center: 0.3125, + y_center: 0.9375 + }, + { + w: 1, + h: 1, + x_center: 0.3125, + y_center: 0.9375 + }, + { + w: 1, + h: 1, + x_center: 0.3125, + y_center: 0.9375 + }, + { + w: 1, + h: 1, + x_center: 0.3125, + y_center: 0.9375 + }, + { + w: 1, + h: 1, + x_center: 0.3125, + y_center: 0.9375 + }, + { + w: 1, + h: 1, + x_center: 0.3125, + y_center: 0.9375 + }, + { + w: 1, + h: 1, + x_center: 0.4375, + y_center: 0.9375 + }, + { + w: 1, + h: 1, + x_center: 0.4375, + y_center: 0.9375 + }, + { + w: 1, + h: 1, + x_center: 0.4375, + y_center: 0.9375 + }, + { + w: 1, + h: 1, + x_center: 0.4375, + y_center: 0.9375 + }, + { + w: 1, + h: 1, + x_center: 0.4375, + y_center: 0.9375 + }, + { + w: 1, + h: 1, + x_center: 0.4375, + y_center: 0.9375 + }, + { + w: 1, + h: 1, + x_center: 0.5625, + y_center: 0.9375 + }, + { + w: 1, + h: 1, + x_center: 0.5625, + y_center: 0.9375 + }, + { + w: 1, + h: 1, + x_center: 0.5625, + y_center: 0.9375 + }, + { + w: 1, + h: 1, + x_center: 0.5625, + y_center: 0.9375 + }, + { + w: 1, + h: 1, + x_center: 0.5625, + y_center: 0.9375 + }, + { + w: 1, + h: 1, + x_center: 0.5625, + y_center: 0.9375 + }, + { + w: 1, + h: 1, + x_center: 0.6875, + y_center: 0.9375 + }, + { + w: 1, + h: 1, + x_center: 0.6875, + y_center: 0.9375 + }, + { + w: 1, + h: 1, + x_center: 0.6875, + y_center: 0.9375 + }, + { + w: 1, + h: 1, + x_center: 0.6875, + y_center: 0.9375 + }, + { + w: 1, + h: 1, + x_center: 0.6875, + y_center: 0.9375 + }, + { + w: 1, + h: 1, + x_center: 0.6875, + y_center: 0.9375 + }, + { + w: 1, + h: 1, + x_center: 0.8125, + y_center: 0.9375 + }, + { + w: 1, + h: 1, + x_center: 0.8125, + y_center: 0.9375 + }, + { + w: 1, + h: 1, + x_center: 0.8125, + y_center: 0.9375 + }, + { + w: 1, + h: 1, + x_center: 0.8125, + y_center: 0.9375 + }, + { + w: 1, + h: 1, + x_center: 0.8125, + y_center: 0.9375 + }, + { + w: 1, + h: 1, + x_center: 0.8125, + y_center: 0.9375 + }, + { + w: 1, + h: 1, + x_center: 0.9375, + y_center: 0.9375 + }, + { + w: 1, + h: 1, + x_center: 0.9375, + y_center: 0.9375 + }, + { + w: 1, + h: 1, + x_center: 0.9375, + y_center: 0.9375 + }, + { + w: 1, + h: 1, + x_center: 0.9375, + y_center: 0.9375 + }, + { + w: 1, + h: 1, + x_center: 0.9375, + y_center: 0.9375 + }, + { + w: 1, + h: 1, + x_center: 0.9375, + y_center: 0.9375 + } +]; + +// src/handpose/handpose.ts +var MESH_ANNOTATIONS2 = { + thumb: [1, 2, 3, 4], + indexFinger: [5, 6, 7, 8], + middleFinger: [9, 10, 11, 12], + ringFinger: [13, 14, 15, 16], + pinky: [17, 18, 19, 20], + palmBase: [0] +}; +var HandPose = class { + constructor(handPipeline) { + this.handPipeline = handPipeline; + } + static getAnnotations() { + return MESH_ANNOTATIONS2; + } + async estimateHands(input, config3) { + const predictions = await this.handPipeline.estimateHands(input, config3); + if (!predictions) + return []; + const hands = []; + for (const prediction of predictions) { + const annotations3 = {}; + if (prediction.landmarks) { + for (const key of Object.keys(MESH_ANNOTATIONS2)) { + annotations3[key] = MESH_ANNOTATIONS2[key].map((index) => prediction.landmarks[index]); + } + } + const box3 = prediction.box ? [ + Math.max(0, prediction.box.topLeft[0]), + Math.max(0, prediction.box.topLeft[1]), + Math.min(input.shape[2], prediction.box.bottomRight[0]) - Math.max(0, prediction.box.topLeft[0]), + Math.min(input.shape[1], prediction.box.bottomRight[1]) - Math.max(0, prediction.box.topLeft[1]) + ] : []; + const boxRaw = [ + prediction.box.topLeft[0] / input.shape[2], + prediction.box.topLeft[1] / input.shape[1], + (prediction.box.bottomRight[0] - prediction.box.topLeft[0]) / input.shape[2], + (prediction.box.bottomRight[1] - prediction.box.topLeft[1]) / input.shape[1] + ]; + hands.push({confidence: prediction.confidence, box: box3, boxRaw, landmarks: prediction.landmarks, annotations: annotations3}); + } + return hands; + } +}; +async function load8(config3) { + const [handDetectorModel, handPoseModel] = await Promise.all([ + config3.hand.enabled ? tf16.loadGraphModel(config3.hand.detector.modelPath, {fromTFHub: config3.hand.detector.modelPath.includes("tfhub.dev")}) : null, + config3.hand.landmarks ? tf16.loadGraphModel(config3.hand.skeleton.modelPath, {fromTFHub: config3.hand.skeleton.modelPath.includes("tfhub.dev")}) : null + ]); + const handDetector = new HandDetector(handDetectorModel, handDetectorModel == null ? void 0 : handDetectorModel.inputs[0].shape[2], anchors); + const handPipeline = new HandPipeline(handDetector, handPoseModel, handPoseModel == null ? void 0 : handPoseModel.inputs[0].shape[2]); + const handPose = new HandPose(handPipeline); + if (config3.hand.enabled && config3.debug) + log(`load model: ${config3.hand.detector.modelPath.match(/\/(.*)\./)[1]}`); + if (config3.hand.landmarks && config3.debug) + log(`load model: ${config3.hand.skeleton.modelPath.match(/\/(.*)\./)[1]}`); + return handPose; +} + +// src/blazepose/blazepose.ts +var blazepose_exports = {}; +__export(blazepose_exports, { + load: () => load9, + predict: () => predict6 +}); +var tf17 = require_tfjs_esm(); + +// src/blazepose/annotations.ts +var full = [ + "nose", + "leftEyeInside", + "leftEye", + "leftEyeOutside", + "rightEyeInside", + "rightEye", + "rightEyeOutside", + "leftEar", + "rightEar", + "leftMouth", + "rightMouth", + "leftShoulder", + "rightShoulder", + "leftElbow", + "rightElbow", + "leftWrist", + "rightWrist", + "leftPalm", + "rightPalm", + "leftIndex", + "rightIndex", + "leftPinky", + "rightPinky", + "leftHip", + "rightHip", + "leftKnee", + "rightKnee", + "leftAnkle", + "rightAnkle", + "leftHeel", + "rightHeel", + "leftFoot", + "rightFoot", + "midHip", + "forehead", + "leftThumb", + "leftHand", + "rightThumb", + "rightHand" +]; +var upper = [ + "nose", + "leftEyeInside", + "leftEye", + "leftEyeOutside", + "rightEyeInside", + "rightEye", + "rightEyeOutside", + "leftEar", + "rightEar", + "leftMouth", + "rightMouth", + "leftShoulder", + "rightShoulder", + "leftElbow", + "rightElbow", + "left:15", + "right:16", + "left:17", + "right:18", + "left:19", + "right:20", + "left:21", + "right:22", + "leftChest", + "rightChest", + "neck", + "forehead", + "left:27", + "right:28", + "left:29", + "right:30" +]; + +// src/blazepose/blazepose.ts +var model6; +async function load9(config3) { + if (!model6) { + model6 = await tf17.loadGraphModel(config3.body.modelPath); + model6.width = parseInt(model6.signature.inputs["input_1:0"].tensorShape.dim[2].size); + model6.height = parseInt(model6.signature.inputs["input_1:0"].tensorShape.dim[1].size); + if (config3.debug) + log(`load model: ${config3.body.modelPath.match(/\/(.*)\./)[1]}`); + } + return model6; +} +async function predict6(image15, config3) { + if (!model6) + return null; + if (!config3.body.enabled) + return null; + const imgSize = {width: image15.shape[2], height: image15.shape[1]}; + const resize = tf17.image.resizeBilinear(image15, [model6.width, model6.height], false); + const normalize = tf17.div(resize, [255]); + resize.dispose(); + let points; + if (!config3.profile) { + const resT = await model6.predict(normalize); + points = resT.find((t) => t.size === 195 || t.size === 155).dataSync(); + resT.forEach((t) => t.dispose()); + } else { + const profileData = await tf17.profile(() => model6.predict(normalize)); + points = profileData.result.find((t) => t.size === 195 || t.size === 155).dataSync(); + profileData.result.forEach((t) => t.dispose()); + run("blazepose", profileData); + } + normalize.dispose(); + const keypoints2 = []; + const labels2 = points.length === 195 ? full : upper; + const depth = 5; + for (let i = 0; i < points.length / depth; i++) { + keypoints2.push({ + id: i, + part: labels2[i], + position: { + x: Math.trunc(imgSize.width * points[depth * i + 0] / 255), + y: Math.trunc(imgSize.height * points[depth * i + 1] / 255), + z: Math.trunc(points[depth * i + 2]) + 0 + }, + score: (100 - Math.trunc(100 / (1 + Math.exp(points[depth * i + 3])))) / 100, + presence: (100 - Math.trunc(100 / (1 + Math.exp(points[depth * i + 4])))) / 100 + }); + } + return [{keypoints: keypoints2}]; +} + +// src/nanodet/nanodet.ts +var nanodet_exports = {}; +__export(nanodet_exports, { + load: () => load10, + predict: () => predict7 +}); +var tf18 = require_tfjs_esm(); + +// src/nanodet/labels.ts +var labels = [ + {class: 1, label: "person"}, + {class: 2, label: "bicycle"}, + {class: 3, label: "car"}, + {class: 4, label: "motorcycle"}, + {class: 5, label: "airplane"}, + {class: 6, label: "bus"}, + {class: 7, label: "train"}, + {class: 8, label: "truck"}, + {class: 9, label: "boat"}, + {class: 10, label: "traffic light"}, + {class: 11, label: "fire hydrant"}, + {class: 12, label: "stop sign"}, + {class: 13, label: "parking meter"}, + {class: 14, label: "bench"}, + {class: 15, label: "bird"}, + {class: 16, label: "cat"}, + {class: 17, label: "dog"}, + {class: 18, label: "horse"}, + {class: 19, label: "sheep"}, + {class: 20, label: "cow"}, + {class: 21, label: "elephant"}, + {class: 22, label: "bear"}, + {class: 23, label: "zebra"}, + {class: 24, label: "giraffe"}, + {class: 25, label: "backpack"}, + {class: 26, label: "umbrella"}, + {class: 27, label: "handbag"}, + {class: 28, label: "tie"}, + {class: 29, label: "suitcase"}, + {class: 30, label: "frisbee"}, + {class: 31, label: "skis"}, + {class: 32, label: "snowboard"}, + {class: 33, label: "sports ball"}, + {class: 34, label: "kite"}, + {class: 35, label: "baseball bat"}, + {class: 36, label: "baseball glove"}, + {class: 37, label: "skateboard"}, + {class: 38, label: "surfboard"}, + {class: 39, label: "tennis racket"}, + {class: 40, label: "bottle"}, + {class: 41, label: "wine glass"}, + {class: 42, label: "cup"}, + {class: 43, label: "fork"}, + {class: 44, label: "knife"}, + {class: 45, label: "spoon"}, + {class: 46, label: "bowl"}, + {class: 47, label: "banana"}, + {class: 48, label: "apple"}, + {class: 49, label: "sandwich"}, + {class: 50, label: "orange"}, + {class: 51, label: "broccoli"}, + {class: 52, label: "carrot"}, + {class: 53, label: "hot dog"}, + {class: 54, label: "pizza"}, + {class: 55, label: "donut"}, + {class: 56, label: "cake"}, + {class: 57, label: "chair"}, + {class: 58, label: "couch"}, + {class: 59, label: "potted plant"}, + {class: 60, label: "bed"}, + {class: 61, label: "dining table"}, + {class: 62, label: "toilet"}, + {class: 63, label: "tv"}, + {class: 64, label: "laptop"}, + {class: 65, label: "mouse"}, + {class: 66, label: "remote"}, + {class: 67, label: "keyboard"}, + {class: 68, label: "cell phone"}, + {class: 69, label: "microwave"}, + {class: 70, label: "oven"}, + {class: 71, label: "toaster"}, + {class: 72, label: "sink"}, + {class: 73, label: "refrigerator"}, + {class: 74, label: "book"}, + {class: 75, label: "clock"}, + {class: 76, label: "vase"}, + {class: 77, label: "scissors"}, + {class: 78, label: "teddy bear"}, + {class: 79, label: "hair drier"}, + {class: 80, label: "toothbrush"} +]; + +// src/nanodet/nanodet.ts +var model7; +var last5 = []; +var skipped5 = Number.MAX_SAFE_INTEGER; +var scaleBox = 2.5; +var activateScore = false; +async function load10(config3) { + if (!model7) { + model7 = await tf18.loadGraphModel(config3.object.modelPath); + model7.inputSize = parseInt(Object.values(model7.modelSignature["inputs"])[0].tensorShape.dim[2].size); + if (config3.debug) + log(`load model: ${config3.object.modelPath.match(/\/(.*)\./)[1]}`); + } + return model7; +} +async function process2(res, inputSize, outputShape, config3) { + let id = 0; + let results = []; + for (const strideSize of [1, 2, 4]) { + tf18.tidy(() => { + var _a, _b; + const baseSize = strideSize * 13; + const scoresT = (_a = res.find((a) => a.shape[1] === baseSize ** 2 && a.shape[2] === 80)) == null ? void 0 : _a.squeeze(); + const featuresT = (_b = res.find((a) => a.shape[1] === baseSize ** 2 && a.shape[2] < 80)) == null ? void 0 : _b.squeeze(); + const boxesMax = featuresT.reshape([-1, 4, featuresT.shape[1] / 4]); + const boxIdx = boxesMax.argMax(2).arraySync(); + const scores = activateScore ? scoresT.exp(1).arraySync() : scoresT.arraySync(); + for (let i = 0; i < scoresT.shape[0]; i++) { + for (let j = 0; j < scoresT.shape[1]; j++) { + const score = scores[i][j] - (activateScore ? 1 : 0); + if (score > config3.object.minConfidence) { + const cx = (0.5 + Math.trunc(i % baseSize)) / baseSize; + const cy = (0.5 + Math.trunc(i / baseSize)) / baseSize; + const boxOffset = boxIdx[i].map((a) => a * (baseSize / strideSize / inputSize)); + let boxRaw = [ + cx - scaleBox / strideSize * boxOffset[0], + cy - scaleBox / strideSize * boxOffset[1], + cx + scaleBox / strideSize * boxOffset[2], + cy + scaleBox / strideSize * boxOffset[3] + ]; + boxRaw = boxRaw.map((a) => Math.max(0, Math.min(a, 1))); + const box3 = [ + boxRaw[0] * outputShape[0], + boxRaw[1] * outputShape[1], + boxRaw[2] * outputShape[0], + boxRaw[3] * outputShape[1] + ]; + const result = { + id: id++, + strideSize, + score, + class: j + 1, + label: labels[j].label, + center: [Math.trunc(outputShape[0] * cx), Math.trunc(outputShape[1] * cy)], + centerRaw: [cx, cy], + box: box3.map((a) => Math.trunc(a)), + boxRaw + }; + results.push(result); + } + } + } + }); + } + res.forEach((t) => tf18.dispose(t)); + const nmsBoxes = results.map((a) => a.boxRaw); + const nmsScores = results.map((a) => a.score); + const nms = await tf18.image.nonMaxSuppressionAsync(nmsBoxes, nmsScores, config3.object.maxResults, config3.object.iouThreshold, config3.object.minConfidence); + const nmsIdx = nms.dataSync(); + tf18.dispose(nms); + results = results.filter((a, idx) => nmsIdx.includes(idx)).sort((a, b) => b.score - a.score); + return results; +} +async function predict7(image15, config3) { + if (!model7) + return null; + if (skipped5 < config3.object.skipFrames && config3.videoOptimized && last5.length > 0) { + skipped5++; + return last5; + } + if (config3.videoOptimized) + skipped5 = 0; + else + skipped5 = Number.MAX_SAFE_INTEGER; + return new Promise(async (resolve) => { + const outputSize = [image15.shape[2], image15.shape[1]]; + const resize = tf18.image.resizeBilinear(image15, [model7.inputSize, model7.inputSize], false); + const norm = resize.div(255); + resize.dispose(); + const transpose = norm.transpose([0, 3, 1, 2]); + norm.dispose(); + let objectT; + if (!config3.profile) { + if (config3.object.enabled) + objectT = await model7.predict(transpose); + } else { + const profileObject = config3.object.enabled ? await tf18.profile(() => model7.predict(transpose)) : {}; + objectT = profileObject.result.clone(); + profileObject.result.dispose(); + run("object", profileObject); + } + transpose.dispose(); + const obj = await process2(objectT, model7.inputSize, outputSize, config3); + last5 = obj; + resolve(obj); + }); +} + +// src/gesture/gesture.ts +var body = (res) => { + if (!res) + return []; + const gestures = []; + for (let i = 0; i < res.length; i++) { + const leftWrist = res[i].keypoints.find((a) => a.part === "leftWrist"); + const rightWrist = res[i].keypoints.find((a) => a.part === "rightWrist"); + const nose = res[i].keypoints.find((a) => a.part === "nose"); + if (nose && leftWrist && rightWrist && leftWrist.position.y < nose.position.y && rightWrist.position.y < nose.position.y) + gestures.push({body: i, gesture: "i give up"}); + else if (nose && leftWrist && leftWrist.position.y < nose.position.y) + gestures.push({body: i, gesture: "raise left hand"}); + else if (nose && rightWrist && rightWrist.position.y < nose.position.y) + gestures.push({body: i, gesture: "raise right hand"}); + const leftShoulder = res[i].keypoints.find((a) => a.part === "leftShoulder"); + const rightShoulder = res[i].keypoints.find((a) => a.part === "rightShoulder"); + if (leftShoulder && rightShoulder) + gestures.push({body: i, gesture: `leaning ${leftShoulder.position.y > rightShoulder.position.y ? "left" : "right"}`}); + } + return gestures; +}; +var face = (res) => { + if (!res) + return []; + const gestures = []; + for (let i = 0; i < res.length; i++) { + if (res[i].mesh && res[i].mesh.length > 0) { + const eyeFacing = res[i].mesh[33][2] - res[i].mesh[263][2]; + if (Math.abs(eyeFacing) < 10) + gestures.push({face: i, gesture: "facing camera"}); + else + gestures.push({face: i, gesture: `facing ${eyeFacing < 0 ? "right" : "left"}`}); + const openLeft = Math.abs(res[i].mesh[374][1] - res[i].mesh[386][1]) / Math.abs(res[i].mesh[443][1] - res[i].mesh[450][1]); + if (openLeft < 0.2) + gestures.push({face: i, gesture: "blink left eye"}); + const openRight = Math.abs(res[i].mesh[145][1] - res[i].mesh[159][1]) / Math.abs(res[i].mesh[223][1] - res[i].mesh[230][1]); + if (openRight < 0.2) + gestures.push({face: i, gesture: "blink right eye"}); + const mouthOpen = Math.min(100, 500 * Math.abs(res[i].mesh[13][1] - res[i].mesh[14][1]) / Math.abs(res[i].mesh[10][1] - res[i].mesh[152][1])); + if (mouthOpen > 10) + gestures.push({face: i, gesture: `mouth ${Math.trunc(mouthOpen)}% open`}); + const chinDepth = res[i].mesh[152][2]; + if (Math.abs(chinDepth) > 10) + gestures.push({face: i, gesture: `head ${chinDepth < 0 ? "up" : "down"}`}); + } + } + return gestures; +}; +var iris = (res) => { + if (!res) + return []; + const gestures = []; + for (let i = 0; i < res.length; i++) { + if (!res[i].annotations || !res[i].annotations.leftEyeIris || !res[i].annotations.rightEyeIris) + continue; + const sizeXLeft = res[i].annotations.leftEyeIris[3][0] - res[i].annotations.leftEyeIris[1][0]; + const sizeYLeft = res[i].annotations.leftEyeIris[4][1] - res[i].annotations.leftEyeIris[2][1]; + const areaLeft = Math.abs(sizeXLeft * sizeYLeft); + const sizeXRight = res[i].annotations.rightEyeIris[3][0] - res[i].annotations.rightEyeIris[1][0]; + const sizeYRight = res[i].annotations.rightEyeIris[4][1] - res[i].annotations.rightEyeIris[2][1]; + const areaRight = Math.abs(sizeXRight * sizeYRight); + const difference = Math.abs(areaLeft - areaRight) / Math.max(areaLeft, areaRight); + if (difference < 0.25) + gestures.push({iris: i, gesture: "looking at camera"}); + } + return gestures; +}; +var hand = (res) => { + if (!res) + return []; + const gestures = []; + for (let i = 0; i < res.length; i++) { + const fingers = []; + for (const [finger, pos] of Object.entries(res[i]["annotations"])) { + if (finger !== "palmBase") + fingers.push({name: finger.toLowerCase(), position: pos[0]}); + } + if (fingers && fingers.length > 0) { + const closest = fingers.reduce((best, a) => best.position[2] < a.position[2] ? best : a); + const highest = fingers.reduce((best, a) => best.position[1] < a.position[1] ? best : a); + gestures.push({hand: i, gesture: `${closest.name} forward ${highest.name} up`}); + } + } + return gestures; +}; + +// src/image/image.ts +var tf19 = require_tfjs_esm(); + +// src/image/imagefx.js +function GLProgram(gl, vertexSource, fragmentSource) { + const _collect = function(source, prefix, collection) { + const r = new RegExp("\\b" + prefix + " \\w+ (\\w+)", "ig"); + source.replace(r, (match2, name) => { + collection[name] = 0; + return match2; + }); + }; + const _compile = function(source, type) { + const shader = gl.createShader(type); + gl.shaderSource(shader, source); + gl.compileShader(shader); + if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) { + throw new Error("Filter: GL compile failed", gl.getShaderInfoLog(shader)); + } + return shader; + }; + this.uniform = {}; + this.attribute = {}; + const _vsh = _compile(vertexSource, gl.VERTEX_SHADER); + const _fsh = _compile(fragmentSource, gl.FRAGMENT_SHADER); + this.id = gl.createProgram(); + gl.attachShader(this.id, _vsh); + gl.attachShader(this.id, _fsh); + gl.linkProgram(this.id); + if (!gl.getProgramParameter(this.id, gl.LINK_STATUS)) { + throw new Error("Filter: GL link failed", gl.getProgramInfoLog(this.id)); + } + gl.useProgram(this.id); + _collect(vertexSource, "attribute", this.attribute); + for (const a in this.attribute) + this.attribute[a] = gl.getAttribLocation(this.id, a); + _collect(vertexSource, "uniform", this.uniform); + _collect(fragmentSource, "uniform", this.uniform); + for (const u in this.uniform) + this.uniform[u] = gl.getUniformLocation(this.id, u); +} +function GLImageFilter(params) { + if (!params) + params = {}; + let _drawCount = 0; + let _sourceTexture = null; + let _lastInChain = false; + let _currentFramebufferIndex = -1; + let _tempFramebuffers = [null, null]; + let _filterChain = []; + let _width = -1; + let _height = -1; + let _vertexBuffer = null; + let _currentProgram = null; + const _filter = {}; + const _canvas = params.canvas || document.createElement("canvas"); + const _shaderProgramCache = {}; + const DRAW = {INTERMEDIATE: 1}; + const gl = _canvas.getContext("webgl"); + if (!gl) + throw new Error("Filter: getContext() failed"); + this.addFilter = function(name) { + const args = Array.prototype.slice.call(arguments, 1); + const filter = _filter[name]; + _filterChain.push({func: filter, args}); + }; + this.reset = function() { + _filterChain = []; + }; + const _resize = function(width, height) { + if (width === _width && height === _height) { + return; + } + _canvas.width = width; + _width = width; + _canvas.height = height; + _height = height; + if (!_vertexBuffer) { + const vertices = new Float32Array([ + -1, + -1, + 0, + 1, + 1, + -1, + 1, + 1, + -1, + 1, + 0, + 0, + -1, + 1, + 0, + 0, + 1, + -1, + 1, + 1, + 1, + 1, + 1, + 0 + ]); + _vertexBuffer = gl.createBuffer(), gl.bindBuffer(gl.ARRAY_BUFFER, _vertexBuffer); + gl.bufferData(gl.ARRAY_BUFFER, vertices, gl.STATIC_DRAW); + gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, true); + } + gl.viewport(0, 0, _width, _height); + _tempFramebuffers = [null, null]; + }; + const _createFramebufferTexture = function(width, height) { + const fbo = gl.createFramebuffer(); + gl.bindFramebuffer(gl.FRAMEBUFFER, fbo); + const renderbuffer = gl.createRenderbuffer(); + gl.bindRenderbuffer(gl.RENDERBUFFER, renderbuffer); + const texture = gl.createTexture(); + gl.bindTexture(gl.TEXTURE_2D, texture); + gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, width, height, 0, gl.RGBA, gl.UNSIGNED_BYTE, null); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE); + gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, texture, 0); + gl.bindTexture(gl.TEXTURE_2D, null); + gl.bindFramebuffer(gl.FRAMEBUFFER, null); + return {fbo, texture}; + }; + const _getTempFramebuffer = function(index) { + _tempFramebuffers[index] = _tempFramebuffers[index] || _createFramebufferTexture(_width, _height); + return _tempFramebuffers[index]; + }; + const _draw = function(flags = null) { + var _a, _b; + let source = null; + let target = null; + let flipY = false; + if (_drawCount === 0) { + source = _sourceTexture; + } else { + source = (_a = _getTempFramebuffer(_currentFramebufferIndex)) == null ? void 0 : _a.texture; + } + _drawCount++; + if (_lastInChain && !(flags & DRAW.INTERMEDIATE)) { + target = null; + flipY = _drawCount % 2 === 0; + } else { + _currentFramebufferIndex = (_currentFramebufferIndex + 1) % 2; + target = (_b = _getTempFramebuffer(_currentFramebufferIndex)) == null ? void 0 : _b.fbo; + } + gl.bindTexture(gl.TEXTURE_2D, source); + gl.bindFramebuffer(gl.FRAMEBUFFER, target); + gl.uniform1f(_currentProgram.uniform.flipY, flipY ? -1 : 1); + gl.drawArrays(gl.TRIANGLES, 0, 6); + }; + this.apply = function(image15) { + _resize(image15.width, image15.height); + _drawCount = 0; + if (!_sourceTexture) + _sourceTexture = gl.createTexture(); + gl.bindTexture(gl.TEXTURE_2D, _sourceTexture); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST); + gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, image15); + if (_filterChain.length === 0) { + _draw(); + return _canvas; + } + for (let i = 0; i < _filterChain.length; i++) { + _lastInChain = i === _filterChain.length - 1; + const f = _filterChain[i]; + f.func.apply(this, f.args || []); + } + return _canvas; + }; + const _compileShader = function(fragmentSource) { + if (_shaderProgramCache[fragmentSource]) { + _currentProgram = _shaderProgramCache[fragmentSource]; + gl.useProgram(_currentProgram.id); + return _currentProgram; + } + const SHADER = {}; + SHADER.VERTEX_IDENTITY = [ + "precision highp float;", + "attribute vec2 pos;", + "attribute vec2 uv;", + "varying vec2 vUv;", + "uniform float flipY;", + "void main(void) {", + "vUv = uv;", + "gl_Position = vec4(pos.x, pos.y*flipY, 0.0, 1.);", + "}" + ].join("\n"); + SHADER.FRAGMENT_IDENTITY = [ + "precision highp float;", + "varying vec2 vUv;", + "uniform sampler2D texture;", + "void main(void) {", + "gl_FragColor = texture2D(texture, vUv);", + "}" + ].join("\n"); + _currentProgram = new GLProgram(gl, SHADER.VERTEX_IDENTITY, fragmentSource); + const floatSize = Float32Array.BYTES_PER_ELEMENT; + const vertSize = 4 * floatSize; + gl.enableVertexAttribArray(_currentProgram.attribute.pos); + gl.vertexAttribPointer(_currentProgram.attribute.pos, 2, gl.FLOAT, false, vertSize, 0 * floatSize); + gl.enableVertexAttribArray(_currentProgram.attribute.uv); + gl.vertexAttribPointer(_currentProgram.attribute.uv, 2, gl.FLOAT, false, vertSize, 2 * floatSize); + _shaderProgramCache[fragmentSource] = _currentProgram; + return _currentProgram; + }; + _filter.colorMatrix = function(matrix) { + const m = new Float32Array(matrix); + m[4] /= 255; + m[9] /= 255; + m[14] /= 255; + m[19] /= 255; + const shader = m[18] === 1 && m[3] === 0 && m[8] === 0 && m[13] === 0 && m[15] === 0 && m[16] === 0 && m[17] === 0 && m[19] === 0 ? _filter.colorMatrix.SHADER.WITHOUT_ALPHA : _filter.colorMatrix.SHADER.WITH_ALPHA; + const program = _compileShader(shader); + gl.uniform1fv(program.uniform.m, m); + _draw(); + }; + _filter.colorMatrix.SHADER = {}; + _filter.colorMatrix.SHADER.WITH_ALPHA = [ + "precision highp float;", + "varying vec2 vUv;", + "uniform sampler2D texture;", + "uniform float m[20];", + "void main(void) {", + "vec4 c = texture2D(texture, vUv);", + "gl_FragColor.r = m[0] * c.r + m[1] * c.g + m[2] * c.b + m[3] * c.a + m[4];", + "gl_FragColor.g = m[5] * c.r + m[6] * c.g + m[7] * c.b + m[8] * c.a + m[9];", + "gl_FragColor.b = m[10] * c.r + m[11] * c.g + m[12] * c.b + m[13] * c.a + m[14];", + "gl_FragColor.a = m[15] * c.r + m[16] * c.g + m[17] * c.b + m[18] * c.a + m[19];", + "}" + ].join("\n"); + _filter.colorMatrix.SHADER.WITHOUT_ALPHA = [ + "precision highp float;", + "varying vec2 vUv;", + "uniform sampler2D texture;", + "uniform float m[20];", + "void main(void) {", + "vec4 c = texture2D(texture, vUv);", + "gl_FragColor.r = m[0] * c.r + m[1] * c.g + m[2] * c.b + m[4];", + "gl_FragColor.g = m[5] * c.r + m[6] * c.g + m[7] * c.b + m[9];", + "gl_FragColor.b = m[10] * c.r + m[11] * c.g + m[12] * c.b + m[14];", + "gl_FragColor.a = c.a;", + "}" + ].join("\n"); + _filter.brightness = function(brightness) { + const b = (brightness || 0) + 1; + _filter.colorMatrix([ + b, + 0, + 0, + 0, + 0, + 0, + b, + 0, + 0, + 0, + 0, + 0, + b, + 0, + 0, + 0, + 0, + 0, + 1, + 0 + ]); + }; + _filter.saturation = function(amount) { + const x = (amount || 0) * 2 / 3 + 1; + const y = (x - 1) * -0.5; + _filter.colorMatrix([ + x, + y, + y, + 0, + 0, + y, + x, + y, + 0, + 0, + y, + y, + x, + 0, + 0, + 0, + 0, + 0, + 1, + 0 + ]); + }; + _filter.desaturate = function() { + _filter.saturation(-1); + }; + _filter.contrast = function(amount) { + const v = (amount || 0) + 1; + const o = -128 * (v - 1); + _filter.colorMatrix([ + v, + 0, + 0, + 0, + o, + 0, + v, + 0, + 0, + o, + 0, + 0, + v, + 0, + o, + 0, + 0, + 0, + 1, + 0 + ]); + }; + _filter.negative = function() { + _filter.contrast(-2); + }; + _filter.hue = function(rotation) { + rotation = (rotation || 0) / 180 * Math.PI; + const cos = Math.cos(rotation); + const sin = Math.sin(rotation); + const lumR = 0.213; + const lumG = 0.715; + const lumB = 0.072; + _filter.colorMatrix([ + lumR + cos * (1 - lumR) + sin * -lumR, + lumG + cos * -lumG + sin * -lumG, + lumB + cos * -lumB + sin * (1 - lumB), + 0, + 0, + lumR + cos * -lumR + sin * 0.143, + lumG + cos * (1 - lumG) + sin * 0.14, + lumB + cos * -lumB + sin * -0.283, + 0, + 0, + lumR + cos * -lumR + sin * -(1 - lumR), + lumG + cos * -lumG + sin * lumG, + lumB + cos * (1 - lumB) + sin * lumB, + 0, + 0, + 0, + 0, + 0, + 1, + 0 + ]); + }; + _filter.desaturateLuminance = function() { + _filter.colorMatrix([ + 0.2764723, + 0.929708, + 0.0938197, + 0, + -37.1, + 0.2764723, + 0.929708, + 0.0938197, + 0, + -37.1, + 0.2764723, + 0.929708, + 0.0938197, + 0, + -37.1, + 0, + 0, + 0, + 1, + 0 + ]); + }; + _filter.sepia = function() { + _filter.colorMatrix([ + 0.393, + 0.7689999, + 0.18899999, + 0, + 0, + 0.349, + 0.6859999, + 0.16799999, + 0, + 0, + 0.272, + 0.5339999, + 0.13099999, + 0, + 0, + 0, + 0, + 0, + 1, + 0 + ]); + }; + _filter.brownie = function() { + _filter.colorMatrix([ + 0.5997023498159715, + 0.34553243048391263, + -0.2708298674538042, + 0, + 47.43192855600873, + -0.037703249837783157, + 0.8609577587992641, + 0.15059552388459913, + 0, + -36.96841498319127, + 0.24113635128153335, + -0.07441037908422492, + 0.44972182064877153, + 0, + -7.562075277591283, + 0, + 0, + 0, + 1, + 0 + ]); + }; + _filter.vintagePinhole = function() { + _filter.colorMatrix([ + 0.6279345635605994, + 0.3202183420819367, + -0.03965408211312453, + 0, + 9.651285835294123, + 0.02578397704808868, + 0.6441188644374771, + 0.03259127616149294, + 0, + 7.462829176470591, + 0.0466055556782719, + -0.0851232987247891, + 0.5241648018700465, + 0, + 5.159190588235296, + 0, + 0, + 0, + 1, + 0 + ]); + }; + _filter.kodachrome = function() { + _filter.colorMatrix([ + 1.1285582396593525, + -0.3967382283601348, + -0.03992559172921793, + 0, + 63.72958762196502, + -0.16404339962244616, + 1.0835251566291304, + -0.05498805115633132, + 0, + 24.732407896706203, + -0.16786010706155763, + -0.5603416277695248, + 1.6014850761964943, + 0, + 35.62982807460946, + 0, + 0, + 0, + 1, + 0 + ]); + }; + _filter.technicolor = function() { + _filter.colorMatrix([ + 1.9125277891456083, + -0.8545344976951645, + -0.09155508482755585, + 0, + 11.793603434377337, + -0.3087833385928097, + 1.7658908555458428, + -0.10601743074722245, + 0, + -70.35205161461398, + -0.231103377548616, + -0.7501899197440212, + 1.847597816108189, + 0, + 30.950940869491138, + 0, + 0, + 0, + 1, + 0 + ]); + }; + _filter.polaroid = function() { + _filter.colorMatrix([ + 1.438, + -0.062, + -0.062, + 0, + 0, + -0.122, + 1.378, + -0.122, + 0, + 0, + -0.016, + -0.016, + 1.483, + 0, + 0, + 0, + 0, + 0, + 1, + 0 + ]); + }; + _filter.shiftToBGR = function() { + _filter.colorMatrix([ + 0, + 0, + 1, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0 + ]); + }; + _filter.convolution = function(matrix) { + const m = new Float32Array(matrix); + const pixelSizeX = 1 / _width; + const pixelSizeY = 1 / _height; + const program = _compileShader(_filter.convolution.SHADER); + gl.uniform1fv(program.uniform.m, m); + gl.uniform2f(program.uniform.px, pixelSizeX, pixelSizeY); + _draw(); + }; + _filter.convolution.SHADER = [ + "precision highp float;", + "varying vec2 vUv;", + "uniform sampler2D texture;", + "uniform vec2 px;", + "uniform float m[9];", + "void main(void) {", + "vec4 c11 = texture2D(texture, vUv - px);", + "vec4 c12 = texture2D(texture, vec2(vUv.x, vUv.y - px.y));", + "vec4 c13 = texture2D(texture, vec2(vUv.x + px.x, vUv.y - px.y));", + "vec4 c21 = texture2D(texture, vec2(vUv.x - px.x, vUv.y) );", + "vec4 c22 = texture2D(texture, vUv);", + "vec4 c23 = texture2D(texture, vec2(vUv.x + px.x, vUv.y) );", + "vec4 c31 = texture2D(texture, vec2(vUv.x - px.x, vUv.y + px.y) );", + "vec4 c32 = texture2D(texture, vec2(vUv.x, vUv.y + px.y) );", + "vec4 c33 = texture2D(texture, vUv + px );", + "gl_FragColor = ", + "c11 * m[0] + c12 * m[1] + c22 * m[2] +", + "c21 * m[3] + c22 * m[4] + c23 * m[5] +", + "c31 * m[6] + c32 * m[7] + c33 * m[8];", + "gl_FragColor.a = c22.a;", + "}" + ].join("\n"); + _filter.detectEdges = function() { + _filter.convolution.call(this, [ + 0, + 1, + 0, + 1, + -4, + 1, + 0, + 1, + 0 + ]); + }; + _filter.sobelX = function() { + _filter.convolution.call(this, [ + -1, + 0, + 1, + -2, + 0, + 2, + -1, + 0, + 1 + ]); + }; + _filter.sobelY = function() { + _filter.convolution.call(this, [ + -1, + -2, + -1, + 0, + 0, + 0, + 1, + 2, + 1 + ]); + }; + _filter.sharpen = function(amount) { + const a = amount || 1; + _filter.convolution.call(this, [ + 0, + -1 * a, + 0, + -1 * a, + 1 + 4 * a, + -1 * a, + 0, + -1 * a, + 0 + ]); + }; + _filter.emboss = function(size) { + const s = size || 1; + _filter.convolution.call(this, [ + -2 * s, + -1 * s, + 0, + -1 * s, + 1, + 1 * s, + 0, + 1 * s, + 2 * s + ]); + }; + _filter.blur = function(size) { + const blurSizeX = size / 7 / _width; + const blurSizeY = size / 7 / _height; + const program = _compileShader(_filter.blur.SHADER); + gl.uniform2f(program.uniform.px, 0, blurSizeY); + _draw(DRAW.INTERMEDIATE); + gl.uniform2f(program.uniform.px, blurSizeX, 0); + _draw(); + }; + _filter.blur.SHADER = [ + "precision highp float;", + "varying vec2 vUv;", + "uniform sampler2D texture;", + "uniform vec2 px;", + "void main(void) {", + "gl_FragColor = vec4(0.0);", + "gl_FragColor += texture2D(texture, vUv + vec2(-7.0*px.x, -7.0*px.y))*0.0044299121055113265;", + "gl_FragColor += texture2D(texture, vUv + vec2(-6.0*px.x, -6.0*px.y))*0.00895781211794;", + "gl_FragColor += texture2D(texture, vUv + vec2(-5.0*px.x, -5.0*px.y))*0.0215963866053;", + "gl_FragColor += texture2D(texture, vUv + vec2(-4.0*px.x, -4.0*px.y))*0.0443683338718;", + "gl_FragColor += texture2D(texture, vUv + vec2(-3.0*px.x, -3.0*px.y))*0.0776744219933;", + "gl_FragColor += texture2D(texture, vUv + vec2(-2.0*px.x, -2.0*px.y))*0.115876621105;", + "gl_FragColor += texture2D(texture, vUv + vec2(-1.0*px.x, -1.0*px.y))*0.147308056121;", + "gl_FragColor += texture2D(texture, vUv )*0.159576912161;", + "gl_FragColor += texture2D(texture, vUv + vec2( 1.0*px.x, 1.0*px.y))*0.147308056121;", + "gl_FragColor += texture2D(texture, vUv + vec2( 2.0*px.x, 2.0*px.y))*0.115876621105;", + "gl_FragColor += texture2D(texture, vUv + vec2( 3.0*px.x, 3.0*px.y))*0.0776744219933;", + "gl_FragColor += texture2D(texture, vUv + vec2( 4.0*px.x, 4.0*px.y))*0.0443683338718;", + "gl_FragColor += texture2D(texture, vUv + vec2( 5.0*px.x, 5.0*px.y))*0.0215963866053;", + "gl_FragColor += texture2D(texture, vUv + vec2( 6.0*px.x, 6.0*px.y))*0.00895781211794;", + "gl_FragColor += texture2D(texture, vUv + vec2( 7.0*px.x, 7.0*px.y))*0.0044299121055113265;", + "}" + ].join("\n"); + _filter.pixelate = function(size) { + const blurSizeX = size / _width; + const blurSizeY = size / _height; + const program = _compileShader(_filter.pixelate.SHADER); + gl.uniform2f(program.uniform.size, blurSizeX, blurSizeY); + _draw(); + }; + _filter.pixelate.SHADER = [ + "precision highp float;", + "varying vec2 vUv;", + "uniform vec2 size;", + "uniform sampler2D texture;", + "vec2 pixelate(vec2 coord, vec2 size) {", + "return floor( coord / size ) * size;", + "}", + "void main(void) {", + "gl_FragColor = vec4(0.0);", + "vec2 coord = pixelate(vUv, size);", + "gl_FragColor += texture2D(texture, coord);", + "}" + ].join("\n"); +} + +// src/image/image.ts +var maxSize = 2048; +var inCanvas = null; +var outCanvas = null; +var fx = null; +function process3(input, config3) { + let tensor; + if (input instanceof tf19.Tensor) { + tensor = tf19.clone(input); + } else { + const originalWidth = input.naturalWidth || input.videoWidth || input.width || input.shape && input.shape[1] > 0; + const originalHeight = input.naturalHeight || input.videoHeight || input.height || input.shape && input.shape[2] > 0; + let targetWidth = originalWidth; + let targetHeight = originalHeight; + if (targetWidth > maxSize) { + targetWidth = maxSize; + targetHeight = targetWidth * originalHeight / originalWidth; + } + if (targetHeight > maxSize) { + targetHeight = maxSize; + targetWidth = targetHeight * originalWidth / originalHeight; + } + if (config3.filter.width > 0) + targetWidth = config3.filter.width; + else if (config3.filter.height > 0) + targetWidth = originalWidth * (config3.filter.height / originalHeight); + if (config3.filter.height > 0) + targetHeight = config3.filter.height; + else if (config3.filter.width > 0) + targetHeight = originalHeight * (config3.filter.width / originalWidth); + if (!targetWidth || !targetHeight) { + log("Human: invalid input", input); + return {tensor: null, canvas: null}; + } + if (!inCanvas || inCanvas.width !== targetWidth || inCanvas.height !== targetHeight) { + inCanvas = typeof OffscreenCanvas !== "undefined" ? new OffscreenCanvas(targetWidth, targetHeight) : document.createElement("canvas"); + if (inCanvas.width !== targetWidth) + inCanvas.width = targetWidth; + if (inCanvas.height !== targetHeight) + inCanvas.height = targetHeight; + } + const ctx = inCanvas.getContext("2d"); + if (input instanceof ImageData) + ctx.putImageData(input, 0, 0); + else + ctx.drawImage(input, 0, 0, originalWidth, originalHeight, 0, 0, inCanvas.width, inCanvas.height); + if (config3.filter.enabled) { + if (!fx || !outCanvas || inCanvas.width !== outCanvas.width || inCanvas.height !== outCanvas.height) { + outCanvas = typeof OffscreenCanvas !== "undefined" ? new OffscreenCanvas(inCanvas.width, inCanvas.height) : document.createElement("canvas"); + if (outCanvas.width !== inCanvas.width) + outCanvas.width = inCanvas.width; + if (outCanvas.height !== inCanvas.height) + outCanvas.height = inCanvas.height; + fx = tf19.ENV.flags.IS_BROWSER ? new GLImageFilter({canvas: outCanvas}) : null; + } + if (!fx) + return {tensor: null, canvas: inCanvas}; + fx.reset(); + fx.addFilter("brightness", config3.filter.brightness); + if (config3.filter.contrast !== 0) + fx.addFilter("contrast", config3.filter.contrast); + if (config3.filter.sharpness !== 0) + fx.addFilter("sharpen", config3.filter.sharpness); + if (config3.filter.blur !== 0) + fx.addFilter("blur", config3.filter.blur); + if (config3.filter.saturation !== 0) + fx.addFilter("saturation", config3.filter.saturation); + if (config3.filter.hue !== 0) + fx.addFilter("hue", config3.filter.hue); + if (config3.filter.negative) + fx.addFilter("negative"); + if (config3.filter.sepia) + fx.addFilter("sepia"); + if (config3.filter.vintage) + fx.addFilter("brownie"); + if (config3.filter.sepia) + fx.addFilter("sepia"); + if (config3.filter.kodachrome) + fx.addFilter("kodachrome"); + if (config3.filter.technicolor) + fx.addFilter("technicolor"); + if (config3.filter.polaroid) + fx.addFilter("polaroid"); + if (config3.filter.pixelate !== 0) + fx.addFilter("pixelate", config3.filter.pixelate); + fx.apply(inCanvas); + } else { + outCanvas = inCanvas; + if (fx) + fx = null; + } + let pixels; + if (outCanvas.data) { + const shape = [outCanvas.height, outCanvas.width, 3]; + pixels = tf19.tensor3d(outCanvas.data, shape, "int32"); + } else if (config3.backend === "webgl" || outCanvas instanceof ImageData) { + pixels = tf19.browser.fromPixels(outCanvas); + } else { + const tempCanvas = typeof OffscreenCanvas !== "undefined" ? new OffscreenCanvas(targetWidth, targetHeight) : document.createElement("canvas"); + tempCanvas.width = targetWidth; + tempCanvas.height = targetHeight; + const tempCtx = tempCanvas.getContext("2d"); + tempCtx == null ? void 0 : tempCtx.drawImage(outCanvas, 0, 0); + const data3 = tempCtx == null ? void 0 : tempCtx.getImageData(0, 0, targetWidth, targetHeight); + pixels = tf19.browser.fromPixels(data3); + } + const casted = pixels.toFloat(); + tensor = casted.expandDims(0); + pixels.dispose(); + casted.dispose(); + } + const canvas2 = config3.filter.return ? outCanvas : null; + return {tensor, canvas: canvas2}; +} + +// src/draw/draw.ts +var draw_exports = {}; +__export(draw_exports, { + all: () => all, + body: () => body2, + canvas: () => canvas, + drawOptions: () => drawOptions, + face: () => face2, + gesture: () => gesture, + hand: () => hand2, + object: () => object +}); + +// src/config.ts +var config2 = { + backend: "webgl", + wasmPath: "../assets/", + debug: true, + async: true, + profile: false, + deallocate: false, + scoped: false, + videoOptimized: true, + warmup: "face", + filter: { + enabled: true, + width: 0, + height: 0, + return: true, + brightness: 0, + contrast: 0, + sharpness: 0, + blur: 0, + saturation: 0, + hue: 0, + negative: false, + sepia: false, + vintage: false, + kodachrome: false, + technicolor: false, + polaroid: false, + pixelate: 0 + }, + gesture: { + enabled: true + }, + face: { + enabled: true, + detector: { + modelPath: "../models/blazeface-back.json", + rotation: false, + maxFaces: 10, + skipFrames: 21, + skipInitial: false, + minConfidence: 0.2, + iouThreshold: 0.1, + scoreThreshold: 0.2, + return: false + }, + mesh: { + enabled: true, + modelPath: "../models/facemesh.json" + }, + iris: { + enabled: true, + modelPath: "../models/iris.json" + }, + description: { + enabled: true, + modelPath: "../models/faceres.json", + skipFrames: 31 + }, + emotion: { + enabled: true, + minConfidence: 0.1, + skipFrames: 32, + modelPath: "../models/emotion.json" + }, + age: { + enabled: false, + modelPath: "../models/age.json", + skipFrames: 33 + }, + gender: { + enabled: false, + minConfidence: 0.1, + modelPath: "../models/gender.json", + skipFrames: 34 + }, + embedding: { + enabled: false, + modelPath: "../models/mobileface.json" + } + }, + body: { + enabled: true, + modelPath: "../models/posenet.json", + maxDetections: 10, + scoreThreshold: 0.3, + nmsRadius: 20 + }, + hand: { + enabled: true, + rotation: false, + skipFrames: 12, + skipInitial: false, + minConfidence: 0.1, + iouThreshold: 0.1, + scoreThreshold: 0.5, + maxHands: 1, + landmarks: true, + detector: { + modelPath: "../models/handdetect.json" + }, + skeleton: { + modelPath: "../models/handskeleton.json" + } + }, + object: { + enabled: false, + modelPath: "../models/nanodet.json", + minConfidence: 0.2, + iouThreshold: 0.4, + maxResults: 10, + skipFrames: 41 + } +}; + +// src/draw/draw.ts +var drawOptions = { + color: "rgba(173, 216, 230, 0.3)", + labelColor: "rgba(173, 216, 230, 1)", + shadowColor: "black", + font: 'small-caps 16px "Segoe UI"', + lineHeight: 20, + lineWidth: 6, + pointSize: 2, + roundRect: 28, + drawPoints: false, + drawLabels: true, + drawBoxes: true, + drawPolygons: true, + fillPolygons: false, + useDepth: true, + useCurves: false, + bufferedOutput: false, + useRawBoxes: false +}; +function point(ctx, x, y, z = null) { + ctx.fillStyle = drawOptions.useDepth && z ? `rgba(${127.5 + 2 * (z || 0)}, ${127.5 - 2 * (z || 0)}, 255, 0.3)` : drawOptions.color; + ctx.beginPath(); + ctx.arc(x, y, drawOptions.pointSize, 0, 2 * Math.PI); + ctx.fill(); +} +function rect(ctx, x, y, width, height) { + ctx.beginPath(); + if (drawOptions.useCurves) { + const cx = (x + x + width) / 2; + const cy = (y + y + height) / 2; + ctx.ellipse(cx, cy, width / 2, height / 2, 0, 0, 2 * Math.PI); + } else { + ctx.lineWidth = drawOptions.lineWidth; + ctx.moveTo(x + drawOptions.roundRect, y); + ctx.lineTo(x + width - drawOptions.roundRect, y); + ctx.quadraticCurveTo(x + width, y, x + width, y + drawOptions.roundRect); + ctx.lineTo(x + width, y + height - drawOptions.roundRect); + ctx.quadraticCurveTo(x + width, y + height, x + width - drawOptions.roundRect, y + height); + ctx.lineTo(x + drawOptions.roundRect, y + height); + ctx.quadraticCurveTo(x, y + height, x, y + height - drawOptions.roundRect); + ctx.lineTo(x, y + drawOptions.roundRect); + ctx.quadraticCurveTo(x, y, x + drawOptions.roundRect, y); + ctx.closePath(); + } + ctx.stroke(); +} +function lines(ctx, points = []) { + if (points === void 0 || points.length === 0) + return; + ctx.beginPath(); + ctx.moveTo(points[0][0], points[0][1]); + for (const pt of points) { + ctx.strokeStyle = drawOptions.useDepth && pt[2] ? `rgba(${127.5 + 2 * pt[2]}, ${127.5 - 2 * pt[2]}, 255, 0.3)` : drawOptions.color; + ctx.fillStyle = drawOptions.useDepth && pt[2] ? `rgba(${127.5 + 2 * pt[2]}, ${127.5 - 2 * pt[2]}, 255, 0.3)` : drawOptions.color; + ctx.lineTo(pt[0], parseInt(pt[1])); + } + ctx.stroke(); + if (drawOptions.fillPolygons) { + ctx.closePath(); + ctx.fill(); + } +} +function curves(ctx, points = []) { + if (points === void 0 || points.length === 0) + return; + if (!drawOptions.useCurves || points.length <= 2) { + lines(ctx, points); + return; + } + ctx.moveTo(points[0][0], points[0][1]); + for (let i = 0; i < points.length - 2; i++) { + const xc = (points[i][0] + points[i + 1][0]) / 2; + const yc = (points[i][1] + points[i + 1][1]) / 2; + ctx.quadraticCurveTo(points[i][0], points[i][1], xc, yc); + } + ctx.quadraticCurveTo(points[points.length - 2][0], points[points.length - 2][1], points[points.length - 1][0], points[points.length - 1][1]); + ctx.stroke(); + if (drawOptions.fillPolygons) { + ctx.closePath(); + ctx.fill(); + } +} +async function gesture(inCanvas2, result) { + if (!result || !inCanvas2) + return; + if (!(inCanvas2 instanceof HTMLCanvasElement)) + return; + const ctx = inCanvas2.getContext("2d"); + if (!ctx) + return; + ctx.font = drawOptions.font; + ctx.fillStyle = drawOptions.color; + let i = 1; + for (let j = 0; j < result.length; j++) { + let where = []; + let what = []; + [where, what] = Object.entries(result[j]); + if (what.length > 1 && what[1].length > 0) { + const person = where[1] > 0 ? `#${where[1]}` : ""; + const label = `${where[0]} ${person}: ${what[1]}`; + if (drawOptions.shadowColor && drawOptions.shadowColor !== "") { + ctx.fillStyle = drawOptions.shadowColor; + ctx.fillText(label, 8, 2 + i * drawOptions.lineHeight); + } + ctx.fillStyle = drawOptions.labelColor; + ctx.fillText(label, 6, 0 + i * drawOptions.lineHeight); + i += 1; + } + } +} +async function face2(inCanvas2, result) { + if (!result || !inCanvas2) + return; + if (!(inCanvas2 instanceof HTMLCanvasElement)) + return; + const ctx = inCanvas2.getContext("2d"); + if (!ctx) + return; + for (const f of result) { + ctx.font = drawOptions.font; + ctx.strokeStyle = drawOptions.color; + ctx.fillStyle = drawOptions.color; + if (drawOptions.drawBoxes) { + if (drawOptions.useRawBoxes) + rect(ctx, inCanvas2.width * f.boxRaw[0], inCanvas2.height * f.boxRaw[1], inCanvas2.width * f.boxRaw[2], inCanvas2.height * f.boxRaw[3]); + else + rect(ctx, f.box[0], f.box[1], f.box[2], f.box[3]); + } + const labels2 = []; + labels2.push(`face confidence: ${Math.trunc(100 * f.confidence)}%`); + if (f.genderConfidence) + labels2.push(`${f.gender || ""} ${Math.trunc(100 * f.genderConfidence)}% confident`); + if (f.age) + labels2.push(`age: ${f.age || ""}`); + if (f.iris) + labels2.push(`iris distance: ${f.iris}`); + if (f.emotion && f.emotion.length > 0) { + const emotion2 = f.emotion.map((a) => `${Math.trunc(100 * a.score)}% ${a.emotion}`); + labels2.push(emotion2.join(" ")); + } + if (f.angle && f.angle.roll) + labels2.push(`roll: ${Math.trunc(100 * f.angle.roll) / 100} yaw:${Math.trunc(100 * f.angle.yaw) / 100} pitch:${Math.trunc(100 * f.angle.pitch) / 100}`); + if (labels2.length === 0) + labels2.push("face"); + ctx.fillStyle = drawOptions.color; + for (let i = labels2.length - 1; i >= 0; i--) { + const x = Math.max(f.box[0], 0); + const y = i * drawOptions.lineHeight + f.box[1]; + if (drawOptions.shadowColor && drawOptions.shadowColor !== "") { + ctx.fillStyle = drawOptions.shadowColor; + ctx.fillText(labels2[i], x + 5, y + 16); + } + ctx.fillStyle = drawOptions.labelColor; + ctx.fillText(labels2[i], x + 4, y + 15); + } + ctx.lineWidth = 1; + if (f.mesh && f.mesh.length > 0) { + if (drawOptions.drawPoints) { + for (const pt of f.mesh) + point(ctx, pt[0], pt[1], pt[2]); + } + if (drawOptions.drawPolygons) { + ctx.lineWidth = 1; + for (let i = 0; i < TRI468.length / 3; i++) { + const points = [ + TRI468[i * 3 + 0], + TRI468[i * 3 + 1], + TRI468[i * 3 + 2] + ].map((index) => f.mesh[index]); + lines(ctx, points); + } + if (f.annotations && f.annotations.leftEyeIris) { + ctx.strokeStyle = drawOptions.useDepth ? "rgba(255, 200, 255, 0.3)" : drawOptions.color; + ctx.beginPath(); + const sizeX = Math.abs(f.annotations.leftEyeIris[3][0] - f.annotations.leftEyeIris[1][0]) / 2; + const sizeY = Math.abs(f.annotations.leftEyeIris[4][1] - f.annotations.leftEyeIris[2][1]) / 2; + ctx.ellipse(f.annotations.leftEyeIris[0][0], f.annotations.leftEyeIris[0][1], sizeX, sizeY, 0, 0, 2 * Math.PI); + ctx.stroke(); + if (drawOptions.fillPolygons) { + ctx.fillStyle = drawOptions.useDepth ? "rgba(255, 255, 200, 0.3)" : drawOptions.color; + ctx.fill(); + } + } + if (f.annotations && f.annotations.rightEyeIris) { + ctx.strokeStyle = drawOptions.useDepth ? "rgba(255, 200, 255, 0.3)" : drawOptions.color; + ctx.beginPath(); + const sizeX = Math.abs(f.annotations.rightEyeIris[3][0] - f.annotations.rightEyeIris[1][0]) / 2; + const sizeY = Math.abs(f.annotations.rightEyeIris[4][1] - f.annotations.rightEyeIris[2][1]) / 2; + ctx.ellipse(f.annotations.rightEyeIris[0][0], f.annotations.rightEyeIris[0][1], sizeX, sizeY, 0, 0, 2 * Math.PI); + ctx.stroke(); + if (drawOptions.fillPolygons) { + ctx.fillStyle = drawOptions.useDepth ? "rgba(255, 255, 200, 0.3)" : drawOptions.color; + ctx.fill(); + } + } + } + } + } +} +var lastDrawnPose = []; +async function body2(inCanvas2, result) { + if (!result || !inCanvas2) + return; + if (!(inCanvas2 instanceof HTMLCanvasElement)) + return; + const ctx = inCanvas2.getContext("2d"); + if (!ctx) + return; + ctx.lineJoin = "round"; + for (let i = 0; i < result.length; i++) { + if (!lastDrawnPose[i] && drawOptions.bufferedOutput) + lastDrawnPose[i] = {...result[i]}; + ctx.strokeStyle = drawOptions.color; + ctx.lineWidth = drawOptions.lineWidth; + if (drawOptions.drawPoints) { + for (let pt = 0; pt < result[i].keypoints.length; pt++) { + ctx.fillStyle = drawOptions.useDepth && result[i].keypoints[pt].position.z ? `rgba(${127.5 + 2 * result[i].keypoints[pt].position.z}, ${127.5 - 2 * result[i].keypoints[pt].position.z}, 255, 0.5)` : drawOptions.color; + if (drawOptions.bufferedOutput) { + lastDrawnPose[i].keypoints[pt][0] = (lastDrawnPose[i].keypoints[pt][0] + result[i].keypoints[pt].position.x) / 2; + lastDrawnPose[i].keypoints[pt][1] = (lastDrawnPose[i].keypoints[pt][1] + result[i].keypoints[pt].position.y) / 2; + point(ctx, lastDrawnPose[i].keypoints[pt][0], lastDrawnPose[i].keypoints[pt][1]); + } else { + point(ctx, result[i].keypoints[pt].position.x, result[i].keypoints[pt].position.y); + } + } + } + if (drawOptions.drawLabels) { + ctx.font = drawOptions.font; + for (const pt of result[i].keypoints) { + ctx.fillStyle = drawOptions.useDepth && pt.position.z ? `rgba(${127.5 + 2 * pt.position.z}, ${127.5 - 2 * pt.position.z}, 255, 0.5)` : drawOptions.color; + ctx.fillText(`${pt.part}`, pt.position.x + 4, pt.position.y + 4); + } + } + if (drawOptions.drawPolygons) { + let part; + const points = []; + points.length = 0; + part = result[i].keypoints.find((a) => a.part === "leftShoulder"); + if (part && part.score > config2.body.scoreThreshold) + points.push([part.position.x, part.position.y]); + part = result[i].keypoints.find((a) => a.part === "rightShoulder"); + if (part && part.score > config2.body.scoreThreshold) + points.push([part.position.x, part.position.y]); + part = result[i].keypoints.find((a) => a.part === "rightHip"); + if (part && part.score > config2.body.scoreThreshold) + points.push([part.position.x, part.position.y]); + part = result[i].keypoints.find((a) => a.part === "leftHip"); + if (part && part.score > config2.body.scoreThreshold) + points.push([part.position.x, part.position.y]); + part = result[i].keypoints.find((a) => a.part === "leftShoulder"); + if (part && part.score > config2.body.scoreThreshold) + points.push([part.position.x, part.position.y]); + if (points.length === 5) + lines(ctx, points); + points.length = 0; + part = result[i].keypoints.find((a) => a.part === "leftHip"); + if (part && part.score > config2.body.scoreThreshold) + points.push([part.position.x, part.position.y]); + part = result[i].keypoints.find((a) => a.part === "leftKnee"); + if (part && part.score > config2.body.scoreThreshold) + points.push([part.position.x, part.position.y]); + part = result[i].keypoints.find((a) => a.part === "leftAnkle"); + if (part && part.score > config2.body.scoreThreshold) + points.push([part.position.x, part.position.y]); + part = result[i].keypoints.find((a) => a.part === "leftHeel"); + if (part && part.score > config2.body.scoreThreshold) + points.push([part.position.x, part.position.y]); + part = result[i].keypoints.find((a) => a.part === "leftFoot"); + if (part && part.score > config2.body.scoreThreshold) + points.push([part.position.x, part.position.y]); + curves(ctx, points); + points.length = 0; + part = result[i].keypoints.find((a) => a.part === "rightHip"); + if (part && part.score > config2.body.scoreThreshold) + points.push([part.position.x, part.position.y]); + part = result[i].keypoints.find((a) => a.part === "rightKnee"); + if (part && part.score > config2.body.scoreThreshold) + points.push([part.position.x, part.position.y]); + part = result[i].keypoints.find((a) => a.part === "rightAnkle"); + if (part && part.score > config2.body.scoreThreshold) + points.push([part.position.x, part.position.y]); + part = result[i].keypoints.find((a) => a.part === "rightHeel"); + if (part && part.score > config2.body.scoreThreshold) + points.push([part.position.x, part.position.y]); + part = result[i].keypoints.find((a) => a.part === "rightFoot"); + if (part && part.score > config2.body.scoreThreshold) + points.push([part.position.x, part.position.y]); + curves(ctx, points); + points.length = 0; + part = result[i].keypoints.find((a) => a.part === "leftShoulder"); + if (part && part.score > config2.body.scoreThreshold) + points.push([part.position.x, part.position.y]); + part = result[i].keypoints.find((a) => a.part === "leftElbow"); + if (part && part.score > config2.body.scoreThreshold) + points.push([part.position.x, part.position.y]); + part = result[i].keypoints.find((a) => a.part === "leftWrist"); + if (part && part.score > config2.body.scoreThreshold) + points.push([part.position.x, part.position.y]); + part = result[i].keypoints.find((a) => a.part === "leftPalm"); + if (part && part.score > config2.body.scoreThreshold) + points.push([part.position.x, part.position.y]); + curves(ctx, points); + points.length = 0; + part = result[i].keypoints.find((a) => a.part === "rightShoulder"); + if (part && part.score > config2.body.scoreThreshold) + points.push([part.position.x, part.position.y]); + part = result[i].keypoints.find((a) => a.part === "rightElbow"); + if (part && part.score > config2.body.scoreThreshold) + points.push([part.position.x, part.position.y]); + part = result[i].keypoints.find((a) => a.part === "rightWrist"); + if (part && part.score > config2.body.scoreThreshold) + points.push([part.position.x, part.position.y]); + part = result[i].keypoints.find((a) => a.part === "rightPalm"); + if (part && part.score > config2.body.scoreThreshold) + points.push([part.position.x, part.position.y]); + curves(ctx, points); + } + } +} +async function hand2(inCanvas2, result) { + if (!result || !inCanvas2) + return; + if (!(inCanvas2 instanceof HTMLCanvasElement)) + return; + const ctx = inCanvas2.getContext("2d"); + if (!ctx) + return; + ctx.lineJoin = "round"; + ctx.font = drawOptions.font; + for (const h of result) { + if (drawOptions.drawBoxes) { + ctx.strokeStyle = drawOptions.color; + ctx.fillStyle = drawOptions.color; + if (drawOptions.useRawBoxes) + rect(ctx, inCanvas2.width * h.boxRaw[0], inCanvas2.height * h.boxRaw[1], inCanvas2.width * h.boxRaw[2], inCanvas2.height * h.boxRaw[3]); + else + rect(ctx, h.box[0], h.box[1], h.box[2], h.box[3]); + if (drawOptions.drawLabels) { + if (drawOptions.shadowColor && drawOptions.shadowColor !== "") { + ctx.fillStyle = drawOptions.shadowColor; + ctx.fillText("hand", h.box[0] + 3, 1 + h.box[1] + drawOptions.lineHeight, h.box[2]); + } + ctx.fillStyle = drawOptions.labelColor; + ctx.fillText("hand", h.box[0] + 2, 0 + h.box[1] + drawOptions.lineHeight, h.box[2]); + } + ctx.stroke(); + } + if (drawOptions.drawPoints) { + if (h.landmarks && h.landmarks.length > 0) { + for (const pt of h.landmarks) { + ctx.fillStyle = drawOptions.useDepth ? `rgba(${127.5 + 2 * pt[2]}, ${127.5 - 2 * pt[2]}, 255, 0.5)` : drawOptions.color; + point(ctx, pt[0], pt[1]); + } + } + } + if (drawOptions.drawPolygons) { + const addPart = (part) => { + if (!part) + return; + for (let i = 0; i < part.length; i++) { + ctx.lineWidth = drawOptions.lineWidth; + ctx.beginPath(); + ctx.strokeStyle = drawOptions.useDepth ? `rgba(${127.5 + 2 * part[i][2]}, ${127.5 - 2 * part[i][2]}, 255, 0.5)` : drawOptions.color; + ctx.moveTo(part[i > 0 ? i - 1 : 0][0], part[i > 0 ? i - 1 : 0][1]); + ctx.lineTo(part[i][0], part[i][1]); + ctx.stroke(); + } + }; + addPart(h.annotations.indexFinger); + addPart(h.annotations.middleFinger); + addPart(h.annotations.ringFinger); + addPart(h.annotations.pinky); + addPart(h.annotations.thumb); + } + } +} +async function object(inCanvas2, result) { + if (!result || !inCanvas2) + return; + if (!(inCanvas2 instanceof HTMLCanvasElement)) + return; + const ctx = inCanvas2.getContext("2d"); + if (!ctx) + return; + ctx.lineJoin = "round"; + ctx.font = drawOptions.font; + for (const h of result) { + if (drawOptions.drawBoxes) { + ctx.strokeStyle = drawOptions.color; + ctx.fillStyle = drawOptions.color; + if (drawOptions.useRawBoxes) + rect(ctx, inCanvas2.width * h.boxRaw[0], inCanvas2.height * h.boxRaw[1], inCanvas2.width * h.boxRaw[2], inCanvas2.height * h.boxRaw[3]); + else + rect(ctx, h.box[0], h.box[1], h.box[2], h.box[3]); + if (drawOptions.drawLabels) { + const label = `${Math.round(100 * h.score)}% ${h.label}`; + if (drawOptions.shadowColor && drawOptions.shadowColor !== "") { + ctx.fillStyle = drawOptions.shadowColor; + ctx.fillText(label, h.box[0] + 3, 1 + h.box[1] + drawOptions.lineHeight, h.box[2]); + } + ctx.fillStyle = drawOptions.labelColor; + ctx.fillText(label, h.box[0] + 2, 0 + h.box[1] + drawOptions.lineHeight, h.box[2]); + } + ctx.stroke(); + } + } +} +async function canvas(inCanvas2, outCanvas2) { + if (!inCanvas2 || !outCanvas2) + return; + if (!(inCanvas2 instanceof HTMLCanvasElement) || !(outCanvas2 instanceof HTMLCanvasElement)) + return; + const outCtx = inCanvas2.getContext("2d"); + outCtx == null ? void 0 : outCtx.drawImage(inCanvas2, 0, 0); +} +async function all(inCanvas2, result) { + if (!result || !inCanvas2) + return; + if (!(inCanvas2 instanceof HTMLCanvasElement)) + return; + face2(inCanvas2, result.face); + body2(inCanvas2, result.body); + hand2(inCanvas2, result.hand); + gesture(inCanvas2, result.gesture); + object(inCanvas2, result.object); +} + +// src/sample.ts +var face3 = ` /9j/4AAQSkZJRgABAQEAYABgAAD/4QBoRXhpZgAATU0AKgAAAAgABAEaAAUAAAABAAAAPgEbAAUA AAABAAAARgEoAAMAAAABAAIAAAExAAIAAAARAAAATgAAAAAAAABgAAAAAQAAAGAAAAABcGFpbnQu bmV0IDQuMi4xMwAA/9sAQwAGBAUGBQQGBgUGBwcGCAoQCgoJCQoUDg8MEBcUGBgXFBYWGh0lHxob @@ -163,7 +25142,8 @@ PQ4GJ+ashuK0MhWaoWcA0AaOmASMK7jRNPWYBmHyiuepO2x10qfcv6vYxCzYqoGK4HVYVTJrmb5l c6oaM5TUJ8EgGsG4kLNUHT0M64OaqMMikSRsuKbnFMRLG3zVehOaGNE445NNlnVFpDMu6uie9Vo1 8z5mOAOST2pDK91cNN+5tsrH3PrW54a06KxT7fdrlh/q1Pc+tJ6IUdZGvHPLezMcnBOWbsPap5r3 ylFtbdT1xUWNWzU0/Zbwlgfmx8zGsHWtRHmMqE59aAMyNifvHPc1f0gtPdqkY5JosJHeNci2tktY -euPnNY+oXWZEVJNrZ9aun8SIq/CzodHuriIokhDIR1ronbKZr0o6o8ipoz//2Q==`,_1=` +euPnNY+oXWZEVJNrZ9aun8SIq/CzodHuriIokhDIR1ronbKZr0o6o8ipoz//2Q==`; +var body3 = ` /9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAsICAoIBwsKCQoNDAsNERwSEQ8PESIZGhQcKSQrKigk JyctMkA3LTA9MCcnOEw5PUNFSElIKzZPVU5GVEBHSEX/2wBDAQwNDREPESESEiFFLicuRUVFRUVF RUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUX/wAARCASwBLADASIA @@ -731,5 +25711,433 @@ AAAAAAJAAAAAAAAAAAAAABAJEAAAAAAAAAAAAAAAIEoBKAAAAAAAAAAAAAAABAlAAAAAAAIAAAAA BAkBAkBAkBAlACEgMZjdjbFW8bWrEx8YWANb6Fp+bfwab+vLDKMFK9qxH5L0bAr8OPRPKz2AY7J2 SbAjYZAI2E7AIEgIEgIEgMdkSy2NgY7MdlmyNoBXsxmFuyNgVTVjNV3KjlBRNTlXTVHKCrlIqt5T lBhEMohlFerLlBjEMohMVTEARDKCITsAk2AEgAAAkAAAAAAAAAAAAAAAAAAAAAAAASAAAAAAAAD/ -2Q==`;var E0="1.2.4";var ge,ve,ze,le,o1,Me,s1,h1,i1,S0=class{constructor(t={}){ge.set(this,void 0);ve.set(this,void 0);ze.set(this,void 0);le.set(this,void 0);this.analyze=(...t)=>{if(!K(this,ve))return;let n=this.tf.engine().state.numTensors,c=K(this,ge);xe(this,ge,n);let r=n-c;r!==0&&b(...t,r)};o1.set(this,t=>{if(!K(this,ze))return null;if(!t)return"input is not defined";if(this.tf.ENV.flags.IS_NODE&&!(t instanceof mt.Tensor))return"input must be a tensor";try{this.tf.getBackend()}catch(n){return"backend not loaded"}return null});Me.set(this,async(t=!1)=>{if(this.config.backend&&this.config.backend!==""&&t||this.tf.getBackend()!==this.config.backend){let n=z();if(this.state="backend",this.config.backend&&this.config.backend!==""){if(this.tf.ENV.flags.IS_BROWSER&&this.config.backend==="tensorflow"&&(this.config.backend="webgl"),this.tf.ENV.flags.IS_NODE&&(this.config.backend==="webgl"||this.config.backend==="wasm")&&(this.config.backend="tensorflow"),this.config.debug&&b("setting backend:",this.config.backend),this.config.backend==="wasm"){this.config.debug&&b("wasm path:",this.config.wasmPath),this.tf.setWasmPaths(this.config.wasmPath);let c=await this.tf.env().getAsync("WASM_HAS_SIMD_SUPPORT"),r=await this.tf.env().getAsync("WASM_HAS_MULTITHREAD_SUPPORT");this.config.debug&&b(`wasm execution: ${c?"SIMD":"no SIMD"} ${r?"multithreaded":"singlethreaded"}`),c||b("warning: wasm simd support is not enabled")}this.config.backend==="humangl"&&zt();try{await this.tf.setBackend(this.config.backend)}catch(c){b("error: cannot set backend:",this.config.backend,c)}}if(this.tf.enableProdMode(),this.tf.getBackend()==="webgl"){this.config.deallocate&&(b("changing webgl: WEBGL_DELETE_TEXTURE_THRESHOLD:",this.config.deallocate),this.tf.ENV.set("WEBGL_DELETE_TEXTURE_THRESHOLD",this.config.deallocate?0:-1));let c=await this.tf.backend().getGPGPUContext().gl;this.config.debug&&b(`gl version:${c.getParameter(c.VERSION)} renderer:${c.getParameter(c.RENDERER)}`)}await this.tf.ready(),this.perf.backend=Math.trunc(z()-n)}});s1.set(this,async()=>{let t=(r,A="application/octet-stream")=>fetch(`data:${A};base64,${r}`).then(_=>_.blob()),n,c;switch(this.config.warmup){case"face":n=await t(A1);break;case"full":n=await t(_1);break;default:n=null}if(n){let r=await createImageBitmap(n);c=await this.detect(r,this.config),r.close()}return c});h1.set(this,async()=>new Promise(t=>{let n,c=0;switch(this.config.warmup){case"face":c=256,n="data:image/jpeg;base64,"+A1;break;case"full":case"body":c=1200,n="data:image/jpeg;base64,"+_1;break;default:n=null}let r=new Image;r.onload=async()=>{let A=typeof OffscreenCanvas!="undefined"?new OffscreenCanvas(c,c):document.createElement("canvas");A.width=r.naturalWidth,A.height=r.naturalHeight;let _=A.getContext("2d");_==null||_.drawImage(r,0,0);let o=await this.detect(A,this.config);t(o)},n?r.src=n:t(null)}));i1.set(this,async()=>{let t=_=>Buffer.from(_,"base64"),n=this.config.warmup==="face"?t(A1):t(_1),c=mt.node.decodeJpeg(n),r=c.expandDims(0);this.tf.dispose(c);let A=await this.detect(r,this.config);return this.tf.dispose(r),A});this.tf=mt,this.draw=dt,this.version=E0,this.config=de(j,t),this.state="idle",xe(this,ge,0),xe(this,ve,!1),xe(this,ze,!1),xe(this,le,!0),this.perf={},this.models={face:null,posenet:null,blazepose:null,handpose:null,iris:null,age:null,gender:null,emotion:null,embedding:null,nanodet:null,faceres:null},this.image=n=>lt(n,this.config),this.classes={facemesh:pt,age:y1,gender:l1,emotion:u1,faceres:z1,body:this.config.body.modelPath.includes("posenet")?D1:st,hand:rt,nanodet:at},this.sysinfo=vt()}profileData(){return this.config.profile?x1:{}}similarity(t,n){return this.config.face.description.enabled?R1(t,n):this.config.face.embedding.enabled?Mt(t,n):0}enhance(t){return E1(t)}match(t,n,c=0){return Rt(t,n,c)}async load(t={}){this.state="load";let n=z();t&&(this.config=de(this.config,t)),K(this,le)&&(this.config.debug&&b(`version: ${this.version}`),this.config.debug&&b(`tfjs version: ${this.tf.version_core}`),this.config.debug&&b("platform:",this.sysinfo.platform),this.config.debug&&b("agent:",this.sysinfo.agent),await K(this,Me).call(this,!0),this.tf.ENV.flags.IS_BROWSER&&(this.config.debug&&b("configuration:",this.config),this.config.debug&&b("tf flags:",this.tf.ENV.flags))),this.config.async?[this.models.face,this.models.age,this.models.gender,this.models.emotion,this.models.embedding,this.models.handpose,this.models.posenet,this.models.blazepose,this.models.nanodet,this.models.faceres]=await Promise.all([this.models.face||(this.config.face.enabled?pt.load(this.config):null),this.models.age||(this.config.face.enabled&&this.config.face.age.enabled?w1(this.config):null),this.models.gender||(this.config.face.enabled&&this.config.face.gender.enabled?p1(this.config):null),this.models.emotion||(this.config.face.enabled&&this.config.face.emotion.enabled?T1(this.config):null),this.models.embedding||(this.config.face.enabled&&this.config.face.embedding.enabled?P1(this.config):null),this.models.handpose||(this.config.hand.enabled?ot(this.config):null),this.models.posenet||(this.config.body.enabled&&this.config.body.modelPath.includes("posenet")?Q1(this.config):null),this.models.posenet||(this.config.body.enabled&&this.config.body.modelPath.includes("blazepose")?ht(this.config):null),this.models.nanodet||(this.config.object.enabled?yt(this.config):null),this.models.faceres||(this.config.face.enabled&&this.config.face.description.enabled?M1(this.config):null)]):(this.config.face.enabled&&!this.models.face&&(this.models.face=await pt.load(this.config)),this.config.face.enabled&&this.config.face.age.enabled&&!this.models.age&&(this.models.age=await w1(this.config)),this.config.face.enabled&&this.config.face.gender.enabled&&!this.models.gender&&(this.models.gender=await p1(this.config)),this.config.face.enabled&&this.config.face.emotion.enabled&&!this.models.emotion&&(this.models.emotion=await T1(this.config)),this.config.face.enabled&&this.config.face.embedding.enabled&&!this.models.embedding&&(this.models.embedding=await P1(this.config)),this.config.hand.enabled&&!this.models.handpose&&(this.models.handpose=await ot(this.config)),this.config.body.enabled&&!this.models.posenet&&this.config.body.modelPath.includes("posenet")&&(this.models.posenet=await Q1(this.config)),this.config.body.enabled&&!this.models.blazepose&&this.config.body.modelPath.includes("blazepose")&&(this.models.blazepose=await ht(this.config)),this.config.object.enabled&&!this.models.nanodet&&(this.models.nanodet=await yt(this.config)),this.config.face.enabled&&this.config.face.description.enabled&&!this.models.faceres&&(this.models.faceres=await M1(this.config))),K(this,le)&&(this.config.debug&&b("tf engine state:",this.tf.engine().state.numBytes,"bytes",this.tf.engine().state.numTensors,"tensors"),xe(this,le,!1));let c=Math.trunc(z()-n);c>(this.perf.load||0)&&(this.perf.load=c)}async detect(t,n={}){return new Promise(async c=>{var a,M,g,W;this.state="config";let r;this.config=de(this.config,n),this.state="check";let A=K(this,o1).call(this,t);A&&(b(A,t),c({error:A}));let _=z();await K(this,Me).call(this),await this.load(),this.config.scoped&&this.tf.engine().startScope(),this.analyze("Start Scope:"),r=z();let o=lt(t,this.config);if(!o||!o.tensor){b("could not convert input to tensor"),c({error:"could not convert input to tensor"});return}this.perf.image=Math.trunc(z()-r),this.analyze("Get Image:");let s,i,x,h,w;this.config.async?(x=this.config.face.enabled?S1(this,o.tensor):[],this.perf.face&&delete this.perf.face):(this.state="run:face",r=z(),x=this.config.face.enabled?await S1(this,o.tensor):[],w=Math.trunc(z()-r),w>0&&(this.perf.face=w)),this.analyze("Start Body:"),this.config.async?(this.config.body.modelPath.includes("posenet")?s=this.config.body.enabled?(a=this.models.posenet)==null?void 0:a.estimatePoses(o.tensor,this.config):[]:s=this.config.body.enabled?it(o.tensor,this.config):[],this.perf.body&&delete this.perf.body):(this.state="run:body",r=z(),this.config.body.modelPath.includes("posenet")?s=this.config.body.enabled?await((M=this.models.posenet)==null?void 0:M.estimatePoses(o.tensor,this.config)):[]:s=this.config.body.enabled?await it(o.tensor,this.config):[],w=Math.trunc(z()-r),w>0&&(this.perf.body=w)),this.analyze("End Body:"),this.analyze("Start Hand:"),this.config.async?(i=this.config.hand.enabled?(g=this.models.handpose)==null?void 0:g.estimateHands(o.tensor,this.config):[],this.perf.hand&&delete this.perf.hand):(this.state="run:hand",r=z(),i=this.config.hand.enabled?await((W=this.models.handpose)==null?void 0:W.estimateHands(o.tensor,this.config)):[],w=Math.trunc(z()-r),w>0&&(this.perf.hand=w)),this.analyze("End Hand:"),this.analyze("Start Object:"),this.config.async?(h=this.config.object.enabled?wt(o.tensor,this.config):[],this.perf.object&&delete this.perf.object):(this.state="run:object",r=z(),h=this.config.object.enabled?await wt(o.tensor,this.config):[],w=Math.trunc(z()-r),w>0&&(this.perf.object=w)),this.analyze("End Object:"),this.config.async&&([x,s,i,h]=await Promise.all([x,s,i,h])),o.tensor.dispose(),this.config.scoped&&this.tf.engine().endScope(),this.analyze("End Scope:");let f=[];this.config.gesture.enabled&&(r=z(),f=[...u0(x),...p0(s),...g0(i),...b0(x)],this.config.async?this.perf.gesture&&delete this.perf.gesture:this.perf.gesture=Math.trunc(z()-r)),this.perf.total=Math.trunc(z()-_),this.state="idle";let m={face:x,body:s,hand:i,gesture:f,object:h,performance:this.perf,canvas:o.canvas};c(m)})}async warmup(t={}){let n=z();t&&(this.config=de(this.config,t));let c=this.config.videoOptimized;this.config.videoOptimized=!1;let r;typeof createImageBitmap=="function"?r=await K(this,s1).call(this):typeof Image!="undefined"?r=await K(this,h1).call(this):r=await K(this,i1).call(this),this.config.videoOptimized=c;let A=z();return this.config.debug&&b("Warmup",this.config.warmup,Math.round(A-n),"ms",r),r}};ge=new WeakMap,ve=new WeakMap,ze=new WeakMap,le=new WeakMap,o1=new WeakMap,Me=new WeakMap,s1=new WeakMap,h1=new WeakMap,i1=new WeakMap;export{S0 as Human,S0 as default}; +2Q==`; + +// package.json +var version6 = "1.2.4"; + +// src/human.ts +var _numTensors, _analyzeMemoryLeaks, _checkSanity, _firstRun, _sanity, _checkBackend, _warmupBitmap, _warmupCanvas, _warmupNode; +var Human = class { + constructor(userConfig = {}) { + _numTensors.set(this, void 0); + _analyzeMemoryLeaks.set(this, void 0); + _checkSanity.set(this, void 0); + _firstRun.set(this, void 0); + this.analyze = (...msg) => { + if (!__privateGet(this, _analyzeMemoryLeaks)) + return; + const current = this.tf.engine().state.numTensors; + const previous = __privateGet(this, _numTensors); + __privateSet(this, _numTensors, current); + const leaked = current - previous; + if (leaked !== 0) + log(...msg, leaked); + }; + _sanity.set(this, (input) => { + if (!__privateGet(this, _checkSanity)) + return null; + if (!input) + return "input is not defined"; + if (this.tf.ENV.flags.IS_NODE && !(input instanceof tf20.Tensor)) + return "input must be a tensor"; + try { + this.tf.getBackend(); + } catch (e) { + return "backend not loaded"; + } + return null; + }); + _checkBackend.set(this, async (force = false) => { + if (this.config.backend && this.config.backend !== "" && force || this.tf.getBackend() !== this.config.backend) { + const timeStamp = now(); + this.state = "backend"; + if (this.config.backend && this.config.backend !== "") { + if (this.tf.ENV.flags.IS_BROWSER && this.config.backend === "tensorflow") + this.config.backend = "webgl"; + if (this.tf.ENV.flags.IS_NODE && (this.config.backend === "webgl" || this.config.backend === "wasm")) + this.config.backend = "tensorflow"; + if (this.config.debug) + log("setting backend:", this.config.backend); + if (this.config.backend === "wasm") { + if (this.config.debug) + log("wasm path:", this.config.wasmPath); + this.tf.setWasmPaths(this.config.wasmPath); + const simd = await this.tf.env().getAsync("WASM_HAS_SIMD_SUPPORT"); + const mt = await this.tf.env().getAsync("WASM_HAS_MULTITHREAD_SUPPORT"); + if (this.config.debug) + log(`wasm execution: ${simd ? "SIMD" : "no SIMD"} ${mt ? "multithreaded" : "singlethreaded"}`); + if (!simd) + log("warning: wasm simd support is not enabled"); + } + if (this.config.backend === "humangl") + register(); + try { + await this.tf.setBackend(this.config.backend); + } catch (err) { + log("error: cannot set backend:", this.config.backend, err); + } + } + this.tf.enableProdMode(); + if (this.tf.getBackend() === "webgl") { + if (this.config.deallocate) { + log("changing webgl: WEBGL_DELETE_TEXTURE_THRESHOLD:", this.config.deallocate); + this.tf.ENV.set("WEBGL_DELETE_TEXTURE_THRESHOLD", this.config.deallocate ? 0 : -1); + } + const gl = await this.tf.backend().getGPGPUContext().gl; + if (this.config.debug) + log(`gl version:${gl.getParameter(gl.VERSION)} renderer:${gl.getParameter(gl.RENDERER)}`); + } + await this.tf.ready(); + this.perf.backend = Math.trunc(now() - timeStamp); + } + }); + _warmupBitmap.set(this, async () => { + const b64toBlob = (base64, type = "application/octet-stream") => fetch(`data:${type};base64,${base64}`).then((res2) => res2.blob()); + let blob; + let res; + switch (this.config.warmup) { + case "face": + blob = await b64toBlob(face3); + break; + case "full": + blob = await b64toBlob(body3); + break; + default: + blob = null; + } + if (blob) { + const bitmap = await createImageBitmap(blob); + res = await this.detect(bitmap, this.config); + bitmap.close(); + } + return res; + }); + _warmupCanvas.set(this, async () => new Promise((resolve) => { + let src; + let size = 0; + switch (this.config.warmup) { + case "face": + size = 256; + src = "data:image/jpeg;base64," + face3; + break; + case "full": + case "body": + size = 1200; + src = "data:image/jpeg;base64," + body3; + break; + default: + src = null; + } + const img = new Image(); + img.onload = async () => { + const canvas2 = typeof OffscreenCanvas !== "undefined" ? new OffscreenCanvas(size, size) : document.createElement("canvas"); + canvas2.width = img.naturalWidth; + canvas2.height = img.naturalHeight; + const ctx = canvas2.getContext("2d"); + ctx == null ? void 0 : ctx.drawImage(img, 0, 0); + const res = await this.detect(canvas2, this.config); + resolve(res); + }; + if (src) + img.src = src; + else + resolve(null); + })); + _warmupNode.set(this, async () => { + const atob = (str) => Buffer.from(str, "base64"); + const img = this.config.warmup === "face" ? atob(face3) : atob(body3); + const data3 = tf20.node.decodeJpeg(img); + const expanded = data3.expandDims(0); + this.tf.dispose(data3); + const res = await this.detect(expanded, this.config); + this.tf.dispose(expanded); + return res; + }); + this.tf = tf20; + this.draw = draw_exports; + this.version = version6; + this.config = mergeDeep(config2, userConfig); + this.state = "idle"; + __privateSet(this, _numTensors, 0); + __privateSet(this, _analyzeMemoryLeaks, false); + __privateSet(this, _checkSanity, false); + __privateSet(this, _firstRun, true); + this.perf = {}; + this.models = { + face: null, + posenet: null, + blazepose: null, + handpose: null, + iris: null, + age: null, + gender: null, + emotion: null, + embedding: null, + nanodet: null, + faceres: null + }; + this.image = (input) => process3(input, this.config); + this.classes = { + facemesh, + age: age_exports, + gender: gender_exports, + emotion: emotion_exports, + faceres: faceres_exports, + body: this.config.body.modelPath.includes("posenet") ? posenet_exports : blazepose_exports, + hand: handpose_exports, + nanodet: nanodet_exports + }; + this.sysinfo = info(); + } + profileData() { + if (this.config.profile) + return data2; + return {}; + } + similarity(embedding1, embedding22) { + if (this.config.face.description.enabled) + return similarity2(embedding1, embedding22); + if (this.config.face.embedding.enabled) + return similarity(embedding1, embedding22); + return 0; + } + enhance(input) { + return enhance2(input); + } + match(faceEmbedding, db, threshold = 0) { + return match(faceEmbedding, db, threshold); + } + async load(userConfig = {}) { + this.state = "load"; + const timeStamp = now(); + if (userConfig) + this.config = mergeDeep(this.config, userConfig); + if (__privateGet(this, _firstRun)) { + if (this.config.debug) + log(`version: ${this.version}`); + if (this.config.debug) + log(`tfjs version: ${this.tf.version_core}`); + if (this.config.debug) + log("platform:", this.sysinfo.platform); + if (this.config.debug) + log("agent:", this.sysinfo.agent); + await __privateGet(this, _checkBackend).call(this, true); + if (this.tf.ENV.flags.IS_BROWSER) { + if (this.config.debug) + log("configuration:", this.config); + if (this.config.debug) + log("tf flags:", this.tf.ENV.flags); + } + } + if (this.config.async) { + [ + this.models.face, + this.models.age, + this.models.gender, + this.models.emotion, + this.models.embedding, + this.models.handpose, + this.models.posenet, + this.models.blazepose, + this.models.nanodet, + this.models.faceres + ] = await Promise.all([ + this.models.face || (this.config.face.enabled ? facemesh.load(this.config) : null), + this.models.age || (this.config.face.enabled && this.config.face.age.enabled ? load(this.config) : null), + this.models.gender || (this.config.face.enabled && this.config.face.gender.enabled ? load2(this.config) : null), + this.models.emotion || (this.config.face.enabled && this.config.face.emotion.enabled ? load3(this.config) : null), + this.models.embedding || (this.config.face.enabled && this.config.face.embedding.enabled ? load4(this.config) : null), + this.models.handpose || (this.config.hand.enabled ? load8(this.config) : null), + this.models.posenet || (this.config.body.enabled && this.config.body.modelPath.includes("posenet") ? load7(this.config) : null), + this.models.posenet || (this.config.body.enabled && this.config.body.modelPath.includes("blazepose") ? load9(this.config) : null), + this.models.nanodet || (this.config.object.enabled ? load10(this.config) : null), + this.models.faceres || (this.config.face.enabled && this.config.face.description.enabled ? load5(this.config) : null) + ]); + } else { + if (this.config.face.enabled && !this.models.face) + this.models.face = await facemesh.load(this.config); + if (this.config.face.enabled && this.config.face.age.enabled && !this.models.age) + this.models.age = await load(this.config); + if (this.config.face.enabled && this.config.face.gender.enabled && !this.models.gender) + this.models.gender = await load2(this.config); + if (this.config.face.enabled && this.config.face.emotion.enabled && !this.models.emotion) + this.models.emotion = await load3(this.config); + if (this.config.face.enabled && this.config.face.embedding.enabled && !this.models.embedding) + this.models.embedding = await load4(this.config); + if (this.config.hand.enabled && !this.models.handpose) + this.models.handpose = await load8(this.config); + if (this.config.body.enabled && !this.models.posenet && this.config.body.modelPath.includes("posenet")) + this.models.posenet = await load7(this.config); + if (this.config.body.enabled && !this.models.blazepose && this.config.body.modelPath.includes("blazepose")) + this.models.blazepose = await load9(this.config); + if (this.config.object.enabled && !this.models.nanodet) + this.models.nanodet = await load10(this.config); + if (this.config.face.enabled && this.config.face.description.enabled && !this.models.faceres) + this.models.faceres = await load5(this.config); + } + if (__privateGet(this, _firstRun)) { + if (this.config.debug) + log("tf engine state:", this.tf.engine().state.numBytes, "bytes", this.tf.engine().state.numTensors, "tensors"); + __privateSet(this, _firstRun, false); + } + const current = Math.trunc(now() - timeStamp); + if (current > (this.perf.load || 0)) + this.perf.load = current; + } + async detect(input, userConfig = {}) { + return new Promise(async (resolve) => { + var _a, _b, _c, _d; + this.state = "config"; + let timeStamp; + this.config = mergeDeep(this.config, userConfig); + this.state = "check"; + const error = __privateGet(this, _sanity).call(this, input); + if (error) { + log(error, input); + resolve({error}); + } + const timeStart = now(); + await __privateGet(this, _checkBackend).call(this); + await this.load(); + if (this.config.scoped) + this.tf.engine().startScope(); + this.analyze("Start Scope:"); + timeStamp = now(); + const process4 = process3(input, this.config); + if (!process4 || !process4.tensor) { + log("could not convert input to tensor"); + resolve({error: "could not convert input to tensor"}); + return; + } + this.perf.image = Math.trunc(now() - timeStamp); + this.analyze("Get Image:"); + let bodyRes; + let handRes; + let faceRes; + let objectRes; + let current; + if (this.config.async) { + faceRes = this.config.face.enabled ? detectFace(this, process4.tensor) : []; + if (this.perf.face) + delete this.perf.face; + } else { + this.state = "run:face"; + timeStamp = now(); + faceRes = this.config.face.enabled ? await detectFace(this, process4.tensor) : []; + current = Math.trunc(now() - timeStamp); + if (current > 0) + this.perf.face = current; + } + this.analyze("Start Body:"); + if (this.config.async) { + if (this.config.body.modelPath.includes("posenet")) + bodyRes = this.config.body.enabled ? (_a = this.models.posenet) == null ? void 0 : _a.estimatePoses(process4.tensor, this.config) : []; + else + bodyRes = this.config.body.enabled ? predict6(process4.tensor, this.config) : []; + if (this.perf.body) + delete this.perf.body; + } else { + this.state = "run:body"; + timeStamp = now(); + if (this.config.body.modelPath.includes("posenet")) + bodyRes = this.config.body.enabled ? await ((_b = this.models.posenet) == null ? void 0 : _b.estimatePoses(process4.tensor, this.config)) : []; + else + bodyRes = this.config.body.enabled ? await predict6(process4.tensor, this.config) : []; + current = Math.trunc(now() - timeStamp); + if (current > 0) + this.perf.body = current; + } + this.analyze("End Body:"); + this.analyze("Start Hand:"); + if (this.config.async) { + handRes = this.config.hand.enabled ? (_c = this.models.handpose) == null ? void 0 : _c.estimateHands(process4.tensor, this.config) : []; + if (this.perf.hand) + delete this.perf.hand; + } else { + this.state = "run:hand"; + timeStamp = now(); + handRes = this.config.hand.enabled ? await ((_d = this.models.handpose) == null ? void 0 : _d.estimateHands(process4.tensor, this.config)) : []; + current = Math.trunc(now() - timeStamp); + if (current > 0) + this.perf.hand = current; + } + this.analyze("End Hand:"); + this.analyze("Start Object:"); + if (this.config.async) { + objectRes = this.config.object.enabled ? predict7(process4.tensor, this.config) : []; + if (this.perf.object) + delete this.perf.object; + } else { + this.state = "run:object"; + timeStamp = now(); + objectRes = this.config.object.enabled ? await predict7(process4.tensor, this.config) : []; + current = Math.trunc(now() - timeStamp); + if (current > 0) + this.perf.object = current; + } + this.analyze("End Object:"); + if (this.config.async) { + [faceRes, bodyRes, handRes, objectRes] = await Promise.all([faceRes, bodyRes, handRes, objectRes]); + } + process4.tensor.dispose(); + if (this.config.scoped) + this.tf.engine().endScope(); + this.analyze("End Scope:"); + let gestureRes = []; + if (this.config.gesture.enabled) { + timeStamp = now(); + gestureRes = [...face(faceRes), ...body(bodyRes), ...hand(handRes), ...iris(faceRes)]; + if (!this.config.async) + this.perf.gesture = Math.trunc(now() - timeStamp); + else if (this.perf.gesture) + delete this.perf.gesture; + } + this.perf.total = Math.trunc(now() - timeStart); + this.state = "idle"; + const result = { + face: faceRes, + body: bodyRes, + hand: handRes, + gesture: gestureRes, + object: objectRes, + performance: this.perf, + canvas: process4.canvas + }; + resolve(result); + }); + } + async warmup(userConfig = {}) { + const t0 = now(); + if (userConfig) + this.config = mergeDeep(this.config, userConfig); + const save = this.config.videoOptimized; + this.config.videoOptimized = false; + let res; + if (typeof createImageBitmap === "function") + res = await __privateGet(this, _warmupBitmap).call(this); + else if (typeof Image !== "undefined") + res = await __privateGet(this, _warmupCanvas).call(this); + else + res = await __privateGet(this, _warmupNode).call(this); + this.config.videoOptimized = save; + const t1 = now(); + if (this.config.debug) + log("Warmup", this.config.warmup, Math.round(t1 - t0), "ms", res); + return res; + } +}; +_numTensors = new WeakMap(); +_analyzeMemoryLeaks = new WeakMap(); +_checkSanity = new WeakMap(); +_firstRun = new WeakMap(); +_sanity = new WeakMap(); +_checkBackend = new WeakMap(); +_warmupBitmap = new WeakMap(); +_warmupCanvas = new WeakMap(); +_warmupNode = new WeakMap(); +export { + Human, + Human as default +}; //# sourceMappingURL=human.esm-nobundle.js.map diff --git a/dist/human.esm-nobundle.js.map b/dist/human.esm-nobundle.js.map index 555f018c..ba12e4b9 100644 --- a/dist/human.esm-nobundle.js.map +++ b/dist/human.esm-nobundle.js.map @@ -1,7 +1,7 @@ { "version": 3, "sources": ["../src/tfjs/tf-browser.ts", "../src/blazeface/facemesh.ts", "../src/posenet/keypoints.ts", "../src/helpers.ts", "../src/sysinfo.ts", "../src/human.ts", "../src/tfjs/backend.ts", "../src/age/age.ts", "../src/profile.ts", "../src/gender/gender.ts", "../src/emotion/emotion.ts", "../src/embedding/embedding.ts", "../src/faceres/faceres.ts", "../src/faceall.ts", "../src/blazeface/blazeface.ts", "../src/blazeface/facepipeline.ts", "../src/blazeface/box.ts", "../src/blazeface/util.ts", "../src/blazeface/coords.ts", "../src/posenet/posenet.ts", "../src/posenet/modelBase.ts", "../src/posenet/heapSort.ts", "../src/posenet/buildParts.ts", "../src/posenet/decodePose.ts", "../src/posenet/vectors.ts", "../src/posenet/decoders.ts", "../src/posenet/decodeMultiple.ts", "../src/posenet/util.ts", "../src/handpose/handpose.ts", "../src/handpose/handdetector.ts", "../src/handpose/box.ts", "../src/handpose/handpipeline.ts", "../src/handpose/util.ts", "../src/handpose/anchors.ts", "../src/blazepose/blazepose.ts", "../src/blazepose/annotations.ts", "../src/nanodet/nanodet.ts", "../src/nanodet/labels.ts", "../src/gesture/gesture.ts", "../src/image/image.ts", "../src/image/imagefx.js", "../src/draw/draw.ts", "../src/config.ts", "../src/sample.ts"], - "sourcesContent": ["// wrapper to load tfjs in a single place so version can be changed quickly\n\n// simplified\n// { modules: 1061, moduleBytes: 3772720, outputBytes: 1531035 }\n\n// export * from '@tensorflow/tfjs/dist/index.js';\n// export * from '@tensorflow/tfjs-backend-wasm';\n\n// modular\n// { modules: 1064, moduleBytes: 3793219, outputBytes: 1535600 }\n\n// get versions of all packages.\nimport * as packageBundle from '@tensorflow/tfjs/package.json';\nimport * as packageCore from '@tensorflow/tfjs-core/package.json';\nimport * as packageData from '@tensorflow/tfjs-data/package.json';\nimport * as packageLayers from '@tensorflow/tfjs-layers/package.json';\nimport * as packageConverter from '@tensorflow/tfjs-converter/package.json';\n// for backends, get version from source so it can register backend during import\nimport { version_cpu } from '@tensorflow/tfjs-backend-cpu/dist/index.js';\nimport { version_webgl } from '@tensorflow/tfjs-backend-webgl/dist/index.js';\nimport { version_wasm } from '@tensorflow/tfjs-backend-wasm/dist/index.js';\n\n// export all\nexport * from '@tensorflow/tfjs-core/dist/index.js';\nexport * from '@tensorflow/tfjs-layers/dist/index.js';\nexport * from '@tensorflow/tfjs-converter/dist/index.js';\nexport * as data from '@tensorflow/tfjs-data/dist/index.js';\nexport * from '@tensorflow/tfjs-backend-cpu/dist/index.js';\nexport * from '@tensorflow/tfjs-backend-webgl/dist/index.js';\nexport * from '@tensorflow/tfjs-backend-wasm/dist/index.js';\n\n// export versions\nexport const version = {\n tfjs: packageBundle.version,\n 'tfjs-core': packageCore.version,\n 'tfjs-data': packageData.version,\n 'tfjs-layers': packageLayers.version,\n 'tfjs-converter': packageConverter.version,\n 'tfjs-backend-cpu': version_cpu,\n 'tfjs-backend-webgl': version_webgl,\n 'tfjs-backend-wasm': version_wasm,\n};\n", "import { log } from '../helpers';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as blazeface from './blazeface';\nimport * as facepipeline from './facepipeline';\nimport * as coords from './coords';\n\nexport class MediaPipeFaceMesh {\n facePipeline: any;\n config: any;\n\n constructor(blazeFace, blazeMeshModel, irisModel, config) {\n this.facePipeline = new facepipeline.Pipeline(blazeFace, blazeMeshModel, irisModel);\n this.config = config;\n }\n\n async estimateFaces(input, config): Promise<{ confidence, boxConfidence, faceConfidence, box, mesh, boxRaw, meshRaw, annotations, image }[]> {\n const predictions = await this.facePipeline.predict(input, config);\n const results: Array<{ confidence, boxConfidence, faceConfidence, box, mesh, boxRaw, meshRaw, annotations, image }> = [];\n for (const prediction of (predictions || [])) {\n if (prediction.isDisposedInternal) continue; // guard against disposed tensors on long running operations such as pause in middle of processing\n const mesh = prediction.coords ? prediction.coords.arraySync() : [];\n const meshRaw = mesh.map((pt) => [\n pt[0] / input.shape[2],\n pt[1] / input.shape[1],\n pt[2] / this.facePipeline.meshSize,\n ]);\n const annotations = {};\n if (mesh && mesh.length > 0) {\n for (const key of Object.keys(coords.MESH_ANNOTATIONS)) annotations[key] = coords.MESH_ANNOTATIONS[key].map((index) => mesh[index]);\n }\n const box = prediction.box ? [\n Math.max(0, prediction.box.startPoint[0]),\n Math.max(0, prediction.box.startPoint[1]),\n Math.min(input.shape[1], prediction.box.endPoint[0]) - Math.max(0, prediction.box.startPoint[0]),\n Math.min(input.shape[2], prediction.box.endPoint[1]) - Math.max(0, prediction.box.startPoint[1]),\n ] : 0;\n const boxRaw = prediction.box ? [\n prediction.box.startPoint[0] / input.shape[2],\n prediction.box.startPoint[1] / input.shape[1],\n (prediction.box.endPoint[0] - prediction.box.startPoint[0]) / input.shape[2],\n (prediction.box.endPoint[1] - prediction.box.startPoint[1]) / input.shape[1],\n ] : [];\n results.push({\n confidence: prediction.faceConfidence || prediction.boxConfidence || 0,\n boxConfidence: prediction.boxConfidence,\n faceConfidence: prediction.faceConfidence,\n box,\n boxRaw,\n mesh,\n meshRaw,\n annotations,\n image: prediction.image ? prediction.image.clone() : null,\n });\n if (prediction.coords) prediction.coords.dispose();\n if (prediction.image) prediction.image.dispose();\n }\n return results;\n }\n}\n\nlet faceModels = [null, null, null];\nexport async function load(config) {\n // @ts-ignore\n faceModels = await Promise.all([\n (!faceModels[0] && config.face.enabled) ? blazeface.load(config) : null,\n (!faceModels[1] && config.face.mesh.enabled) ? tf.loadGraphModel(config.face.mesh.modelPath, { fromTFHub: config.face.mesh.modelPath.includes('tfhub.dev') }) : null,\n (!faceModels[2] && config.face.iris.enabled) ? tf.loadGraphModel(config.face.iris.modelPath, { fromTFHub: config.face.iris.modelPath.includes('tfhub.dev') }) : null,\n ]);\n const faceMesh = new MediaPipeFaceMesh(faceModels[0], faceModels[1], faceModels[2], config);\n if (config.face.mesh.enabled && config.debug) log(`load model: ${config.face.mesh.modelPath.match(/\\/(.*)\\./)[1]}`);\n if (config.face.iris.enabled && config.debug) log(`load model: ${config.face.iris.modelPath.match(/\\/(.*)\\./)[1]}`);\n return faceMesh;\n}\n\nexports.triangulation = coords.TRI468;\n", "export const partNames = [\n 'nose', 'leftEye', 'rightEye', 'leftEar', 'rightEar', 'leftShoulder',\n 'rightShoulder', 'leftElbow', 'rightElbow', 'leftWrist', 'rightWrist',\n 'leftHip', 'rightHip', 'leftKnee', 'rightKnee', 'leftAnkle', 'rightAnkle',\n];\n\nexport const NUM_KEYPOINTS = exports.partNames.length; // 17 keypoints\n\nexport const partIds = exports.partNames.reduce((result, jointName, i) => {\n result[jointName] = i;\n return result;\n}, {});\n\nconst connectedPartNames = [\n ['leftHip', 'leftShoulder'], ['leftElbow', 'leftShoulder'],\n ['leftElbow', 'leftWrist'], ['leftHip', 'leftKnee'],\n ['leftKnee', 'leftAnkle'], ['rightHip', 'rightShoulder'],\n ['rightElbow', 'rightShoulder'], ['rightElbow', 'rightWrist'],\n ['rightHip', 'rightKnee'], ['rightKnee', 'rightAnkle'],\n ['leftShoulder', 'rightShoulder'], ['leftHip', 'rightHip'],\n];\nexport const connectedPartIndices = connectedPartNames.map(([jointNameA, jointNameB]) => ([partIds[jointNameA], partIds[jointNameB]]));\n\nexport const poseChain = [\n ['nose', 'leftEye'], ['leftEye', 'leftEar'], ['nose', 'rightEye'],\n ['rightEye', 'rightEar'], ['nose', 'leftShoulder'],\n ['leftShoulder', 'leftElbow'], ['leftElbow', 'leftWrist'],\n ['leftShoulder', 'leftHip'], ['leftHip', 'leftKnee'],\n ['leftKnee', 'leftAnkle'], ['nose', 'rightShoulder'],\n ['rightShoulder', 'rightElbow'], ['rightElbow', 'rightWrist'],\n ['rightShoulder', 'rightHip'], ['rightHip', 'rightKnee'],\n ['rightKnee', 'rightAnkle'],\n];\n\nexport const partChannels = [\n 'left_face',\n 'right_face',\n 'right_upper_leg_front',\n 'right_lower_leg_back',\n 'right_upper_leg_back',\n 'left_lower_leg_front',\n 'left_upper_leg_front',\n 'left_upper_leg_back',\n 'left_lower_leg_back',\n 'right_feet',\n 'right_lower_leg_front',\n 'left_feet',\n 'torso_front',\n 'torso_back',\n 'right_upper_arm_front',\n 'right_upper_arm_back',\n 'right_lower_arm_back',\n 'left_lower_arm_front',\n 'left_upper_arm_front',\n 'left_upper_arm_back',\n 'left_lower_arm_back',\n 'right_hand',\n 'right_lower_arm_front',\n 'left_hand',\n];\n", "// helper function: wrapper around console output\nexport function log(...msg) {\n const dt = new Date();\n const ts = `${dt.getHours().toString().padStart(2, '0')}:${dt.getMinutes().toString().padStart(2, '0')}:${dt.getSeconds().toString().padStart(2, '0')}.${dt.getMilliseconds().toString().padStart(3, '0')}`;\n // eslint-disable-next-line no-console\n if (msg) console.log(ts, 'Human:', ...msg);\n}\n\n// helper function: gets elapsed time on both browser and nodejs\nexport const now = () => {\n if (typeof performance !== 'undefined') return performance.now();\n return parseInt((Number(process.hrtime.bigint()) / 1000 / 1000).toString());\n};\n\n// helper function: perform deep merge of multiple objects so it allows full inheriance with overrides\nexport function mergeDeep(...objects) {\n const isObject = (obj) => obj && typeof obj === 'object';\n return objects.reduce((prev, obj) => {\n Object.keys(obj || {}).forEach((key) => {\n const pVal = prev[key];\n const oVal = obj[key];\n if (Array.isArray(pVal) && Array.isArray(oVal)) prev[key] = pVal.concat(...oVal);\n else if (isObject(pVal) && isObject(oVal)) prev[key] = mergeDeep(pVal, oVal);\n else prev[key] = oVal;\n });\n return prev;\n }, {});\n}\n", "export function info(): { platform: string, agent: string } {\n let platform;\n let agent;\n if (typeof navigator !== 'undefined') {\n const raw = navigator.userAgent.match(/\\(([^()]+)\\)/g);\n if (raw && raw[0]) {\n // @ts-ignore\n platform = raw[0].match(/\\(([^()]+)\\)/g)[0].replace(/\\(|\\)/g, '');\n agent = navigator.userAgent.replace(raw[0], '');\n if (platform[1]) agent = agent.replace(raw[1], '');\n agent = agent.replace(/ /g, ' ');\n }\n } else if (typeof process !== 'undefined') {\n platform = `${process.platform} ${process.arch}`;\n agent = `NodeJS ${process.version}`;\n }\n return { platform, agent };\n}\n", "import { log, now, mergeDeep } from './helpers';\nimport * as sysinfo from './sysinfo';\nimport * as tf from '../dist/tfjs.esm.js';\nimport * as backend from './tfjs/backend';\nimport * as faceall from './faceall';\nimport * as facemesh from './blazeface/facemesh';\nimport * as age from './age/age';\nimport * as gender from './gender/gender';\nimport * as faceres from './faceres/faceres';\nimport * as emotion from './emotion/emotion';\nimport * as embedding from './embedding/embedding';\nimport * as posenet from './posenet/posenet';\nimport * as handpose from './handpose/handpose';\nimport * as blazepose from './blazepose/blazepose';\nimport * as nanodet from './nanodet/nanodet';\nimport * as gesture from './gesture/gesture';\nimport * as image from './image/image';\nimport * as draw from './draw/draw';\nimport * as profile from './profile';\nimport { Config, defaults } from './config';\nimport { Result } from './result';\nimport * as sample from './sample';\nimport * as app from '../package.json';\n\n/** Generic Tensor object type */\nexport type Tensor = typeof tf.Tensor;\nexport type { Config } from './config';\nexport type { Result } from './result';\n/** Defines all possible input types for **Human** detection */\nexport type Input = Tensor | ImageData | ImageBitmap | HTMLVideoElement | HTMLCanvasElement | OffscreenCanvas;\n/** Error message */\nexport type Error = { error: string };\n/** Instance of TensorFlow/JS */\nexport type TensorFlow = typeof tf;\n/** Generic Model object type, holds instance of individual models */\ntype Model = Object;\n\n/**\n * **Human** library main class\n *\n * All methods and properties are available only as members of Human class\n *\n * - Configuration object definition: {@link Config}\n * - Results object definition: {@link Result}\n * - Possible inputs: {@link Input}\n */\nexport class Human {\n version: string;\n config: Config;\n state: string;\n image: { tensor: Tensor, canvas: OffscreenCanvas | HTMLCanvasElement };\n // classes\n tf: TensorFlow;\n draw: {\n drawOptions?: typeof draw.drawOptions,\n gesture: typeof draw.gesture,\n face: typeof draw.face,\n body: typeof draw.body,\n hand: typeof draw.hand,\n canvas: typeof draw.canvas,\n all: typeof draw.all,\n };\n // models\n models: {\n face: facemesh.MediaPipeFaceMesh | null,\n posenet: posenet.PoseNet | null,\n blazepose: Model | null,\n handpose: handpose.HandPose | null,\n iris: Model | null,\n age: Model | null,\n gender: Model | null,\n emotion: Model | null,\n embedding: Model | null,\n nanodet: Model | null,\n faceres: Model | null,\n };\n classes: {\n facemesh: typeof facemesh;\n age: typeof age;\n gender: typeof gender;\n emotion: typeof emotion;\n body: typeof posenet | typeof blazepose;\n hand: typeof handpose;\n nanodet: typeof nanodet;\n faceres: typeof faceres;\n };\n sysinfo: { platform: string, agent: string };\n perf: any;\n #numTensors: number;\n #analyzeMemoryLeaks: boolean;\n #checkSanity: boolean;\n #firstRun: boolean;\n // definition end\n\n constructor(userConfig: Config | Object = {}) {\n this.tf = tf;\n this.draw = draw;\n this.version = app.version;\n this.config = mergeDeep(defaults, userConfig);\n this.state = 'idle';\n this.#numTensors = 0;\n this.#analyzeMemoryLeaks = false;\n this.#checkSanity = false;\n this.#firstRun = true;\n this.perf = {};\n // object that contains all initialized models\n this.models = {\n face: null,\n posenet: null,\n blazepose: null,\n handpose: null,\n iris: null,\n age: null,\n gender: null,\n emotion: null,\n embedding: null,\n nanodet: null,\n faceres: null,\n };\n // export access to image processing\n // @ts-ignore\n this.image = (input: Input) => image.process(input, this.config);\n // export raw access to underlying models\n this.classes = {\n facemesh,\n age,\n gender,\n emotion,\n faceres,\n body: this.config.body.modelPath.includes('posenet') ? posenet : blazepose,\n hand: handpose,\n nanodet,\n };\n // include platform info\n this.sysinfo = sysinfo.info();\n }\n\n profileData(): { newBytes, newTensors, peakBytes, numKernelOps, timeKernelOps, slowestKernelOps, largestKernelOps } | {} {\n if (this.config.profile) return profile.data;\n return {};\n }\n\n // helper function: measure tensor leak\n /** @hidden */\n analyze = (...msg) => {\n if (!this.#analyzeMemoryLeaks) return;\n const current = this.tf.engine().state.numTensors;\n const previous = this.#numTensors;\n this.#numTensors = current;\n const leaked = current - previous;\n if (leaked !== 0) log(...msg, leaked);\n }\n\n // quick sanity check on inputs\n /** @hidden */\n #sanity = (input): null | string => {\n if (!this.#checkSanity) return null;\n if (!input) return 'input is not defined';\n if (this.tf.ENV.flags.IS_NODE && !(input instanceof tf.Tensor)) return 'input must be a tensor';\n try {\n this.tf.getBackend();\n } catch {\n return 'backend not loaded';\n }\n return null;\n }\n\n similarity(embedding1: Array, embedding2: Array): number {\n if (this.config.face.description.enabled) return faceres.similarity(embedding1, embedding2);\n if (this.config.face.embedding.enabled) return embedding.similarity(embedding1, embedding2);\n return 0;\n }\n\n // eslint-disable-next-line class-methods-use-this\n enhance(input: Tensor): Tensor | null {\n return faceres.enhance(input);\n }\n\n // eslint-disable-next-line class-methods-use-this\n match(faceEmbedding: Array, db: Array<{ name: string, source: string, embedding: number[] }>, threshold = 0): { name: string, source: string, similarity: number, embedding: number[] } {\n return faceres.match(faceEmbedding, db, threshold);\n }\n\n // preload models, not explicitly required as it's done automatically on first use\n async load(userConfig: Config | Object = {}) {\n this.state = 'load';\n const timeStamp = now();\n if (userConfig) this.config = mergeDeep(this.config, userConfig);\n\n if (this.#firstRun) {\n if (this.config.debug) log(`version: ${this.version}`);\n if (this.config.debug) log(`tfjs version: ${this.tf.version_core}`);\n if (this.config.debug) log('platform:', this.sysinfo.platform);\n if (this.config.debug) log('agent:', this.sysinfo.agent);\n\n await this.#checkBackend(true);\n if (this.tf.ENV.flags.IS_BROWSER) {\n if (this.config.debug) log('configuration:', this.config);\n if (this.config.debug) log('tf flags:', this.tf.ENV.flags);\n }\n }\n if (this.config.async) {\n [\n this.models.face,\n this.models.age,\n this.models.gender,\n this.models.emotion,\n this.models.embedding,\n this.models.handpose,\n this.models.posenet,\n this.models.blazepose,\n this.models.nanodet,\n this.models.faceres,\n ] = await Promise.all([\n this.models.face || (this.config.face.enabled ? facemesh.load(this.config) : null),\n this.models.age || ((this.config.face.enabled && this.config.face.age.enabled) ? age.load(this.config) : null),\n this.models.gender || ((this.config.face.enabled && this.config.face.gender.enabled) ? gender.load(this.config) : null),\n this.models.emotion || ((this.config.face.enabled && this.config.face.emotion.enabled) ? emotion.load(this.config) : null),\n this.models.embedding || ((this.config.face.enabled && this.config.face.embedding.enabled) ? embedding.load(this.config) : null),\n this.models.handpose || (this.config.hand.enabled ? handpose.load(this.config) : null),\n this.models.posenet || (this.config.body.enabled && this.config.body.modelPath.includes('posenet') ? posenet.load(this.config) : null),\n this.models.posenet || (this.config.body.enabled && this.config.body.modelPath.includes('blazepose') ? blazepose.load(this.config) : null),\n this.models.nanodet || (this.config.object.enabled ? nanodet.load(this.config) : null),\n this.models.faceres || ((this.config.face.enabled && this.config.face.description.enabled) ? faceres.load(this.config) : null),\n ]);\n } else {\n if (this.config.face.enabled && !this.models.face) this.models.face = await facemesh.load(this.config);\n if (this.config.face.enabled && this.config.face.age.enabled && !this.models.age) this.models.age = await age.load(this.config);\n if (this.config.face.enabled && this.config.face.gender.enabled && !this.models.gender) this.models.gender = await gender.load(this.config);\n if (this.config.face.enabled && this.config.face.emotion.enabled && !this.models.emotion) this.models.emotion = await emotion.load(this.config);\n if (this.config.face.enabled && this.config.face.embedding.enabled && !this.models.embedding) this.models.embedding = await embedding.load(this.config);\n if (this.config.hand.enabled && !this.models.handpose) this.models.handpose = await handpose.load(this.config);\n if (this.config.body.enabled && !this.models.posenet && this.config.body.modelPath.includes('posenet')) this.models.posenet = await posenet.load(this.config);\n if (this.config.body.enabled && !this.models.blazepose && this.config.body.modelPath.includes('blazepose')) this.models.blazepose = await blazepose.load(this.config);\n if (this.config.object.enabled && !this.models.nanodet) this.models.nanodet = await nanodet.load(this.config);\n if (this.config.face.enabled && this.config.face.description.enabled && !this.models.faceres) this.models.faceres = await faceres.load(this.config);\n }\n\n if (this.#firstRun) {\n if (this.config.debug) log('tf engine state:', this.tf.engine().state.numBytes, 'bytes', this.tf.engine().state.numTensors, 'tensors');\n this.#firstRun = false;\n }\n\n const current = Math.trunc(now() - timeStamp);\n if (current > (this.perf.load || 0)) this.perf.load = current;\n }\n\n // check if backend needs initialization if it changed\n /** @hidden */\n #checkBackend = async (force = false) => {\n if (this.config.backend && (this.config.backend !== '') && force || (this.tf.getBackend() !== this.config.backend)) {\n const timeStamp = now();\n this.state = 'backend';\n /* force backend reload\n if (this.config.backend in tf.engine().registry) {\n const backendFactory = tf.findBackendFactory(this.config.backend);\n tf.removeBackend(this.config.backend);\n tf.registerBackend(this.config.backend, backendFactory);\n } else {\n log('Backend not registred:', this.config.backend);\n }\n */\n\n if (this.config.backend && this.config.backend !== '') {\n if (this.tf.ENV.flags.IS_BROWSER && this.config.backend === 'tensorflow') this.config.backend = 'webgl';\n if (this.tf.ENV.flags.IS_NODE && (this.config.backend === 'webgl' || this.config.backend === 'wasm')) this.config.backend = 'tensorflow';\n if (this.config.debug) log('setting backend:', this.config.backend);\n\n if (this.config.backend === 'wasm') {\n if (this.config.debug) log('wasm path:', this.config.wasmPath);\n this.tf.setWasmPaths(this.config.wasmPath);\n const simd = await this.tf.env().getAsync('WASM_HAS_SIMD_SUPPORT');\n const mt = await this.tf.env().getAsync('WASM_HAS_MULTITHREAD_SUPPORT');\n if (this.config.debug) log(`wasm execution: ${simd ? 'SIMD' : 'no SIMD'} ${mt ? 'multithreaded' : 'singlethreaded'}`);\n if (!simd) log('warning: wasm simd support is not enabled');\n }\n\n if (this.config.backend === 'humangl') backend.register();\n try {\n await this.tf.setBackend(this.config.backend);\n } catch (err) {\n log('error: cannot set backend:', this.config.backend, err);\n }\n }\n this.tf.enableProdMode();\n /* debug mode is really too mcuh\n tf.enableDebugMode();\n */\n if (this.tf.getBackend() === 'webgl') {\n if (this.config.deallocate) {\n log('changing webgl: WEBGL_DELETE_TEXTURE_THRESHOLD:', this.config.deallocate);\n this.tf.ENV.set('WEBGL_DELETE_TEXTURE_THRESHOLD', this.config.deallocate ? 0 : -1);\n }\n // this.tf.ENV.set('WEBGL_FORCE_F16_TEXTURES', true);\n // this.tf.ENV.set('WEBGL_PACK_DEPTHWISECONV', true);\n const gl = await this.tf.backend().getGPGPUContext().gl;\n if (this.config.debug) log(`gl version:${gl.getParameter(gl.VERSION)} renderer:${gl.getParameter(gl.RENDERER)}`);\n }\n await this.tf.ready();\n this.perf.backend = Math.trunc(now() - timeStamp);\n }\n }\n\n // main detect function\n async detect(input: Input, userConfig: Config | Object = {}): Promise {\n // detection happens inside a promise\n return new Promise(async (resolve) => {\n this.state = 'config';\n let timeStamp;\n\n // update configuration\n this.config = mergeDeep(this.config, userConfig);\n\n // sanity checks\n this.state = 'check';\n const error = this.#sanity(input);\n if (error) {\n log(error, input);\n resolve({ error });\n }\n\n const timeStart = now();\n\n // configure backend\n await this.#checkBackend();\n\n // load models if enabled\n await this.load();\n\n if (this.config.scoped) this.tf.engine().startScope();\n this.analyze('Start Scope:');\n\n timeStamp = now();\n const process = image.process(input, this.config);\n if (!process || !process.tensor) {\n log('could not convert input to tensor');\n resolve({ error: 'could not convert input to tensor' });\n return;\n }\n this.perf.image = Math.trunc(now() - timeStamp);\n this.analyze('Get Image:');\n\n // prepare where to store model results\n let bodyRes;\n let handRes;\n let faceRes;\n let objectRes;\n let current;\n\n // run face detection followed by all models that rely on face bounding box: face mesh, age, gender, emotion\n if (this.config.async) {\n faceRes = this.config.face.enabled ? faceall.detectFace(this, process.tensor) : [];\n if (this.perf.face) delete this.perf.face;\n } else {\n this.state = 'run:face';\n timeStamp = now();\n faceRes = this.config.face.enabled ? await faceall.detectFace(this, process.tensor) : [];\n current = Math.trunc(now() - timeStamp);\n if (current > 0) this.perf.face = current;\n }\n\n // run body: can be posenet or blazepose\n this.analyze('Start Body:');\n if (this.config.async) {\n if (this.config.body.modelPath.includes('posenet')) bodyRes = this.config.body.enabled ? this.models.posenet?.estimatePoses(process.tensor, this.config) : [];\n else bodyRes = this.config.body.enabled ? blazepose.predict(process.tensor, this.config) : [];\n if (this.perf.body) delete this.perf.body;\n } else {\n this.state = 'run:body';\n timeStamp = now();\n if (this.config.body.modelPath.includes('posenet')) bodyRes = this.config.body.enabled ? await this.models.posenet?.estimatePoses(process.tensor, this.config) : [];\n else bodyRes = this.config.body.enabled ? await blazepose.predict(process.tensor, this.config) : [];\n current = Math.trunc(now() - timeStamp);\n if (current > 0) this.perf.body = current;\n }\n this.analyze('End Body:');\n\n // run handpose\n this.analyze('Start Hand:');\n if (this.config.async) {\n handRes = this.config.hand.enabled ? this.models.handpose?.estimateHands(process.tensor, this.config) : [];\n if (this.perf.hand) delete this.perf.hand;\n } else {\n this.state = 'run:hand';\n timeStamp = now();\n handRes = this.config.hand.enabled ? await this.models.handpose?.estimateHands(process.tensor, this.config) : [];\n current = Math.trunc(now() - timeStamp);\n if (current > 0) this.perf.hand = current;\n }\n this.analyze('End Hand:');\n\n // run nanodet\n this.analyze('Start Object:');\n if (this.config.async) {\n objectRes = this.config.object.enabled ? nanodet.predict(process.tensor, this.config) : [];\n if (this.perf.object) delete this.perf.object;\n } else {\n this.state = 'run:object';\n timeStamp = now();\n objectRes = this.config.object.enabled ? await nanodet.predict(process.tensor, this.config) : [];\n current = Math.trunc(now() - timeStamp);\n if (current > 0) this.perf.object = current;\n }\n this.analyze('End Object:');\n\n // if async wait for results\n if (this.config.async) {\n [faceRes, bodyRes, handRes, objectRes] = await Promise.all([faceRes, bodyRes, handRes, objectRes]);\n }\n process.tensor.dispose();\n\n if (this.config.scoped) this.tf.engine().endScope();\n this.analyze('End Scope:');\n\n let gestureRes = [];\n if (this.config.gesture.enabled) {\n timeStamp = now();\n // @ts-ignore\n gestureRes = [...gesture.face(faceRes), ...gesture.body(bodyRes), ...gesture.hand(handRes), ...gesture.iris(faceRes)];\n if (!this.config.async) this.perf.gesture = Math.trunc(now() - timeStamp);\n else if (this.perf.gesture) delete this.perf.gesture;\n }\n\n this.perf.total = Math.trunc(now() - timeStart);\n this.state = 'idle';\n const result = {\n face: faceRes,\n body: bodyRes,\n hand: handRes,\n gesture: gestureRes,\n object: objectRes,\n performance: this.perf,\n canvas: process.canvas,\n };\n // log('Result:', result);\n resolve(result);\n });\n }\n\n /** @hidden */\n #warmupBitmap = async () => {\n const b64toBlob = (base64, type = 'application/octet-stream') => fetch(`data:${type};base64,${base64}`).then((res) => res.blob());\n let blob;\n let res;\n switch (this.config.warmup) {\n case 'face': blob = await b64toBlob(sample.face); break;\n case 'full': blob = await b64toBlob(sample.body); break;\n default: blob = null;\n }\n if (blob) {\n const bitmap = await createImageBitmap(blob);\n res = await this.detect(bitmap, this.config);\n bitmap.close();\n }\n return res;\n }\n\n /** @hidden */\n #warmupCanvas = async () => new Promise((resolve) => {\n let src;\n let size = 0;\n switch (this.config.warmup) {\n case 'face':\n size = 256;\n src = 'data:image/jpeg;base64,' + sample.face;\n break;\n case 'full':\n case 'body':\n size = 1200;\n src = 'data:image/jpeg;base64,' + sample.body;\n break;\n default:\n src = null;\n }\n // src = encodeURI('../assets/human-sample-upper.jpg');\n const img = new Image();\n img.onload = async () => {\n const canvas = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(size, size) : document.createElement('canvas');\n canvas.width = img.naturalWidth;\n canvas.height = img.naturalHeight;\n const ctx = canvas.getContext('2d');\n ctx?.drawImage(img, 0, 0);\n // const data = ctx?.getImageData(0, 0, canvas.height, canvas.width);\n const res = await this.detect(canvas, this.config);\n resolve(res);\n };\n if (src) img.src = src;\n else resolve(null);\n });\n\n /** @hidden */\n #warmupNode = async () => {\n const atob = (str) => Buffer.from(str, 'base64');\n const img = this.config.warmup === 'face' ? atob(sample.face) : atob(sample.body);\n // @ts-ignore\n const data = tf.node.decodeJpeg(img); // tf.node is only defined when compiling for nodejs\n const expanded = data.expandDims(0);\n this.tf.dispose(data);\n // log('Input:', expanded);\n const res = await this.detect(expanded, this.config);\n this.tf.dispose(expanded);\n return res;\n }\n\n async warmup(userConfig: Config | Object = {}): Promise {\n const t0 = now();\n if (userConfig) this.config = mergeDeep(this.config, userConfig);\n const save = this.config.videoOptimized;\n this.config.videoOptimized = false;\n let res;\n if (typeof createImageBitmap === 'function') res = await this.#warmupBitmap();\n else if (typeof Image !== 'undefined') res = await this.#warmupCanvas();\n else res = await this.#warmupNode();\n this.config.videoOptimized = save;\n const t1 = now();\n if (this.config.debug) log('Warmup', this.config.warmup, Math.round(t1 - t0), 'ms', res);\n return res;\n }\n}\n\n/**\n * Class Human is also available as default export\n */\nexport { Human as default };\n", "import { log } from '../helpers';\nimport * as tf from '../../dist/tfjs.esm.js';\n\nexport const config = {\n name: 'humangl',\n priority: 99,\n canvas: null,\n gl: null,\n width: 1024,\n height: 1024,\n webGLattr: { // https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.2\n alpha: false,\n antialias: false,\n premultipliedAlpha: false,\n preserveDrawingBuffer: false,\n depth: false,\n stencil: false,\n failIfMajorPerformanceCaveat: false,\n desynchronized: true,\n },\n};\n\nexport function register(): void {\n if (!tf.findBackend(config.name)) {\n log('backend registration:', config.name);\n try {\n // @ts-ignore\n config.canvas = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(config.width, config.height) : document.createElement('canvas');\n } catch (err) {\n log('error: cannot create canvas:', err);\n return;\n }\n try {\n // @ts-ignore\n config.gl = config.canvas.getContext('webgl2', config.webGLattr);\n } catch (err) {\n log('error: cannot get WebGL2 context:', err);\n return;\n }\n try {\n tf.setWebGLContext(2, config.gl);\n } catch (err) {\n log('error: cannot set WebGL2 context:', err);\n return;\n }\n try {\n const ctx = new tf.GPGPUContext(config.gl);\n tf.registerBackend(config.name, () => new tf.MathBackendWebGL(ctx), config.priority);\n } catch (err) {\n log('error: cannot register WebGL backend:', err);\n return;\n }\n try {\n const kernels = tf.getKernelsForBackend('webgl');\n kernels.forEach((kernelConfig) => {\n const newKernelConfig = { ...kernelConfig, backendName: config.name };\n tf.registerKernel(newKernelConfig);\n });\n } catch (err) {\n log('error: cannot update WebGL backend registration:', err);\n return;\n }\n try {\n tf.ENV.set('WEBGL_VERSION', 2);\n // @ts-ignore\n // tf.ENV.set('WEBGL_MAX_TEXTURE_SIZE', config.gl.getParameter(config.gl.MAX_TEXTURE_SIZE));\n // tf.ENV.set('WEBGL_FORCE_F16_TEXTURES', true);\n // tf.ENV.set('WEBGL_PACK_DEPTHWISECONV', true);\n } catch (err) {\n log('error: cannot set WebGL backend flags:', err);\n return;\n }\n log('backend registered:', config.name);\n }\n}\n", "import { log } from '../helpers';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile';\n\nlet model;\nlet last = { age: 0 };\nlet skipped = Number.MAX_SAFE_INTEGER;\n\nexport async function load(config) {\n if (!model) {\n model = await tf.loadGraphModel(config.face.age.modelPath);\n if (config.debug) log(`load model: ${config.face.age.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return model;\n}\n\nexport async function predict(image, config) {\n if (!model) return null;\n if ((skipped < config.face.age.skipFrames) && config.videoOptimized && last.age && (last.age > 0)) {\n skipped++;\n return last;\n }\n if (config.videoOptimized) skipped = 0;\n else skipped = Number.MAX_SAFE_INTEGER;\n return new Promise(async (resolve) => {\n const resize = tf.image.resizeBilinear(image, [model.inputs[0].shape[2], model.inputs[0].shape[1]], false);\n const enhance = tf.mul(resize, [255.0]);\n tf.dispose(resize);\n\n let ageT;\n const obj = { age: 0 };\n\n if (!config.profile) {\n if (config.face.age.enabled) ageT = await model.predict(enhance);\n } else {\n const profileAge = config.face.age.enabled ? await tf.profile(() => model.predict(enhance)) : {};\n ageT = profileAge.result.clone();\n profileAge.result.dispose();\n profile.run('age', profileAge);\n }\n enhance.dispose();\n\n if (ageT) {\n const data = ageT.dataSync();\n obj.age = Math.trunc(10 * data[0]) / 10;\n }\n ageT.dispose();\n\n last = obj;\n resolve(obj);\n });\n}\n", "import { log } from './helpers';\n\nexport const data = {};\n\nexport function run(name: string, raw: any): void {\n if (!raw || !raw.kernels) return;\n const maxResults = 5;\n const time = raw.kernels\n .filter((a) => a.kernelTimeMs > 0)\n .reduce((a, b) => a += b.kernelTimeMs, 0);\n const slowest = raw.kernels\n .map((a, i) => { a.id = i; return a; })\n .filter((a) => a.kernelTimeMs > 0)\n .sort((a, b) => b.kernelTimeMs - a.kernelTimeMs);\n const largest = raw.kernels\n .map((a, i) => { a.id = i; return a; })\n .filter((a) => a.totalBytesSnapshot > 0)\n .sort((a, b) => b.totalBytesSnapshot - a.totalBytesSnapshot);\n if (slowest.length > maxResults) slowest.length = maxResults;\n if (largest.length > maxResults) largest.length = maxResults;\n const res = { newBytes: raw.newBytes, newTensors: raw.newTensors, peakBytes: raw.peakBytes, numKernelOps: raw.kernels.length, timeKernelOps: time, slowestKernelOps: slowest, largestKernelOps: largest };\n data[name] = res;\n log('Human profiler', name, res);\n}\n", "import { log } from '../helpers';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile';\n\nlet model;\nlet last = { gender: '' };\nlet skipped = Number.MAX_SAFE_INTEGER;\nlet alternative = false;\n\n// tuning values\nconst rgb = [0.2989, 0.5870, 0.1140]; // factors for red/green/blue colors when converting to grayscale\n\nexport async function load(config) {\n if (!model) {\n model = await tf.loadGraphModel(config.face.gender.modelPath);\n alternative = model.inputs[0].shape[3] === 1;\n if (config.debug) log(`load model: ${config.face.gender.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return model;\n}\n\nexport async function predict(image, config) {\n if (!model) return null;\n if ((skipped < config.face.gender.skipFrames) && config.videoOptimized && last.gender !== '') {\n skipped++;\n return last;\n }\n if (config.videoOptimized) skipped = 0;\n else skipped = Number.MAX_SAFE_INTEGER;\n return new Promise(async (resolve) => {\n const resize = tf.image.resizeBilinear(image, [model.inputs[0].shape[2], model.inputs[0].shape[1]], false);\n let enhance;\n if (alternative) {\n enhance = tf.tidy(() => {\n const [red, green, blue] = tf.split(resize, 3, 3);\n const redNorm = tf.mul(red, rgb[0]);\n const greenNorm = tf.mul(green, rgb[1]);\n const blueNorm = tf.mul(blue, rgb[2]);\n const grayscale = tf.addN([redNorm, greenNorm, blueNorm]);\n const normalize = grayscale.sub(0.5).mul(2); // range grayscale:-1..1\n return normalize;\n });\n } else {\n enhance = tf.mul(resize, [255.0]); // range RGB:0..255\n }\n tf.dispose(resize);\n\n let genderT;\n const obj = { gender: '', confidence: 0 };\n\n if (!config.profile) {\n if (config.face.gender.enabled) genderT = await model.predict(enhance);\n } else {\n const profileGender = config.face.gender.enabled ? await tf.profile(() => model.predict(enhance)) : {};\n genderT = profileGender.result.clone();\n profileGender.result.dispose();\n profile.run('gender', profileGender);\n }\n enhance.dispose();\n\n if (genderT) {\n if (!Array.isArray(genderT)) {\n const data = genderT.dataSync();\n if (alternative) {\n // returns two values 0..1, bigger one is prediction\n if (data[0] > config.face.gender.minConfidence || data[1] > config.face.gender.minConfidence) {\n obj.gender = data[0] > data[1] ? 'female' : 'male';\n obj.confidence = data[0] > data[1] ? (Math.trunc(100 * data[0]) / 100) : (Math.trunc(100 * data[1]) / 100);\n }\n } else {\n // returns one value 0..1, .5 is prediction threshold\n const confidence = Math.trunc(200 * Math.abs((data[0] - 0.5))) / 100;\n if (confidence > config.face.gender.minConfidence) {\n obj.gender = data[0] <= 0.5 ? 'female' : 'male';\n obj.confidence = Math.min(0.99, confidence);\n }\n }\n genderT.dispose();\n } else {\n const gender = genderT[0].dataSync();\n const confidence = Math.trunc(200 * Math.abs((gender[0] - 0.5))) / 100;\n if (confidence > config.face.gender.minConfidence) {\n obj.gender = gender[0] <= 0.5 ? 'female' : 'male';\n obj.confidence = Math.min(0.99, confidence);\n }\n /*\n let age = genderT[1].argMax(1).dataSync()[0];\n const all = genderT[1].dataSync();\n age = Math.round(all[age - 1] > all[age + 1] ? 10 * age - 100 * all[age - 1] : 10 * age + 100 * all[age + 1]) / 10;\n const descriptor = genderT[1].dataSync();\n */\n genderT.forEach((t) => tf.dispose(t));\n }\n }\n last = obj;\n resolve(obj);\n });\n}\n", "import { log } from '../helpers';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile';\n\nconst annotations = ['angry', 'disgust', 'fear', 'happy', 'sad', 'surprise', 'neutral'];\nlet model;\nlet last: Array<{ score: number, emotion: string }> = [];\nlet skipped = Number.MAX_SAFE_INTEGER;\n\n// tuning values\nconst rgb = [0.2989, 0.5870, 0.1140]; // factors for red/green/blue colors when converting to grayscale\n\nexport async function load(config) {\n if (!model) {\n model = await tf.loadGraphModel(config.face.emotion.modelPath);\n if (config.debug) log(`load model: ${config.face.emotion.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return model;\n}\n\nexport async function predict(image, config) {\n if (!model) return null;\n if ((skipped < config.face.emotion.skipFrames) && config.videoOptimized && (last.length > 0)) {\n skipped++;\n return last;\n }\n if (config.videoOptimized) skipped = 0;\n else skipped = Number.MAX_SAFE_INTEGER;\n return new Promise(async (resolve) => {\n const resize = tf.image.resizeBilinear(image, [model.inputs[0].shape[2], model.inputs[0].shape[1]], false);\n const [red, green, blue] = tf.split(resize, 3, 3);\n resize.dispose();\n // weighted rgb to grayscale: https://www.mathworks.com/help/matlab/ref/rgb2gray.html\n const redNorm = tf.mul(red, rgb[0]);\n const greenNorm = tf.mul(green, rgb[1]);\n const blueNorm = tf.mul(blue, rgb[2]);\n red.dispose();\n green.dispose();\n blue.dispose();\n const grayscale = tf.addN([redNorm, greenNorm, blueNorm]);\n redNorm.dispose();\n greenNorm.dispose();\n blueNorm.dispose();\n const normalize = tf.tidy(() => grayscale.sub(0.5).mul(2));\n grayscale.dispose();\n const obj: Array<{ score: number, emotion: string }> = [];\n if (config.face.emotion.enabled) {\n let data;\n if (!config.profile) {\n const emotionT = await model.predict(normalize); // result is already in range 0..1, no need for additional activation\n data = emotionT.dataSync();\n tf.dispose(emotionT);\n } else {\n const profileData = await tf.profile(() => model.predict(normalize));\n data = profileData.result.dataSync();\n profileData.result.dispose();\n profile.run('emotion', profileData);\n }\n for (let i = 0; i < data.length; i++) {\n if (data[i] > config.face.emotion.minConfidence) obj.push({ score: Math.min(0.99, Math.trunc(100 * data[i]) / 100), emotion: annotations[i] });\n }\n obj.sort((a, b) => b.score - a.score);\n }\n normalize.dispose();\n last = obj;\n resolve(obj);\n });\n}\n", "import { log } from '../helpers';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile';\n\ntype Tensor = typeof tf.Tensor;\ntype DB = Array<{ name: string, source: string, embedding: number[] }>;\nlet model;\n\nexport async function load(config) {\n if (!model) {\n model = await tf.loadGraphModel(config.face.embedding.modelPath);\n if (config.debug) log(`load model: ${config.face.embedding.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return model;\n}\n\nexport function similarity(embedding1, embedding2, order = 2): number {\n if (!embedding1 || !embedding2) return 0;\n if (embedding1?.length === 0 || embedding2?.length === 0) return 0;\n if (embedding1?.length !== embedding2?.length) return 0;\n // general minkowski distance, euclidean distance is limited case where order is 2\n const distance = embedding1\n .map((val, i) => (Math.abs(embedding1[i] - embedding2[i]) ** order)) // distance squared\n .reduce((sum, now) => (sum + now), 0) // sum all distances\n ** (1 / order); // get root of\n const res = Math.max(Math.trunc(1000 * (1 - distance)) / 1000, 0);\n return res;\n}\n\nexport function match(embedding: Array, db: DB, threshold = 0) {\n let best = { similarity: 0, name: '', source: '', embedding: [] as number[] };\n if (!embedding || !db || !Array.isArray(embedding) || !Array.isArray(db)) return best;\n for (const f of db) {\n if (f.embedding && f.name) {\n const perc = similarity(embedding, f.embedding);\n if (perc > threshold && perc > best.similarity) best = { ...f, similarity: perc };\n }\n }\n return best;\n}\n\nexport function enhance(input): Tensor {\n const image = tf.tidy(() => {\n // input received from detector is already normalized to 0..1\n // input is also assumed to be straightened\n // const data = tf.image.resizeBilinear(input, [model.inputs[0].shape[2], model.inputs[0].shape[1]], false); // just resize to fit the embedding model\n // do a tight crop of image and resize it to fit the model\n const box = [[0.05, 0.15, 0.85, 0.85]]; // empyrical values for top, left, bottom, right\n const tensor = input.image || input.tensor;\n if (!(tensor instanceof tf.Tensor)) return null;\n const crop = (tensor.shape.length === 3)\n ? tf.image.cropAndResize(tf.expandDims(tensor, 0), box, [0], [model.inputs[0].shape[2], model.inputs[0].shape[1]]) // add batch dimension if missing\n : tf.image.cropAndResize(tensor, box, [0], [model.inputs[0].shape[2], model.inputs[0].shape[1]]);\n\n // convert to black&white to avoid colorization impact\n const rgb = [0.2989, 0.5870, 0.1140]; // factors for red/green/blue colors when converting to grayscale: https://www.mathworks.com/help/matlab/ref/rgb2gray.html\n const [red, green, blue] = tf.split(crop, 3, 3);\n const redNorm = tf.mul(red, rgb[0]);\n const greenNorm = tf.mul(green, rgb[1]);\n const blueNorm = tf.mul(blue, rgb[2]);\n const grayscale = tf.addN([redNorm, greenNorm, blueNorm]);\n const merge = tf.stack([grayscale, grayscale, grayscale], 3).squeeze(4);\n\n /*\n // optional increase image contrast\n // or do it per-channel so mean is done on each channel\n // or do it based on histogram\n const mean = merge.mean();\n const factor = 5;\n const contrast = merge.sub(mean).mul(factor).add(mean);\n */\n\n // normalize brightness from 0..1\n const darken = merge.sub(merge.min());\n const lighten = darken.div(darken.max());\n\n return lighten;\n });\n return image;\n}\n\nexport async function predict(input, config): Promise {\n if (!model) return [];\n return new Promise(async (resolve) => {\n // let data: Array<[]> = [];\n let data: Array = [];\n if (config.face.embedding.enabled) {\n const image = enhance(input);\n if (!config.profile) {\n data = tf.tidy(() => {\n /*\n // if needed convert from NHWC to NCHW\n const nchw = image.transpose([3, 0, 1, 2]);\n */\n\n const res = model.predict(image);\n\n /*\n // optionally do it twice with flipped image and average results\n const res1 = model.predict(image);\n const flipped = tf.image.flipLeftRight(image);\n const res2 = model.predict(flipped);\n const merge = tf.stack([res1, res2], 2).squeeze();\n const res = reshape.logSumExp(1);\n */\n\n /*\n // optional normalize outputs with l2 normalization\n const scaled = tf.tidy(() => {\n const l2 = res.norm('euclidean');\n const scale = res.div(l2);\n return scale;\n });\n */\n\n // optional reduce feature vector complexity\n const reshape = res.reshape([128, 2]); // split 256 vectors into 128 x 2\n const reduce = reshape.logSumExp(1); // reduce 2nd dimension by calculating logSumExp on it\n\n const output: Array = reduce.dataSync();\n return [...output]; // convert typed array to simple array\n });\n } else {\n const profileData = await tf.profile(() => model.predict({ img_inputs: image }));\n data = [...profileData.result.dataSync()];\n profileData.result.dispose();\n profile.run('emotion', profileData);\n }\n tf.dispose(image);\n }\n resolve(data);\n });\n}\n\n/*\ngit clone https://github.com/becauseofAI/MobileFace\ncd MobileFace/MobileFace_Identification\nmmconvert --srcFramework mxnet --inputWeight MobileFace_Identification_V3-0000.params --inputNetwork MobileFace_Identification_V3-symbol.json --inputShape 3,112,112 --dstFramework tensorflow --outputModel saved\nsaved_model_cli show --dir saved/\ntensorflowjs_converter --input_format tf_saved_model --output_format tfjs_graph_model --saved_model_tags train saved/ graph/\n~/dev/detector/signature.js graph/\n2021-03-12 08:25:12 DATA: created on: 2021-03-12T13:17:11.960Z\n2021-03-12 08:25:12 INFO: graph model: /home/vlado/dev/face/MobileFace/MobileFace_Identification/graph/model.json\n2021-03-12 08:25:12 INFO: size: { unreliable: true, numTensors: 75, numDataBuffers: 75, numBytes: 2183192 }\n2021-03-12 08:25:12 INFO: model inputs based on signature\n2021-03-12 08:25:12 INFO: model outputs based on signature\n2021-03-12 08:25:12 DATA: inputs: [ { name: 'data:0', dtype: 'DT_FLOAT', shape: [ -1, 112, 112, 3, [length]: 4 ] }, [length]: 1 ]\n2021-03-12 08:25:12 DATA: outputs: [ { id: 0, name: 'batchnorm0/add_1:0', dytpe: 'DT_FLOAT', shape: [ -1, 256, [length]: 2 ] }, [length]: 1 ]\n*/\n", "import { log } from '../helpers';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile';\n\nlet model;\nlet last = { age: 0 };\nlet skipped = Number.MAX_SAFE_INTEGER;\n\ntype Tensor = typeof tf.Tensor;\ntype DB = Array<{ name: string, source: string, embedding: number[] }>;\n\nexport async function load(config) {\n if (!model) {\n model = await tf.loadGraphModel(config.face.description.modelPath);\n if (config.debug) log(`load model: ${config.face.description.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return model;\n}\n\nexport function similarity(embedding1, embedding2, order = 2): number {\n if (!embedding1 || !embedding2) return 0;\n if (embedding1?.length === 0 || embedding2?.length === 0) return 0;\n if (embedding1?.length !== embedding2?.length) return 0;\n // general minkowski distance, euclidean distance is limited case where order is 2\n const distance = 4.0 * embedding1\n .map((val, i) => (Math.abs(embedding1[i] - embedding2[i]) ** order)) // distance squared\n .reduce((sum, now) => (sum + now), 0) // sum all distances\n ** (1 / order); // get root of\n const res = Math.max(0, 100 - distance) / 100.0;\n return res;\n}\n\nexport function match(embedding: Array, db: DB, threshold = 0) {\n let best = { similarity: 0, name: '', source: '', embedding: [] as number[] };\n if (!embedding || !db || !Array.isArray(embedding) || !Array.isArray(db)) return best;\n for (const f of db) {\n if (f.embedding && f.name) {\n const perc = similarity(embedding, f.embedding);\n if (perc > threshold && perc > best.similarity) best = { ...f, similarity: perc };\n }\n }\n return best;\n}\n\nexport function enhance(input): Tensor {\n const image = tf.tidy(() => {\n // input received from detector is already normalized to 0..1\n // input is also assumed to be straightened\n const tensor = input.image || input.tensor || input;\n if (!(tensor instanceof tf.Tensor)) return null;\n // do a tight crop of image and resize it to fit the model\n const box = [[0.05, 0.15, 0.85, 0.85]]; // empyrical values for top, left, bottom, right\n const crop = (tensor.shape.length === 3)\n ? tf.image.cropAndResize(tf.expandDims(tensor, 0), box, [0], [model.inputs[0].shape[2], model.inputs[0].shape[1]]) // add batch dimension if missing\n : tf.image.cropAndResize(tensor, box, [0], [model.inputs[0].shape[2], model.inputs[0].shape[1]]);\n // const crop = tf.image.resizeBilinear(tensor, [model.inputs[0].shape[2], model.inputs[0].shape[1]], false); // just resize to fit the embedding model\n\n /*\n // convert to black&white to avoid colorization impact\n const rgb = [0.2989, 0.5870, 0.1140]; // factors for red/green/blue colors when converting to grayscale: https://www.mathworks.com/help/matlab/ref/rgb2gray.html\n const [red, green, blue] = tf.split(crop, 3, 3);\n const redNorm = tf.mul(red, rgb[0]);\n const greenNorm = tf.mul(green, rgb[1]);\n const blueNorm = tf.mul(blue, rgb[2]);\n const grayscale = tf.addN([redNorm, greenNorm, blueNorm]);\n const merge = tf.stack([grayscale, grayscale, grayscale], 3).squeeze(4);\n */\n\n /*\n // optional increase image contrast\n // or do it per-channel so mean is done on each channel\n // or do it based on histogram\n const mean = merge.mean();\n const factor = 5;\n const contrast = merge.sub(mean).mul(factor).add(mean);\n */\n /*\n // normalize brightness from 0..1\n const darken = crop.sub(crop.min());\n const lighten = darken.div(darken.max());\n */\n const norm = crop.mul(255);\n\n return norm;\n });\n return image;\n}\n\nexport async function predict(image, config) {\n if (!model) return null;\n if ((skipped < config.face.description.skipFrames) && config.videoOptimized && last.age && (last.age > 0)) {\n skipped++;\n return last;\n }\n if (config.videoOptimized) skipped = 0;\n else skipped = Number.MAX_SAFE_INTEGER;\n return new Promise(async (resolve) => {\n // const resize = tf.image.resizeBilinear(image, [model.inputs[0].shape[2], model.inputs[0].shape[1]], false);\n // const enhanced = tf.mul(resize, [255.0]);\n // tf.dispose(resize);\n const enhanced = enhance(image);\n\n let resT;\n const obj = {\n age: 0,\n gender: 'unknown',\n genderConfidence: 0,\n descriptor: [] };\n\n if (!config.profile) {\n if (config.face.description.enabled) resT = await model.predict(enhanced);\n } else {\n const profileAge = config.face.description.enabled ? await tf.profile(() => model.predict(enhanced)) : {};\n resT = profileAge.result.clone();\n profileAge.result.dispose();\n profile.run('age', profileAge);\n }\n tf.dispose(enhanced);\n\n if (resT) {\n tf.tidy(() => {\n const gender = resT.find((t) => t.shape[1] === 1).dataSync();\n const confidence = Math.trunc(200 * Math.abs((gender[0] - 0.5))) / 100;\n if (confidence > config.face.gender.minConfidence) {\n obj.gender = gender[0] <= 0.5 ? 'female' : 'male';\n obj.genderConfidence = Math.min(0.99, confidence);\n }\n const age = resT.find((t) => t.shape[1] === 100).argMax(1).dataSync()[0];\n const all = resT.find((t) => t.shape[1] === 100).dataSync();\n obj.age = Math.round(all[age - 1] > all[age + 1] ? 10 * age - 100 * all[age - 1] : 10 * age + 100 * all[age + 1]) / 10;\n\n const desc = resT.find((t) => t.shape[1] === 1024);\n // const reshape = desc.reshape([128, 8]);\n // const reduce = reshape.logSumExp(1); // reduce 2nd dimension by calculating logSumExp on it\n\n obj.descriptor = [...desc.dataSync()];\n });\n resT.forEach((t) => tf.dispose(t));\n }\n\n last = obj;\n resolve(obj);\n });\n}\n", "import { log, now } from './helpers';\nimport * as tf from '../dist/tfjs.esm.js';\nimport * as age from './age/age';\nimport * as gender from './gender/gender';\nimport * as emotion from './emotion/emotion';\nimport * as embedding from './embedding/embedding';\nimport * as faceres from './faceres/faceres';\n\ntype Tensor = typeof tf.Tensor;\n\nconst calculateFaceAngle = (mesh): { roll: number | null, yaw: number | null, pitch: number | null } => {\n if (!mesh || mesh.length < 300) return { roll: null, yaw: null, pitch: null };\n const radians = (a1, a2, b1, b2) => Math.atan2(b2 - a2, b1 - a1);\n // eslint-disable-next-line no-unused-vars, @typescript-eslint/no-unused-vars\n const degrees = (theta) => Math.abs(((theta * 180) / Math.PI) % 360);\n const angle = {\n // values are in radians in range of -pi/2 to pi/2 which is -90 to +90 degrees\n // value of 0 means center\n // roll is face lean left/right\n roll: radians(mesh[33][0], mesh[33][1], mesh[263][0], mesh[263][1]), // looking at x,y of outside corners of leftEye and rightEye\n // yaw is face turn left/right\n yaw: radians(mesh[33][0], mesh[33][2], mesh[263][0], mesh[263][2]), // looking at x,z of outside corners of leftEye and rightEye\n // pitch is face move up/down\n pitch: radians(mesh[10][1], mesh[10][2], mesh[152][1], mesh[152][2]), // looking at y,z of top and bottom points of the face\n };\n return angle;\n};\n\nexport const detectFace = async (parent, input): Promise => {\n // run facemesh, includes blazeface and iris\n // eslint-disable-next-line no-async-promise-executor\n let timeStamp;\n let ageRes;\n let genderRes;\n let emotionRes;\n let embeddingRes;\n let descRes;\n const faceRes: Array<{\n confidence: number,\n boxConfidence: number,\n faceConfidence: number,\n box: [number, number, number, number],\n mesh: Array<[number, number, number]>\n meshRaw: Array<[number, number, number]>\n boxRaw: [number, number, number, number],\n annotations: Array<{ part: string, points: Array<[number, number, number]>[] }>,\n age: number,\n gender: string,\n genderConfidence: number,\n emotion: string,\n embedding: number[],\n iris: number,\n angle: { roll: number | null, yaw: number | null, pitch: number | null },\n tensor: Tensor,\n }> = [];\n parent.state = 'run:face';\n timeStamp = now();\n const faces = await parent.models.face?.estimateFaces(input, parent.config);\n parent.perf.face = Math.trunc(now() - timeStamp);\n if (!faces) return [];\n for (const face of faces) {\n parent.analyze('Get Face');\n\n // is something went wrong, skip the face\n if (!face.image || face.image.isDisposedInternal) {\n log('Face object is disposed:', face.image);\n continue;\n }\n\n const angle = calculateFaceAngle(face.mesh);\n\n // run age, inherits face from blazeface\n parent.analyze('Start Age:');\n if (parent.config.async) {\n ageRes = parent.config.face.age.enabled ? age.predict(face.image, parent.config) : {};\n } else {\n parent.state = 'run:age';\n timeStamp = now();\n ageRes = parent.config.face.age.enabled ? await age.predict(face.image, parent.config) : {};\n parent.perf.age = Math.trunc(now() - timeStamp);\n }\n\n // run gender, inherits face from blazeface\n parent.analyze('Start Gender:');\n if (parent.config.async) {\n genderRes = parent.config.face.gender.enabled ? gender.predict(face.image, parent.config) : {};\n } else {\n parent.state = 'run:gender';\n timeStamp = now();\n genderRes = parent.config.face.gender.enabled ? await gender.predict(face.image, parent.config) : {};\n parent.perf.gender = Math.trunc(now() - timeStamp);\n }\n\n // run emotion, inherits face from blazeface\n parent.analyze('Start Emotion:');\n if (parent.config.async) {\n emotionRes = parent.config.face.emotion.enabled ? emotion.predict(face.image, parent.config) : {};\n } else {\n parent.state = 'run:emotion';\n timeStamp = now();\n emotionRes = parent.config.face.emotion.enabled ? await emotion.predict(face.image, parent.config) : {};\n parent.perf.emotion = Math.trunc(now() - timeStamp);\n }\n parent.analyze('End Emotion:');\n\n // run emotion, inherits face from blazeface\n parent.analyze('Start Embedding:');\n if (parent.config.async) {\n embeddingRes = parent.config.face.embedding.enabled ? embedding.predict(face, parent.config) : [];\n } else {\n parent.state = 'run:embedding';\n timeStamp = now();\n embeddingRes = parent.config.face.embedding.enabled ? await embedding.predict(face, parent.config) : [];\n parent.perf.embedding = Math.trunc(now() - timeStamp);\n }\n parent.analyze('End Embedding:');\n\n // run emotion, inherits face from blazeface\n parent.analyze('Start Description:');\n if (parent.config.async) {\n descRes = parent.config.face.description.enabled ? faceres.predict(face, parent.config) : [];\n } else {\n parent.state = 'run:description';\n timeStamp = now();\n descRes = parent.config.face.description.enabled ? await faceres.predict(face.image, parent.config) : [];\n parent.perf.embedding = Math.trunc(now() - timeStamp);\n }\n parent.analyze('End Description:');\n\n // if async wait for results\n if (parent.config.async) {\n [ageRes, genderRes, emotionRes, embeddingRes, descRes] = await Promise.all([ageRes, genderRes, emotionRes, embeddingRes, descRes]);\n }\n\n parent.analyze('Finish Face:');\n\n // calculate iris distance\n // iris: array[ center, left, top, right, bottom]\n if (!parent.config.face.iris.enabled && face?.annotations?.leftEyeIris && face?.annotations?.rightEyeIris) {\n delete face.annotations.leftEyeIris;\n delete face.annotations.rightEyeIris;\n }\n const irisSize = (face.annotations?.leftEyeIris && face.annotations?.rightEyeIris)\n /* average human iris size is 11.7mm */\n ? 11.7 * Math.max(Math.abs(face.annotations.leftEyeIris[3][0] - face.annotations.leftEyeIris[1][0]), Math.abs(face.annotations.rightEyeIris[4][1] - face.annotations.rightEyeIris[2][1]))\n : 0;\n\n // combine results\n faceRes.push({\n ...face,\n age: descRes.age || ageRes.age,\n gender: descRes.gender || genderRes.gender,\n genderConfidence: descRes.genderConfidence || genderRes.confidence,\n embedding: descRes.descriptor || embeddingRes,\n emotion: emotionRes,\n iris: (irisSize !== 0) ? Math.trunc(irisSize) / 100 : 0,\n angle,\n tensor: parent.config.face.detector.return ? face.image?.squeeze() : null,\n });\n // dispose original face tensor\n face.image?.dispose();\n\n parent.analyze('End Face');\n }\n parent.analyze('End FaceMesh:');\n if (parent.config.async) {\n if (parent.perf.face) delete parent.perf.face;\n if (parent.perf.age) delete parent.perf.age;\n if (parent.perf.gender) delete parent.perf.gender;\n if (parent.perf.emotion) delete parent.perf.emotion;\n }\n return faceRes;\n};\n", "import { log } from '../helpers';\nimport * as tf from '../../dist/tfjs.esm.js';\n\nconst NUM_LANDMARKS = 6;\n\nfunction generateAnchors(inputSize) {\n const spec = { strides: [inputSize / 16, inputSize / 8], anchors: [2, 6] };\n const anchors: Array<[number, number]> = [];\n for (let i = 0; i < spec.strides.length; i++) {\n const stride = spec.strides[i];\n const gridRows = Math.floor((inputSize + stride - 1) / stride);\n const gridCols = Math.floor((inputSize + stride - 1) / stride);\n const anchorsNum = spec.anchors[i];\n for (let gridY = 0; gridY < gridRows; gridY++) {\n const anchorY = stride * (gridY + 0.5);\n for (let gridX = 0; gridX < gridCols; gridX++) {\n const anchorX = stride * (gridX + 0.5);\n for (let n = 0; n < anchorsNum; n++) {\n anchors.push([anchorX, anchorY]);\n }\n }\n }\n }\n return anchors;\n}\n\nexport const disposeBox = (box) => {\n box.startEndTensor.dispose();\n box.startPoint.dispose();\n box.endPoint.dispose();\n};\n\nconst createBox = (startEndTensor) => ({\n startEndTensor,\n startPoint: tf.slice(startEndTensor, [0, 0], [-1, 2]),\n endPoint: tf.slice(startEndTensor, [0, 2], [-1, 2]),\n});\n\nfunction decodeBounds(boxOutputs, anchors, inputSize) {\n const boxStarts = tf.slice(boxOutputs, [0, 1], [-1, 2]);\n const centers = tf.add(boxStarts, anchors);\n const boxSizes = tf.slice(boxOutputs, [0, 3], [-1, 2]);\n const boxSizesNormalized = tf.div(boxSizes, inputSize);\n const centersNormalized = tf.div(centers, inputSize);\n const halfBoxSize = tf.div(boxSizesNormalized, 2);\n const starts = tf.sub(centersNormalized, halfBoxSize);\n const ends = tf.add(centersNormalized, halfBoxSize);\n const startNormalized = tf.mul(starts, inputSize);\n const endNormalized = tf.mul(ends, inputSize);\n const concatAxis = 1;\n return tf.concat2d([startNormalized, endNormalized], concatAxis);\n}\n\nexport class BlazeFaceModel {\n model: any;\n anchorsData: any;\n anchors: any;\n inputSize: number;\n config: any;\n\n constructor(model, config) {\n this.model = model;\n this.anchorsData = generateAnchors(model.inputs[0].shape[1]);\n this.anchors = tf.tensor2d(this.anchorsData);\n this.inputSize = model.inputs[0].shape[2];\n this.config = config;\n }\n\n async getBoundingBoxes(inputImage) {\n // sanity check on input\n if ((!inputImage) || (inputImage.isDisposedInternal) || (inputImage.shape.length !== 4) || (inputImage.shape[1] < 1) || (inputImage.shape[2] < 1)) return null;\n const [batch, boxes, scores] = tf.tidy(() => {\n const resizedImage = inputImage.resizeBilinear([this.inputSize, this.inputSize]);\n // const normalizedImage = tf.mul(tf.sub(resizedImage.div(255), 0.5), 2);\n const normalizedImage = resizedImage.div(127.5).sub(0.5);\n const batchedPrediction = this.model.predict(normalizedImage);\n let batchOut;\n // are we using tfhub or pinto converted model?\n if (Array.isArray(batchedPrediction)) {\n const sorted = batchedPrediction.sort((a, b) => a.size - b.size);\n const concat384 = tf.concat([sorted[0], sorted[2]], 2); // dim: 384, 1 + 16\n const concat512 = tf.concat([sorted[1], sorted[3]], 2); // dim: 512, 1 + 16\n const concat = tf.concat([concat512, concat384], 1);\n batchOut = concat.squeeze(0);\n } else {\n batchOut = batchedPrediction.squeeze(); // when using tfhub model\n }\n const boxesOut = decodeBounds(batchOut, this.anchors, [this.inputSize, this.inputSize]);\n const logits = tf.slice(batchOut, [0, 0], [-1, 1]);\n const scoresOut = tf.sigmoid(logits).squeeze();\n return [batchOut, boxesOut, scoresOut];\n });\n const boxIndicesTensor = await tf.image.nonMaxSuppressionAsync(boxes, scores, this.config.face.detector.maxFaces, this.config.face.detector.iouThreshold, this.config.face.detector.scoreThreshold);\n const boxIndices = boxIndicesTensor.arraySync();\n boxIndicesTensor.dispose();\n const boundingBoxesMap = boxIndices.map((boxIndex) => tf.slice(boxes, [boxIndex, 0], [1, -1]));\n const boundingBoxes = boundingBoxesMap.map((boundingBox) => {\n const vals = boundingBox.arraySync();\n boundingBox.dispose();\n return vals;\n });\n\n const scoresVal = scores.dataSync();\n const annotatedBoxes: Array<{ box: any, landmarks: any, anchor: any, confidence: number }> = [];\n for (let i = 0; i < boundingBoxes.length; i++) {\n const boxIndex = boxIndices[i];\n const confidence = scoresVal[boxIndex];\n if (confidence > this.config.face.detector.minConfidence) {\n const box = createBox(boundingBoxes[i]);\n const anchor = this.anchorsData[boxIndex];\n const landmarks = tf.tidy(() => tf.slice(batch, [boxIndex, NUM_LANDMARKS - 1], [1, -1]).squeeze().reshape([NUM_LANDMARKS, -1]));\n annotatedBoxes.push({ box, landmarks, anchor, confidence });\n }\n }\n batch.dispose();\n boxes.dispose();\n scores.dispose();\n return {\n boxes: annotatedBoxes,\n scaleFactor: [inputImage.shape[2] / this.inputSize, inputImage.shape[1] / this.inputSize],\n };\n }\n}\n\nexport async function load(config) {\n const blazeface = await tf.loadGraphModel(config.face.detector.modelPath, { fromTFHub: config.face.detector.modelPath.includes('tfhub.dev') });\n const model = new BlazeFaceModel(blazeface, config);\n if (config.debug) log(`load model: ${config.face.detector.modelPath.match(/\\/(.*)\\./)[1]}`);\n return model;\n}\n", "/* eslint-disable class-methods-use-this */\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as bounding from './box';\nimport * as util from './util';\nimport * as coords from './coords';\n\nconst leftOutline = coords.MESH_ANNOTATIONS['leftEyeLower0'];\nconst rightOutline = coords.MESH_ANNOTATIONS['rightEyeLower0'];\n\nconst eyeLandmarks = {\n leftBounds: [leftOutline[0], leftOutline[leftOutline.length - 1]],\n rightBounds: [rightOutline[0], rightOutline[rightOutline.length - 1]],\n};\n\nconst meshLandmarks = {\n count: 468,\n mouth: 13,\n symmetryLine: [13, coords.MESH_ANNOTATIONS['midwayBetweenEyes'][0]],\n};\n\nconst blazeFaceLandmarks = {\n leftEye: 0,\n rightEye: 1,\n nose: 2,\n mouth: 3,\n leftEar: 4,\n rightEar: 5,\n symmetryLine: [3, 2],\n};\n\nconst irisLandmarks = {\n upperCenter: 3,\n lowerCenter: 4,\n index: 71,\n numCoordinates: 76,\n};\n\n// Replace the raw coordinates returned by facemesh with refined iris model coordinates\n// Update the z coordinate to be an average of the original and the new.\nfunction replaceRawCoordinates(rawCoords, newCoords, prefix, keys) {\n for (let i = 0; i < coords.MESH_TO_IRIS_INDICES_MAP.length; i++) {\n const { key, indices } = coords.MESH_TO_IRIS_INDICES_MAP[i];\n const originalIndices = coords.MESH_ANNOTATIONS[`${prefix}${key}`];\n // @ts-ignore\n if (!keys || keys.includes(key)) {\n for (let j = 0; j < indices.length; j++) {\n const index = indices[j];\n rawCoords[originalIndices[j]] = [\n newCoords[index][0], newCoords[index][1],\n (newCoords[index][2] + rawCoords[originalIndices[j]][2]) / 2,\n ];\n }\n }\n }\n}\n// The Pipeline coordinates between the bounding box and skeleton models.\nexport class Pipeline {\n storedBoxes: any;\n boundingBoxDetector: any;\n meshDetector: any;\n irisModel: any;\n boxSize: number;\n meshSize: number;\n irisSize: number;\n irisEnlarge: number;\n skipped: number;\n detectedFaces: number;\n\n constructor(boundingBoxDetector, meshDetector, irisModel) {\n // An array of facial bounding boxes.\n this.storedBoxes = [];\n this.boundingBoxDetector = boundingBoxDetector;\n this.meshDetector = meshDetector;\n this.irisModel = irisModel;\n this.boxSize = boundingBoxDetector?.model?.inputs[0].shape[2] || 0;\n this.meshSize = meshDetector?.inputs[0].shape[2] || boundingBoxDetector?.model?.inputs[0].shape[2];\n this.irisSize = irisModel?.inputs[0].shape[1] || 0;\n this.irisEnlarge = 2.3;\n this.skipped = 0;\n this.detectedFaces = 0;\n }\n\n transformRawCoords(rawCoords, box, angle, rotationMatrix) {\n const boxSize = bounding.getBoxSize({ startPoint: box.startPoint, endPoint: box.endPoint });\n const coordsScaled = rawCoords.map((coord) => ([\n boxSize[0] / this.meshSize * (coord[0] - this.meshSize / 2),\n boxSize[1] / this.meshSize * (coord[1] - this.meshSize / 2),\n coord[2],\n ]));\n const coordsRotationMatrix = (angle !== 0) ? util.buildRotationMatrix(angle, [0, 0]) : util.IDENTITY_MATRIX;\n const coordsRotated = (angle !== 0) ? coordsScaled.map((coord) => ([...util.rotatePoint(coord, coordsRotationMatrix), coord[2]])) : coordsScaled;\n const inverseRotationMatrix = (angle !== 0) ? util.invertTransformMatrix(rotationMatrix) : util.IDENTITY_MATRIX;\n const boxCenter = [...bounding.getBoxCenter({ startPoint: box.startPoint, endPoint: box.endPoint }), 1];\n return coordsRotated.map((coord) => ([\n coord[0] + util.dot(boxCenter, inverseRotationMatrix[0]),\n coord[1] + util.dot(boxCenter, inverseRotationMatrix[1]),\n coord[2],\n ]));\n }\n\n getLeftToRightEyeDepthDifference(rawCoords) {\n const leftEyeZ = rawCoords[eyeLandmarks.leftBounds[0]][2];\n const rightEyeZ = rawCoords[eyeLandmarks.rightBounds[0]][2];\n return leftEyeZ - rightEyeZ;\n }\n\n // Returns a box describing a cropped region around the eye fit for passing to the iris model.\n getEyeBox(rawCoords, face, eyeInnerCornerIndex, eyeOuterCornerIndex, flip = false) {\n const box = bounding.squarifyBox(bounding.enlargeBox(this.calculateLandmarksBoundingBox([rawCoords[eyeInnerCornerIndex], rawCoords[eyeOuterCornerIndex]]), this.irisEnlarge));\n const boxSize = bounding.getBoxSize(box);\n let crop = tf.image.cropAndResize(face, [[\n box.startPoint[1] / this.meshSize,\n box.startPoint[0] / this.meshSize, box.endPoint[1] / this.meshSize,\n box.endPoint[0] / this.meshSize,\n ]], [0], [this.irisSize, this.irisSize]);\n if (flip && tf.ENV.flags.IS_BROWSER) {\n crop = tf.image.flipLeftRight(crop); // flipLeftRight is not defined for tfjs-node\n }\n return { box, boxSize, crop };\n }\n\n // Given a cropped image of an eye, returns the coordinates of the contours surrounding the eye and the iris.\n getEyeCoords(eyeData, eyeBox, eyeBoxSize, flip = false) {\n const eyeRawCoords: Array = [];\n for (let i = 0; i < irisLandmarks.numCoordinates; i++) {\n const x = eyeData[i * 3];\n const y = eyeData[i * 3 + 1];\n const z = eyeData[i * 3 + 2];\n eyeRawCoords.push([\n (flip ? (1 - (x / this.irisSize)) : (x / this.irisSize)) * eyeBoxSize[0] + eyeBox.startPoint[0],\n (y / this.irisSize) * eyeBoxSize[1] + eyeBox.startPoint[1], z,\n ]);\n }\n return { rawCoords: eyeRawCoords, iris: eyeRawCoords.slice(irisLandmarks.index) };\n }\n\n // The z-coordinates returned for the iris are unreliable, so we take the z values from the surrounding keypoints.\n getAdjustedIrisCoords(rawCoords, irisCoords, direction) {\n const upperCenterZ = rawCoords[coords.MESH_ANNOTATIONS[`${direction}EyeUpper0`][irisLandmarks.upperCenter]][2];\n const lowerCenterZ = rawCoords[coords.MESH_ANNOTATIONS[`${direction}EyeLower0`][irisLandmarks.lowerCenter]][2];\n const averageZ = (upperCenterZ + lowerCenterZ) / 2;\n // Iris indices: 0: center | 1: right | 2: above | 3: left | 4: below\n return irisCoords.map((coord, i) => {\n let z = averageZ;\n if (i === 2) {\n z = upperCenterZ;\n } else if (i === 4) {\n z = lowerCenterZ;\n }\n return [coord[0], coord[1], z];\n });\n }\n\n async predict(input, config) {\n let useFreshBox = false;\n // run new detector every skipFrames unless we only want box to start with\n let detector;\n if ((this.skipped === 0) || (this.skipped > config.face.detector.skipFrames) || !config.face.mesh.enabled || !config.videoOptimized) {\n detector = await this.boundingBoxDetector.getBoundingBoxes(input);\n this.skipped = 0;\n }\n if (config.videoOptimized) this.skipped++;\n\n // if detector result count doesn't match current working set, use it to reset current working set\n if (!config.videoOptimized || (detector && detector.boxes && (!config.face.mesh.enabled || (detector.boxes.length !== this.detectedFaces) && (this.detectedFaces !== config.face.detector.maxFaces)))) {\n this.storedBoxes = [];\n this.detectedFaces = 0;\n for (const possible of detector.boxes) {\n this.storedBoxes.push({ startPoint: possible.box.startPoint.dataSync(), endPoint: possible.box.endPoint.dataSync(), landmarks: possible.landmarks, confidence: possible.confidence });\n }\n if (this.storedBoxes.length > 0) useFreshBox = true;\n }\n\n if (config.face.detector.skipInitial && this.detectedFaces === 0) this.skipped = 0;\n\n if (useFreshBox) {\n if (!detector || !detector.boxes || (detector.boxes.length === 0)) {\n this.storedBoxes = [];\n this.detectedFaces = 0;\n return null;\n }\n for (let i = 0; i < this.storedBoxes.length; i++) {\n const scaledBox = bounding.scaleBoxCoordinates({ startPoint: this.storedBoxes[i].startPoint, endPoint: this.storedBoxes[i].endPoint }, detector.scaleFactor);\n const enlargedBox = bounding.enlargeBox(scaledBox);\n const squarifiedBox = bounding.squarifyBox(enlargedBox);\n const landmarks = this.storedBoxes[i].landmarks.arraySync();\n const confidence = this.storedBoxes[i].confidence;\n this.storedBoxes[i] = { ...squarifiedBox, confidence, landmarks };\n }\n }\n if (detector && detector.boxes) {\n detector.boxes.forEach((prediction) => {\n prediction.box.startPoint.dispose();\n prediction.box.endPoint.dispose();\n prediction.landmarks.dispose();\n });\n }\n\n let results = tf.tidy(() => this.storedBoxes.map((box, i) => {\n const boxConfidence = box.confidence;\n\n // The facial bounding box landmarks could come either from blazeface (if we are using a fresh box), or from the mesh model (if we are reusing an old box).\n let face;\n let angle = 0;\n let rotationMatrix;\n\n if (config.face.detector.rotation && config.face.mesh.enabled && tf.ENV.flags.IS_BROWSER) {\n const [indexOfMouth, indexOfForehead] = (box.landmarks.length >= meshLandmarks.count) ? meshLandmarks.symmetryLine : blazeFaceLandmarks.symmetryLine;\n angle = util.computeRotation(box.landmarks[indexOfMouth], box.landmarks[indexOfForehead]);\n const faceCenter = bounding.getBoxCenter({ startPoint: box.startPoint, endPoint: box.endPoint });\n const faceCenterNormalized = [faceCenter[0] / input.shape[2], faceCenter[1] / input.shape[1]];\n const rotatedImage = tf.image.rotateWithOffset(input, angle, 0, faceCenterNormalized); // rotateWithOffset is not defined for tfjs-node\n rotationMatrix = util.buildRotationMatrix(-angle, faceCenter);\n if (config.face.mesh.enabled) face = bounding.cutBoxFromImageAndResize({ startPoint: box.startPoint, endPoint: box.endPoint }, rotatedImage, [this.meshSize, this.meshSize]).div(255);\n else face = bounding.cutBoxFromImageAndResize({ startPoint: box.startPoint, endPoint: box.endPoint }, rotatedImage, [this.boxSize, this.boxSize]).div(255);\n } else {\n rotationMatrix = util.IDENTITY_MATRIX;\n const clonedImage = input.clone();\n if (config.face.mesh.enabled) face = bounding.cutBoxFromImageAndResize({ startPoint: box.startPoint, endPoint: box.endPoint }, clonedImage, [this.meshSize, this.meshSize]).div(255);\n else face = bounding.cutBoxFromImageAndResize({ startPoint: box.startPoint, endPoint: box.endPoint }, clonedImage, [this.boxSize, this.boxSize]).div(255);\n }\n\n // if we're not going to produce mesh, don't spend time with further processing\n if (!config.face.mesh.enabled) {\n const prediction = {\n coords: null,\n box,\n faceConfidence: null,\n boxConfidence,\n confidence: box.confidence,\n image: face,\n };\n return prediction;\n }\n\n const [, confidence, contourCoords] = this.meshDetector.predict(face); // The first returned tensor represents facial contours which are already included in the coordinates.\n const faceConfidence = confidence.dataSync()[0];\n if (faceConfidence < config.face.detector.minConfidence) return null; // if below confidence just exit\n const coordsReshaped = tf.reshape(contourCoords, [-1, 3]);\n let rawCoords = coordsReshaped.arraySync();\n\n if (config.face.iris.enabled) {\n const { box: leftEyeBox, boxSize: leftEyeBoxSize, crop: leftEyeCrop } = this.getEyeBox(rawCoords, face, eyeLandmarks.leftBounds[0], eyeLandmarks.leftBounds[1], true);\n const { box: rightEyeBox, boxSize: rightEyeBoxSize, crop: rightEyeCrop } = this.getEyeBox(rawCoords, face, eyeLandmarks.rightBounds[0], eyeLandmarks.rightBounds[1]);\n const eyePredictions = this.irisModel.predict(tf.concat([leftEyeCrop, rightEyeCrop]));\n const eyePredictionsData = eyePredictions.dataSync();\n const leftEyeData = eyePredictionsData.slice(0, irisLandmarks.numCoordinates * 3);\n const { rawCoords: leftEyeRawCoords, iris: leftIrisRawCoords } = this.getEyeCoords(leftEyeData, leftEyeBox, leftEyeBoxSize, true);\n const rightEyeData = eyePredictionsData.slice(irisLandmarks.numCoordinates * 3);\n const { rawCoords: rightEyeRawCoords, iris: rightIrisRawCoords } = this.getEyeCoords(rightEyeData, rightEyeBox, rightEyeBoxSize);\n const leftToRightEyeDepthDifference = this.getLeftToRightEyeDepthDifference(rawCoords);\n if (Math.abs(leftToRightEyeDepthDifference) < 30) { // User is looking straight ahead.\n replaceRawCoordinates(rawCoords, leftEyeRawCoords, 'left', null);\n replaceRawCoordinates(rawCoords, rightEyeRawCoords, 'right', null);\n // If the user is looking to the left or to the right, the iris coordinates tend to diverge too much from the mesh coordinates for them to be merged\n // So we only update a single contour line above and below the eye.\n } else if (leftToRightEyeDepthDifference < 1) { // User is looking towards the right.\n replaceRawCoordinates(rawCoords, leftEyeRawCoords, 'left', ['EyeUpper0', 'EyeLower0']);\n } else { // User is looking towards the left.\n replaceRawCoordinates(rawCoords, rightEyeRawCoords, 'right', ['EyeUpper0', 'EyeLower0']);\n }\n const adjustedLeftIrisCoords = this.getAdjustedIrisCoords(rawCoords, leftIrisRawCoords, 'left');\n const adjustedRightIrisCoords = this.getAdjustedIrisCoords(rawCoords, rightIrisRawCoords, 'right');\n rawCoords = rawCoords.concat(adjustedLeftIrisCoords).concat(adjustedRightIrisCoords);\n }\n\n // override box from detection with one calculated from mesh\n const transformedCoordsData = this.transformRawCoords(rawCoords, box, angle, rotationMatrix);\n box = bounding.enlargeBox(this.calculateLandmarksBoundingBox(transformedCoordsData), 1.5); // redefine box with mesh calculated one\n const transformedCoords = tf.tensor2d(transformedCoordsData);\n\n // do rotation one more time with mesh keypoints if we want to return perfect image\n if (config.face.detector.rotation && config.face.mesh.enabled && (config.face.description.enabled || config.face.embedding.enabled) && tf.ENV.flags.IS_BROWSER) {\n const [indexOfMouth, indexOfForehead] = (box.landmarks.length >= meshLandmarks.count) ? meshLandmarks.symmetryLine : blazeFaceLandmarks.symmetryLine;\n angle = util.computeRotation(box.landmarks[indexOfMouth], box.landmarks[indexOfForehead]);\n const faceCenter = bounding.getBoxCenter({ startPoint: box.startPoint, endPoint: box.endPoint });\n const faceCenterNormalized = [faceCenter[0] / input.shape[2], faceCenter[1] / input.shape[1]];\n const rotatedImage = tf.image.rotateWithOffset(input, angle, 0, faceCenterNormalized); // rotateWithOffset is not defined for tfjs-node\n rotationMatrix = util.buildRotationMatrix(-angle, faceCenter);\n face = bounding.cutBoxFromImageAndResize({ startPoint: box.startPoint, endPoint: box.endPoint }, rotatedImage, [this.meshSize, this.meshSize]).div(255);\n }\n\n const prediction = {\n coords: transformedCoords,\n box,\n faceConfidence,\n boxConfidence,\n image: face,\n rawCoords,\n };\n\n // updated stored cache values\n const squarifiedLandmarksBox = bounding.squarifyBox(box);\n this.storedBoxes[i] = { ...squarifiedLandmarksBox, landmarks: transformedCoordsData, confidence: box.confidence, faceConfidence };\n\n return prediction;\n }));\n\n results = results.filter((a) => a !== null);\n // remove cache entries for detected boxes on low confidence\n if (config.face.mesh.enabled) this.storedBoxes = this.storedBoxes.filter((a) => a.faceConfidence > config.face.detector.minConfidence);\n this.detectedFaces = results.length;\n\n return results;\n }\n\n calculateLandmarksBoundingBox(landmarks) {\n const xs = landmarks.map((d) => d[0]);\n const ys = landmarks.map((d) => d[1]);\n const startPoint = [Math.min(...xs), Math.min(...ys)];\n const endPoint = [Math.max(...xs), Math.max(...ys)];\n return { startPoint, endPoint, landmarks };\n }\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nexport function scaleBoxCoordinates(box, factor) {\n const startPoint = [box.startPoint[0] * factor[0], box.startPoint[1] * factor[1]];\n const endPoint = [box.endPoint[0] * factor[0], box.endPoint[1] * factor[1]];\n return { startPoint, endPoint };\n}\n\nexport function getBoxSize(box) {\n return [\n Math.abs(box.endPoint[0] - box.startPoint[0]),\n Math.abs(box.endPoint[1] - box.startPoint[1]),\n ];\n}\n\nexport function getBoxCenter(box) {\n return [\n box.startPoint[0] + (box.endPoint[0] - box.startPoint[0]) / 2,\n box.startPoint[1] + (box.endPoint[1] - box.startPoint[1]) / 2,\n ];\n}\n\nexport function cutBoxFromImageAndResize(box, image, cropSize) {\n const h = image.shape[1];\n const w = image.shape[2];\n const boxes = [[\n box.startPoint[1] / h,\n box.startPoint[0] / w,\n box.endPoint[1] / h,\n box.endPoint[0] / w,\n ]];\n return tf.image.cropAndResize(image, boxes, [0], cropSize);\n}\n\nexport function enlargeBox(box, factor = 1.5) {\n const center = getBoxCenter(box);\n const size = getBoxSize(box);\n const newHalfSize = [factor * size[0] / 2, factor * size[1] / 2];\n const startPoint = [center[0] - newHalfSize[0], center[1] - newHalfSize[1]];\n const endPoint = [center[0] + newHalfSize[0], center[1] + newHalfSize[1]];\n return { startPoint, endPoint, landmarks: box.landmarks };\n}\n\nexport function squarifyBox(box) {\n const centers = getBoxCenter(box);\n const size = getBoxSize(box);\n const maxEdge = Math.max(...size);\n const halfSize = maxEdge / 2;\n const startPoint = [centers[0] - halfSize, centers[1] - halfSize];\n const endPoint = [centers[0] + halfSize, centers[1] + halfSize];\n return { startPoint, endPoint, landmarks: box.landmarks };\n}\n", "export const IDENTITY_MATRIX = [[1, 0, 0], [0, 1, 0], [0, 0, 1]];\n/**\n * Normalizes the provided angle to the range -pi to pi.\n * @param angle The angle in radians to be normalized.\n */\nexport function normalizeRadians(angle) {\n return angle - 2 * Math.PI * Math.floor((angle + Math.PI) / (2 * Math.PI));\n}\n\n/**\n * Computes the angle of rotation between two anchor points.\n * @param point1 First anchor point\n * @param point2 Second anchor point\n */\nexport function computeRotation(point1, point2) {\n const radians = Math.PI / 2 - Math.atan2(-(point2[1] - point1[1]), point2[0] - point1[0]);\n return normalizeRadians(radians);\n}\n\nexport function radToDegrees(rad) {\n return rad * 180 / Math.PI;\n}\n\nexport function buildTranslationMatrix(x, y) {\n return [[1, 0, x], [0, 1, y], [0, 0, 1]];\n}\n\nexport function dot(v1, v2) {\n let product = 0;\n for (let i = 0; i < v1.length; i++) {\n product += v1[i] * v2[i];\n }\n return product;\n}\n\nexport function getColumnFrom2DArr(arr, columnIndex) {\n const column: Array = [];\n for (let i = 0; i < arr.length; i++) {\n column.push(arr[i][columnIndex]);\n }\n return column;\n}\n\nexport function multiplyTransformMatrices(mat1, mat2) {\n const product: Array = [];\n const size = mat1.length;\n for (let row = 0; row < size; row++) {\n product.push([]);\n for (let col = 0; col < size; col++) {\n product[row].push(dot(mat1[row], getColumnFrom2DArr(mat2, col)));\n }\n }\n return product;\n}\n\nexport function buildRotationMatrix(rotation, center) {\n const cosA = Math.cos(rotation);\n const sinA = Math.sin(rotation);\n const rotationMatrix = [[cosA, -sinA, 0], [sinA, cosA, 0], [0, 0, 1]];\n const translationMatrix = buildTranslationMatrix(center[0], center[1]);\n const translationTimesRotation = multiplyTransformMatrices(translationMatrix, rotationMatrix);\n const negativeTranslationMatrix = buildTranslationMatrix(-center[0], -center[1]);\n return multiplyTransformMatrices(translationTimesRotation, negativeTranslationMatrix);\n}\n\nexport function invertTransformMatrix(matrix) {\n const rotationComponent = [[matrix[0][0], matrix[1][0]], [matrix[0][1], matrix[1][1]]];\n const translationComponent = [matrix[0][2], matrix[1][2]];\n const invertedTranslation = [\n -dot(rotationComponent[0], translationComponent),\n -dot(rotationComponent[1], translationComponent),\n ];\n return [\n rotationComponent[0].concat(invertedTranslation[0]),\n rotationComponent[1].concat(invertedTranslation[1]),\n [0, 0, 1],\n ];\n}\n\nexport function rotatePoint(homogeneousCoordinate, rotationMatrix) {\n return [\n dot(homogeneousCoordinate, rotationMatrix[0]),\n dot(homogeneousCoordinate, rotationMatrix[1]),\n ];\n}\n\nexport function xyDistanceBetweenPoints(a, b) {\n return Math.sqrt(((a[0] - b[0]) ** 2) + ((a[1] - b[1]) ** 2));\n}\n", "export const MESH_ANNOTATIONS = {\n silhouette: [\n 10, 338, 297, 332, 284, 251, 389, 356, 454, 323, 361, 288,\n 397, 365, 379, 378, 400, 377, 152, 148, 176, 149, 150, 136,\n 172, 58, 132, 93, 234, 127, 162, 21, 54, 103, 67, 109,\n ],\n lipsUpperOuter: [61, 185, 40, 39, 37, 0, 267, 269, 270, 409, 291],\n lipsLowerOuter: [146, 91, 181, 84, 17, 314, 405, 321, 375, 291],\n lipsUpperInner: [78, 191, 80, 81, 82, 13, 312, 311, 310, 415, 308],\n lipsLowerInner: [78, 95, 88, 178, 87, 14, 317, 402, 318, 324, 308],\n rightEyeUpper0: [246, 161, 160, 159, 158, 157, 173],\n rightEyeLower0: [33, 7, 163, 144, 145, 153, 154, 155, 133],\n rightEyeUpper1: [247, 30, 29, 27, 28, 56, 190],\n rightEyeLower1: [130, 25, 110, 24, 23, 22, 26, 112, 243],\n rightEyeUpper2: [113, 225, 224, 223, 222, 221, 189],\n rightEyeLower2: [226, 31, 228, 229, 230, 231, 232, 233, 244],\n rightEyeLower3: [143, 111, 117, 118, 119, 120, 121, 128, 245],\n rightEyebrowUpper: [156, 70, 63, 105, 66, 107, 55, 193],\n rightEyebrowLower: [35, 124, 46, 53, 52, 65],\n rightEyeIris: [473, 474, 475, 476, 477],\n leftEyeUpper0: [466, 388, 387, 386, 385, 384, 398],\n leftEyeLower0: [263, 249, 390, 373, 374, 380, 381, 382, 362],\n leftEyeUpper1: [467, 260, 259, 257, 258, 286, 414],\n leftEyeLower1: [359, 255, 339, 254, 253, 252, 256, 341, 463],\n leftEyeUpper2: [342, 445, 444, 443, 442, 441, 413],\n leftEyeLower2: [446, 261, 448, 449, 450, 451, 452, 453, 464],\n leftEyeLower3: [372, 340, 346, 347, 348, 349, 350, 357, 465],\n leftEyebrowUpper: [383, 300, 293, 334, 296, 336, 285, 417],\n leftEyebrowLower: [265, 353, 276, 283, 282, 295],\n leftEyeIris: [468, 469, 470, 471, 472],\n midwayBetweenEyes: [168],\n noseTip: [1],\n noseBottom: [2],\n noseRightCorner: [98],\n noseLeftCorner: [327],\n rightCheek: [205],\n leftCheek: [425],\n};\n\nexport const MESH_TO_IRIS_INDICES_MAP = [ // A mapping from facemesh model keypoints to iris model keypoints.\n { key: 'EyeUpper0', indices: [9, 10, 11, 12, 13, 14, 15] },\n { key: 'EyeUpper1', indices: [25, 26, 27, 28, 29, 30, 31] },\n { key: 'EyeUpper2', indices: [41, 42, 43, 44, 45, 46, 47] },\n { key: 'EyeLower0', indices: [0, 1, 2, 3, 4, 5, 6, 7, 8] },\n { key: 'EyeLower1', indices: [16, 17, 18, 19, 20, 21, 22, 23, 24] },\n { key: 'EyeLower2', indices: [32, 33, 34, 35, 36, 37, 38, 39, 40] },\n { key: 'EyeLower3', indices: [54, 55, 56, 57, 58, 59, 60, 61, 62] },\n // { key: 'EyebrowUpper', indices: [63, 64, 65, 66, 67, 68, 69, 70] },\n // { key: 'EyebrowLower', indices: [48, 49, 50, 51, 52, 53] },\n];\n\nexport const UV468 = [\n [0.499976992607117, 0.652534008026123],\n [0.500025987625122, 0.547487020492554],\n [0.499974012374878, 0.602371990680695],\n [0.482113003730774, 0.471979022026062],\n [0.500150978565216, 0.527155995368958],\n [0.499909996986389, 0.498252987861633],\n [0.499523013830185, 0.40106201171875],\n [0.289712011814117, 0.380764007568359],\n [0.499954998493195, 0.312398016452789],\n [0.499987006187439, 0.269918978214264],\n [0.500023007392883, 0.107050001621246],\n [0.500023007392883, 0.666234016418457],\n [0.5000159740448, 0.679224014282227],\n [0.500023007392883, 0.692348003387451],\n [0.499976992607117, 0.695277988910675],\n [0.499976992607117, 0.70593398809433],\n [0.499976992607117, 0.719385027885437],\n [0.499976992607117, 0.737019002437592],\n [0.499967992305756, 0.781370997428894],\n [0.499816000461578, 0.562981009483337],\n [0.473773002624512, 0.573909997940063],\n [0.104906998574734, 0.254140973091125],\n [0.365929991006851, 0.409575998783112],\n [0.338757991790771, 0.41302502155304],\n [0.311120003461838, 0.409460008144379],\n [0.274657994508743, 0.389131009578705],\n [0.393361985683441, 0.403706014156342],\n [0.345234006643295, 0.344011008739471],\n [0.370094001293182, 0.346076011657715],\n [0.319321990013123, 0.347265005111694],\n [0.297903001308441, 0.353591024875641],\n [0.24779200553894, 0.410809993743896],\n [0.396889001131058, 0.842755019664764],\n [0.280097991228104, 0.375599980354309],\n [0.106310002505779, 0.399955987930298],\n [0.2099249958992, 0.391353011131287],\n [0.355807989835739, 0.534406006336212],\n [0.471751004457474, 0.65040397644043],\n [0.474155008792877, 0.680191993713379],\n [0.439785003662109, 0.657229006290436],\n [0.414617002010345, 0.66654098033905],\n [0.450374007225037, 0.680860996246338],\n [0.428770989179611, 0.682690978050232],\n [0.374971002340317, 0.727805018424988],\n [0.486716985702515, 0.547628998756409],\n [0.485300987958908, 0.527395009994507],\n [0.257764995098114, 0.314490020275116],\n [0.401223003864288, 0.455172002315521],\n [0.429818987846375, 0.548614978790283],\n [0.421351999044418, 0.533740997314453],\n [0.276895999908447, 0.532056987285614],\n [0.483370006084442, 0.499586999416351],\n [0.33721199631691, 0.282882988452911],\n [0.296391993761063, 0.293242990970612],\n [0.169294998049736, 0.193813979625702],\n [0.447580009698868, 0.302609980106354],\n [0.392390012741089, 0.353887975215912],\n [0.354490011930466, 0.696784019470215],\n [0.067304998636246, 0.730105042457581],\n [0.442739009857178, 0.572826027870178],\n [0.457098007202148, 0.584792017936707],\n [0.381974011659622, 0.694710969924927],\n [0.392388999462128, 0.694203019142151],\n [0.277076005935669, 0.271932005882263],\n [0.422551989555359, 0.563233017921448],\n [0.385919004678726, 0.281364023685455],\n [0.383103013038635, 0.255840003490448],\n [0.331431001424789, 0.119714021682739],\n [0.229923993349075, 0.232002973556519],\n [0.364500999450684, 0.189113974571228],\n [0.229622006416321, 0.299540996551514],\n [0.173287004232407, 0.278747975826263],\n [0.472878992557526, 0.666198015213013],\n [0.446828007698059, 0.668527007102966],\n [0.422762006521225, 0.673889994621277],\n [0.445307999849319, 0.580065965652466],\n [0.388103008270264, 0.693961024284363],\n [0.403039008378983, 0.706539988517761],\n [0.403629004955292, 0.693953037261963],\n [0.460041999816895, 0.557139039039612],\n [0.431158006191254, 0.692366003990173],\n [0.452181994915009, 0.692366003990173],\n [0.475387006998062, 0.692366003990173],\n [0.465828001499176, 0.779190003871918],\n [0.472328990697861, 0.736225962638855],\n [0.473087012767792, 0.717857003211975],\n [0.473122000694275, 0.704625964164734],\n [0.473033010959625, 0.695277988910675],\n [0.427942007780075, 0.695277988910675],\n [0.426479011774063, 0.703539967536926],\n [0.423162013292313, 0.711845993995667],\n [0.4183090031147, 0.720062971115112],\n [0.390094995498657, 0.639572978019714],\n [0.013953999616206, 0.560034036636353],\n [0.499913990497589, 0.58014702796936],\n [0.413199990987778, 0.69539999961853],\n [0.409626007080078, 0.701822996139526],\n [0.468080013990402, 0.601534962654114],\n [0.422728985548019, 0.585985004901886],\n [0.463079988956451, 0.593783974647522],\n [0.37211999297142, 0.47341400384903],\n [0.334562003612518, 0.496073007583618],\n [0.411671012639999, 0.546965003013611],\n [0.242175996303558, 0.14767599105835],\n [0.290776997804642, 0.201445996761322],\n [0.327338010072708, 0.256527006626129],\n [0.399509996175766, 0.748921036720276],\n [0.441727995872498, 0.261676013469696],\n [0.429764986038208, 0.187834024429321],\n [0.412198007106781, 0.108901023864746],\n [0.288955003023148, 0.398952007293701],\n [0.218936994671822, 0.435410976409912],\n [0.41278201341629, 0.398970007896423],\n [0.257135003805161, 0.355440020561218],\n [0.427684992551804, 0.437960982322693],\n [0.448339998722076, 0.536936044692993],\n [0.178560003638268, 0.45755398273468],\n [0.247308000922203, 0.457193970680237],\n [0.286267012357712, 0.467674970626831],\n [0.332827985286713, 0.460712015628815],\n [0.368755996227264, 0.447206974029541],\n [0.398963987827301, 0.432654976844788],\n [0.476410001516342, 0.405806005001068],\n [0.189241006970406, 0.523923993110657],\n [0.228962004184723, 0.348950982093811],\n [0.490725994110107, 0.562400996685028],\n [0.404670000076294, 0.485132992267609],\n [0.019469000399113, 0.401564002037048],\n [0.426243007183075, 0.420431017875671],\n [0.396993011236191, 0.548797011375427],\n [0.266469985246658, 0.376977026462555],\n [0.439121007919312, 0.51895797252655],\n [0.032313998788595, 0.644356966018677],\n [0.419054001569748, 0.387154996395111],\n [0.462783008813858, 0.505746960639954],\n [0.238978996872902, 0.779744982719421],\n [0.198220998048782, 0.831938028335571],\n [0.107550002634525, 0.540755033493042],\n [0.183610007166862, 0.740257024765015],\n [0.134409993886948, 0.333683013916016],\n [0.385764002799988, 0.883153975009918],\n [0.490967005491257, 0.579378008842468],\n [0.382384985685349, 0.508572995662689],\n [0.174399003386497, 0.397670984268188],\n [0.318785011768341, 0.39623498916626],\n [0.343364000320435, 0.400596976280212],\n [0.396100014448166, 0.710216999053955],\n [0.187885001301765, 0.588537991046906],\n [0.430987000465393, 0.944064974784851],\n [0.318993002176285, 0.898285031318665],\n [0.266247987747192, 0.869701027870178],\n [0.500023007392883, 0.190576016902924],\n [0.499976992607117, 0.954452991485596],\n [0.366169989109039, 0.398822009563446],\n [0.393207013607025, 0.39553701877594],\n [0.410373002290726, 0.391080021858215],\n [0.194993004202843, 0.342101991176605],\n [0.388664990663528, 0.362284004688263],\n [0.365961998701096, 0.355970978736877],\n [0.343364000320435, 0.355356991291046],\n [0.318785011768341, 0.35834002494812],\n [0.301414996385574, 0.363156020641327],\n [0.058132998645306, 0.319076001644135],\n [0.301414996385574, 0.387449026107788],\n [0.499987989664078, 0.618434011936188],\n [0.415838003158569, 0.624195992946625],\n [0.445681989192963, 0.566076993942261],\n [0.465844005346298, 0.620640993118286],\n [0.49992299079895, 0.351523995399475],\n [0.288718998432159, 0.819945991039276],\n [0.335278987884521, 0.852819979190826],\n [0.440512001514435, 0.902418971061707],\n [0.128294005990028, 0.791940987110138],\n [0.408771991729736, 0.373893976211548],\n [0.455606997013092, 0.451801002025604],\n [0.499877005815506, 0.908990025520325],\n [0.375436991453171, 0.924192011356354],\n [0.11421000212431, 0.615022003650665],\n [0.448662012815475, 0.695277988910675],\n [0.4480200111866, 0.704632043838501],\n [0.447111994028091, 0.715808033943176],\n [0.444831997156143, 0.730794012546539],\n [0.430011987686157, 0.766808986663818],\n [0.406787008047104, 0.685672998428345],\n [0.400738000869751, 0.681069016456604],\n [0.392399996519089, 0.677703022956848],\n [0.367855995893478, 0.663918972015381],\n [0.247923001646996, 0.601333022117615],\n [0.452769994735718, 0.420849978923798],\n [0.43639200925827, 0.359887003898621],\n [0.416164010763168, 0.368713974952698],\n [0.413385987281799, 0.692366003990173],\n [0.228018000721931, 0.683571994304657],\n [0.468268007040024, 0.352671027183533],\n [0.411361992359161, 0.804327011108398],\n [0.499989002943039, 0.469825029373169],\n [0.479153990745544, 0.442654013633728],\n [0.499974012374878, 0.439637005329132],\n [0.432112008333206, 0.493588984012604],\n [0.499886006116867, 0.866917014122009],\n [0.49991300702095, 0.821729004383087],\n [0.456548988819122, 0.819200992584229],\n [0.344549000263214, 0.745438992977142],\n [0.37890899181366, 0.574010014533997],\n [0.374292999505997, 0.780184984207153],\n [0.319687992334366, 0.570737957954407],\n [0.357154995203018, 0.604269981384277],\n [0.295284003019333, 0.621580958366394],\n [0.447750002145767, 0.862477004528046],\n [0.410986006259918, 0.508723020553589],\n [0.31395098567009, 0.775308012962341],\n [0.354128003120422, 0.812552988529205],\n [0.324548006057739, 0.703992962837219],\n [0.189096003770828, 0.646299958229065],\n [0.279776990413666, 0.71465802192688],\n [0.1338230073452, 0.682700991630554],\n [0.336768001317978, 0.644733011722565],\n [0.429883986711502, 0.466521978378296],\n [0.455527991056442, 0.548622965812683],\n [0.437114000320435, 0.558896005153656],\n [0.467287987470627, 0.529924988746643],\n [0.414712011814117, 0.335219979286194],\n [0.37704598903656, 0.322777986526489],\n [0.344107985496521, 0.320150971412659],\n [0.312875986099243, 0.32233202457428],\n [0.283526003360748, 0.333190023899078],\n [0.241245999932289, 0.382785975933075],\n [0.102986000478268, 0.468762993812561],\n [0.267612010240555, 0.424560010433197],\n [0.297879010438919, 0.433175981044769],\n [0.333433985710144, 0.433878004550934],\n [0.366427004337311, 0.426115989685059],\n [0.396012008190155, 0.416696012020111],\n [0.420121014118195, 0.41022801399231],\n [0.007561000064015, 0.480777025222778],\n [0.432949006557465, 0.569517970085144],\n [0.458638995885849, 0.479089021682739],\n [0.473466008901596, 0.545744001865387],\n [0.476087987422943, 0.563830018043518],\n [0.468472003936768, 0.555056989192963],\n [0.433990985155106, 0.582361996173859],\n [0.483518004417419, 0.562983989715576],\n [0.482482999563217, 0.57784903049469],\n [0.42645001411438, 0.389798998832703],\n [0.438998997211456, 0.39649498462677],\n [0.450067013502121, 0.400434017181396],\n [0.289712011814117, 0.368252992630005],\n [0.276670008897781, 0.363372981548309],\n [0.517862021923065, 0.471948027610779],\n [0.710287988185883, 0.380764007568359],\n [0.526226997375488, 0.573909997940063],\n [0.895093023777008, 0.254140973091125],\n [0.634069979190826, 0.409575998783112],\n [0.661242008209229, 0.41302502155304],\n [0.688880026340485, 0.409460008144379],\n [0.725341975688934, 0.389131009578705],\n [0.606630027294159, 0.40370500087738],\n [0.654766023159027, 0.344011008739471],\n [0.629905998706818, 0.346076011657715],\n [0.680678009986877, 0.347265005111694],\n [0.702096998691559, 0.353591024875641],\n [0.75221198797226, 0.410804986953735],\n [0.602918028831482, 0.842862963676453],\n [0.719901978969574, 0.375599980354309],\n [0.893692970275879, 0.399959981441498],\n [0.790081977844238, 0.391354024410248],\n [0.643998026847839, 0.534487962722778],\n [0.528249025344849, 0.65040397644043],\n [0.525849997997284, 0.680191040039062],\n [0.560214996337891, 0.657229006290436],\n [0.585384011268616, 0.66654098033905],\n [0.549625992774963, 0.680860996246338],\n [0.57122802734375, 0.682691991329193],\n [0.624852001667023, 0.72809898853302],\n [0.513050019741058, 0.547281980514526],\n [0.51509702205658, 0.527251958847046],\n [0.742246985435486, 0.314507007598877],\n [0.598631024360657, 0.454979002475739],\n [0.570338010787964, 0.548575043678284],\n [0.578631997108459, 0.533622980117798],\n [0.723087012767792, 0.532054007053375],\n [0.516445994377136, 0.499638974666595],\n [0.662801027297974, 0.282917976379395],\n [0.70362401008606, 0.293271005153656],\n [0.830704987049103, 0.193813979625702],\n [0.552385985851288, 0.302568018436432],\n [0.607609987258911, 0.353887975215912],\n [0.645429015159607, 0.696707010269165],\n [0.932694971561432, 0.730105042457581],\n [0.557260990142822, 0.572826027870178],\n [0.542901992797852, 0.584792017936707],\n [0.6180260181427, 0.694710969924927],\n [0.607590973377228, 0.694203019142151],\n [0.722943007946014, 0.271963000297546],\n [0.577413976192474, 0.563166975975037],\n [0.614082992076874, 0.281386971473694],\n [0.616907000541687, 0.255886018276215],\n [0.668509006500244, 0.119913995265961],\n [0.770092010498047, 0.232020974159241],\n [0.635536015033722, 0.189248979091644],\n [0.77039098739624, 0.299556016921997],\n [0.826722025871277, 0.278755009174347],\n [0.527121007442474, 0.666198015213013],\n [0.553171992301941, 0.668527007102966],\n [0.577238023281097, 0.673889994621277],\n [0.554691970348358, 0.580065965652466],\n [0.611896991729736, 0.693961024284363],\n [0.59696102142334, 0.706539988517761],\n [0.596370995044708, 0.693953037261963],\n [0.539958000183105, 0.557139039039612],\n [0.568841993808746, 0.692366003990173],\n [0.547818005084991, 0.692366003990173],\n [0.52461302280426, 0.692366003990173],\n [0.534089982509613, 0.779141008853912],\n [0.527670979499817, 0.736225962638855],\n [0.526912987232208, 0.717857003211975],\n [0.526877999305725, 0.704625964164734],\n [0.526966989040375, 0.695277988910675],\n [0.572058022022247, 0.695277988910675],\n [0.573521018028259, 0.703539967536926],\n [0.57683801651001, 0.711845993995667],\n [0.581691026687622, 0.720062971115112],\n [0.609944999217987, 0.639909982681274],\n [0.986046016216278, 0.560034036636353],\n [0.5867999792099, 0.69539999961853],\n [0.590372025966644, 0.701822996139526],\n [0.531915009021759, 0.601536989212036],\n [0.577268004417419, 0.585934996604919],\n [0.536915004253387, 0.593786001205444],\n [0.627542972564697, 0.473352015018463],\n [0.665585994720459, 0.495950996875763],\n [0.588353991508484, 0.546862006187439],\n [0.757824003696442, 0.14767599105835],\n [0.709249973297119, 0.201507985591888],\n [0.672684013843536, 0.256581008434296],\n [0.600408971309662, 0.74900496006012],\n [0.55826598405838, 0.261672019958496],\n [0.570303976535797, 0.187870979309082],\n [0.588165998458862, 0.109044015407562],\n [0.711045026779175, 0.398952007293701],\n [0.781069993972778, 0.435405015945435],\n [0.587247014045715, 0.398931980133057],\n [0.742869973182678, 0.355445981025696],\n [0.572156012058258, 0.437651991844177],\n [0.55186802148819, 0.536570012569427],\n [0.821442008018494, 0.457556009292603],\n [0.752701997756958, 0.457181990146637],\n [0.71375697851181, 0.467626988887787],\n [0.66711300611496, 0.460672974586487],\n [0.631101012229919, 0.447153985500336],\n [0.6008620262146, 0.432473003864288],\n [0.523481011390686, 0.405627012252808],\n [0.810747981071472, 0.523926019668579],\n [0.771045982837677, 0.348959028720856],\n [0.509127020835876, 0.562718033790588],\n [0.595292985439301, 0.485023975372314],\n [0.980530977249146, 0.401564002037048],\n [0.573499977588654, 0.420000016689301],\n [0.602994978427887, 0.548687994480133],\n [0.733529984951019, 0.376977026462555],\n [0.560611009597778, 0.519016981124878],\n [0.967685997486115, 0.644356966018677],\n [0.580985009670258, 0.387160003185272],\n [0.537728011608124, 0.505385041236877],\n [0.760966002941132, 0.779752969741821],\n [0.801778972148895, 0.831938028335571],\n [0.892440974712372, 0.54076099395752],\n [0.816350996494293, 0.740260004997253],\n [0.865594983100891, 0.333687007427216],\n [0.614073991775513, 0.883246004581451],\n [0.508952975273132, 0.579437971115112],\n [0.617941975593567, 0.508316040039062],\n [0.825608015060425, 0.397674977779388],\n [0.681214988231659, 0.39623498916626],\n [0.656635999679565, 0.400596976280212],\n [0.603900015354156, 0.710216999053955],\n [0.81208598613739, 0.588539004325867],\n [0.56801301240921, 0.944564998149872],\n [0.681007981300354, 0.898285031318665],\n [0.733752012252808, 0.869701027870178],\n [0.633830010890961, 0.398822009563446],\n [0.606792986392975, 0.39553701877594],\n [0.589659988880157, 0.391062021255493],\n [0.805015981197357, 0.342108011245728],\n [0.611334979534149, 0.362284004688263],\n [0.634037971496582, 0.355970978736877],\n [0.656635999679565, 0.355356991291046],\n [0.681214988231659, 0.35834002494812],\n [0.698584973812103, 0.363156020641327],\n [0.941866993904114, 0.319076001644135],\n [0.698584973812103, 0.387449026107788],\n [0.584177017211914, 0.624107003211975],\n [0.554318010807037, 0.566076993942261],\n [0.534153997898102, 0.62064003944397],\n [0.711217999458313, 0.819975018501282],\n [0.664629995822906, 0.852871000766754],\n [0.559099972248077, 0.902631998062134],\n [0.871706008911133, 0.791940987110138],\n [0.591234028339386, 0.373893976211548],\n [0.544341027736664, 0.451583981513977],\n [0.624562978744507, 0.924192011356354],\n [0.88577002286911, 0.615028977394104],\n [0.551338016986847, 0.695277988910675],\n [0.551980018615723, 0.704632043838501],\n [0.552887976169586, 0.715808033943176],\n [0.555167973041534, 0.730794012546539],\n [0.569944024085999, 0.767035007476807],\n [0.593203008174896, 0.685675978660583],\n [0.599261999130249, 0.681069016456604],\n [0.607599973678589, 0.677703022956848],\n [0.631937980651855, 0.663500010967255],\n [0.752032995223999, 0.601315021514893],\n [0.547226011753082, 0.420395016670227],\n [0.563543975353241, 0.359827995300293],\n [0.583841025829315, 0.368713974952698],\n [0.586614012718201, 0.692366003990173],\n [0.771915018558502, 0.683578014373779],\n [0.531597018241882, 0.352482974529266],\n [0.588370978832245, 0.804440975189209],\n [0.52079701423645, 0.442565023899078],\n [0.567984998226166, 0.493479013442993],\n [0.543282985687256, 0.819254994392395],\n [0.655317008495331, 0.745514988899231],\n [0.621008992195129, 0.574018001556396],\n [0.625559985637665, 0.78031200170517],\n [0.680198013782501, 0.570719003677368],\n [0.64276397228241, 0.604337990283966],\n [0.704662978649139, 0.621529996395111],\n [0.552012026309967, 0.862591981887817],\n [0.589071989059448, 0.508637011051178],\n [0.685944974422455, 0.775357007980347],\n [0.645735025405884, 0.812640011310577],\n [0.675342977046967, 0.703978002071381],\n [0.810858011245728, 0.646304965019226],\n [0.72012197971344, 0.714666962623596],\n [0.866151988506317, 0.682704985141754],\n [0.663187026977539, 0.644596993923187],\n [0.570082008838654, 0.466325998306274],\n [0.544561982154846, 0.548375964164734],\n [0.562758982181549, 0.558784961700439],\n [0.531987011432648, 0.530140042304993],\n [0.585271000862122, 0.335177004337311],\n [0.622952997684479, 0.32277899980545],\n [0.655896008014679, 0.320163011550903],\n [0.687132000923157, 0.322345972061157],\n [0.716481983661652, 0.333200991153717],\n [0.758756995201111, 0.382786989212036],\n [0.897013008594513, 0.468769013881683],\n [0.732392013072968, 0.424547016620636],\n [0.70211398601532, 0.433162987232208],\n [0.66652500629425, 0.433866024017334],\n [0.633504986763, 0.426087975502014],\n [0.603875994682312, 0.416586995124817],\n [0.579657971858978, 0.409945011138916],\n [0.992439985275269, 0.480777025222778],\n [0.567192018032074, 0.569419980049133],\n [0.54136598110199, 0.478899002075195],\n [0.526564002037048, 0.546118021011353],\n [0.523913025856018, 0.563830018043518],\n [0.531529009342194, 0.555056989192963],\n [0.566035985946655, 0.582329034805298],\n [0.51631098985672, 0.563053965568542],\n [0.5174720287323, 0.577877044677734],\n [0.573594987392426, 0.389806985855103],\n [0.560697972774506, 0.395331978797913],\n [0.549755990505219, 0.399751007556915],\n [0.710287988185883, 0.368252992630005],\n [0.723330020904541, 0.363372981548309],\n];\n\nexport const TRI468 = [\n 127, 34, 139, 11, 0, 37, 232, 231, 120, 72, 37, 39, 128, 121, 47, 232, 121, 128, 104, 69, 67, 175, 171, 148, 157, 154, 155, 118, 50, 101, 73, 39, 40, 9,\n 151, 108, 48, 115, 131, 194, 204, 211, 74, 40, 185, 80, 42, 183, 40, 92, 186, 230, 229, 118, 202, 212, 214, 83, 18, 17, 76, 61, 146, 160, 29, 30, 56,\n 157, 173, 106, 204, 194, 135, 214, 192, 203, 165, 98, 21, 71, 68, 51, 45, 4, 144, 24, 23, 77, 146, 91, 205, 50, 187, 201, 200, 18, 91, 106, 182, 90, 91,\n 181, 85, 84, 17, 206, 203, 36, 148, 171, 140, 92, 40, 39, 193, 189, 244, 159, 158, 28, 247, 246, 161, 236, 3, 196, 54, 68, 104, 193, 168, 8, 117,\n 228, 31, 189, 193, 55, 98, 97, 99, 126, 47, 100, 166, 79, 218, 155, 154, 26, 209, 49, 131, 135, 136, 150, 47, 126, 217, 223, 52, 53, 45, 51, 134, 211,\n 170, 140, 67, 69, 108, 43, 106, 91, 230, 119, 120, 226, 130, 247, 63, 53, 52, 238, 20, 242, 46, 70, 156, 78, 62, 96, 46, 53, 63, 143, 34, 227, 173,\n 155, 133, 123, 117, 111, 44, 125, 19, 236, 134, 51, 216, 206, 205, 154, 153, 22, 39, 37, 167, 200, 201, 208, 36, 142, 100, 57, 212, 202, 20, 60, 99, 28,\n 158, 157, 35, 226, 113, 160, 159, 27, 204, 202, 210, 113, 225, 46, 43, 202, 204, 62, 76, 77, 137, 123, 116, 41, 38, 72, 203, 129, 142, 64, 98, 240, 49,\n 102, 64, 41, 73, 74, 212, 216, 207, 42, 74, 184, 169, 170, 211, 170, 149, 176, 105, 66, 69, 122, 6, 168, 123, 147, 187, 96, 77, 90, 65, 55, 107, 89,\n 90, 180, 101, 100, 120, 63, 105, 104, 93, 137, 227, 15, 86, 85, 129, 102, 49, 14, 87, 86, 55, 8, 9, 100, 47, 121, 145, 23, 22, 88, 89, 179, 6, 122,\n 196, 88, 95, 96, 138, 172, 136, 215, 58, 172, 115, 48, 219, 42, 80, 81, 195, 3, 51, 43, 146, 61, 171, 175, 199, 81, 82, 38, 53, 46, 225, 144, 163, 110,\n 246, 33, 7, 52, 65, 66, 229, 228, 117, 34, 127, 234, 107, 108, 69, 109, 108, 151, 48, 64, 235, 62, 78, 191, 129, 209, 126, 111, 35, 143, 163, 161, 246,\n 117, 123, 50, 222, 65, 52, 19, 125, 141, 221, 55, 65, 3, 195, 197, 25, 7, 33, 220, 237, 44, 70, 71, 139, 122, 193, 245, 247, 130, 33, 71, 21, 162,\n 153, 158, 159, 170, 169, 150, 188, 174, 196, 216, 186, 92, 144, 160, 161, 2, 97, 167, 141, 125, 241, 164, 167, 37, 72, 38, 12, 145, 159, 160, 38, 82, 13,\n 63, 68, 71, 226, 35, 111, 158, 153, 154, 101, 50, 205, 206, 92, 165, 209, 198, 217, 165, 167, 97, 220, 115, 218, 133, 112, 243, 239, 238, 241, 214,\n 135, 169, 190, 173, 133, 171, 208, 32, 125, 44, 237, 86, 87, 178, 85, 86, 179, 84, 85, 180, 83, 84, 181, 201, 83, 182, 137, 93, 132, 76, 62, 183, 61,\n 76, 184, 57, 61, 185, 212, 57, 186, 214, 207, 187, 34, 143, 156, 79, 239, 237, 123, 137, 177, 44, 1, 4, 201, 194, 32, 64, 102, 129, 213, 215, 138, 59,\n 166, 219, 242, 99, 97, 2, 94, 141, 75, 59, 235, 24, 110, 228, 25, 130, 226, 23, 24, 229, 22, 23, 230, 26, 22, 231, 112, 26, 232, 189, 190, 243, 221, 56,\n 190, 28, 56, 221, 27, 28, 222, 29, 27, 223, 30, 29, 224, 247, 30, 225, 238, 79, 20, 166, 59, 75, 60, 75, 240, 147, 177, 215, 20, 79, 166, 187, 147, 213,\n 112, 233, 244, 233, 128, 245, 128, 114, 188, 114, 217, 174, 131, 115, 220, 217, 198, 236, 198, 131, 134, 177, 132, 58, 143, 35, 124, 110, 163, 7, 228,\n 110, 25, 356, 389, 368, 11, 302, 267, 452, 350, 349, 302, 303, 269, 357, 343, 277, 452, 453, 357, 333, 332, 297, 175, 152, 377, 384, 398, 382, 347,\n 348, 330, 303, 304, 270, 9, 336, 337, 278, 279, 360, 418, 262, 431, 304, 408, 409, 310, 415, 407, 270, 409, 410, 450, 348, 347, 422, 430, 434, 313,\n 314, 17, 306, 307, 375, 387, 388, 260, 286, 414, 398, 335, 406, 418, 364, 367, 416, 423, 358, 327, 251, 284, 298, 281, 5, 4, 373, 374, 253, 307, 320,\n 321, 425, 427, 411, 421, 313, 18, 321, 405, 406, 320, 404, 405, 315, 16, 17, 426, 425, 266, 377, 400, 369, 322, 391, 269, 417, 465, 464, 386, 257, 258,\n 466, 260, 388, 456, 399, 419, 284, 332, 333, 417, 285, 8, 346, 340, 261, 413, 441, 285, 327, 460, 328, 355, 371, 329, 392, 439, 438, 382, 341, 256,\n 429, 420, 360, 364, 394, 379, 277, 343, 437, 443, 444, 283, 275, 440, 363, 431, 262, 369, 297, 338, 337, 273, 375, 321, 450, 451, 349, 446, 342, 467,\n 293, 334, 282, 458, 461, 462, 276, 353, 383, 308, 324, 325, 276, 300, 293, 372, 345, 447, 382, 398, 362, 352, 345, 340, 274, 1, 19, 456, 248, 281, 436,\n 427, 425, 381, 256, 252, 269, 391, 393, 200, 199, 428, 266, 330, 329, 287, 273, 422, 250, 462, 328, 258, 286, 384, 265, 353, 342, 387, 259, 257, 424,\n 431, 430, 342, 353, 276, 273, 335, 424, 292, 325, 307, 366, 447, 345, 271, 303, 302, 423, 266, 371, 294, 455, 460, 279, 278, 294, 271, 272, 304, 432,\n 434, 427, 272, 407, 408, 394, 430, 431, 395, 369, 400, 334, 333, 299, 351, 417, 168, 352, 280, 411, 325, 319, 320, 295, 296, 336, 319, 403, 404, 330,\n 348, 349, 293, 298, 333, 323, 454, 447, 15, 16, 315, 358, 429, 279, 14, 15, 316, 285, 336, 9, 329, 349, 350, 374, 380, 252, 318, 402, 403, 6, 197, 419,\n 318, 319, 325, 367, 364, 365, 435, 367, 397, 344, 438, 439, 272, 271, 311, 195, 5, 281, 273, 287, 291, 396, 428, 199, 311, 271, 268, 283, 444, 445,\n 373, 254, 339, 263, 466, 249, 282, 334, 296, 449, 347, 346, 264, 447, 454, 336, 296, 299, 338, 10, 151, 278, 439, 455, 292, 407, 415, 358, 371, 355,\n 340, 345, 372, 390, 249, 466, 346, 347, 280, 442, 443, 282, 19, 94, 370, 441, 442, 295, 248, 419, 197, 263, 255, 359, 440, 275, 274, 300, 383, 368,\n 351, 412, 465, 263, 467, 466, 301, 368, 389, 380, 374, 386, 395, 378, 379, 412, 351, 419, 436, 426, 322, 373, 390, 388, 2, 164, 393, 370, 462, 461,\n 164, 0, 267, 302, 11, 12, 374, 373, 387, 268, 12, 13, 293, 300, 301, 446, 261, 340, 385, 384, 381, 330, 266, 425, 426, 423, 391, 429, 355, 437, 391,\n 327, 326, 440, 457, 438, 341, 382, 362, 459, 457, 461, 434, 430, 394, 414, 463, 362, 396, 369, 262, 354, 461, 457, 316, 403, 402, 315, 404, 403, 314,\n 405, 404, 313, 406, 405, 421, 418, 406, 366, 401, 361, 306, 408, 407, 291, 409, 408, 287, 410, 409, 432, 436, 410, 434, 416, 411, 264, 368, 383, 309,\n 438, 457, 352, 376, 401, 274, 275, 4, 421, 428, 262, 294, 327, 358, 433, 416, 367, 289, 455, 439, 462, 370, 326, 2, 326, 370, 305, 460, 455, 254,\n 449, 448, 255, 261, 446, 253, 450, 449, 252, 451, 450, 256, 452, 451, 341, 453, 452, 413, 464, 463, 441, 413, 414, 258, 442, 441, 257, 443, 442, 259,\n 444, 443, 260, 445, 444, 467, 342, 445, 459, 458, 250, 289, 392, 290, 290, 328, 460, 376, 433, 435, 250, 290, 392, 411, 416, 433, 341, 463, 464, 453,\n 464, 465, 357, 465, 412, 343, 412, 399, 360, 363, 440, 437, 399, 456, 420, 456, 363, 401, 435, 288, 372, 383, 353, 339, 255, 249, 448, 261, 255, 133,\n 243, 190, 133, 155, 112, 33, 246, 247, 33, 130, 25, 398, 384, 286, 362, 398, 414, 362, 463, 341, 263, 359, 467, 263, 249, 255, 466, 467, 260, 75, 60,\n 166, 238, 239, 79, 162, 127, 139, 72, 11, 37, 121, 232, 120, 73, 72, 39, 114, 128, 47, 233, 232, 128, 103, 104, 67, 152, 175, 148, 173, 157, 155,\n 119, 118, 101, 74, 73, 40, 107, 9, 108, 49, 48, 131, 32, 194, 211, 184, 74, 185, 191, 80, 183, 185, 40, 186, 119, 230, 118, 210, 202, 214, 84, 83, 17,\n 77, 76, 146, 161, 160, 30, 190, 56, 173, 182, 106, 194, 138, 135, 192, 129, 203, 98, 54, 21, 68, 5, 51, 4, 145, 144, 23, 90, 77, 91, 207, 205, 187, 83,\n 201, 18, 181, 91, 182, 180, 90, 181, 16, 85, 17, 205, 206, 36, 176, 148, 140, 165, 92, 39, 245, 193, 244, 27, 159, 28, 30, 247, 161, 174, 236, 196,\n 103, 54, 104, 55, 193, 8, 111, 117, 31, 221, 189, 55, 240, 98, 99, 142, 126, 100, 219, 166, 218, 112, 155, 26, 198, 209, 131, 169, 135, 150, 114, 47,\n 217, 224, 223, 53, 220, 45, 134, 32, 211, 140, 109, 67, 108, 146, 43, 91, 231, 230, 120, 113, 226, 247, 105, 63, 52, 241, 238, 242, 124, 46, 156, 95,\n 78, 96, 70, 46, 63, 116, 143, 227, 116, 123, 111, 1, 44, 19, 3, 236, 51, 207, 216, 205, 26, 154, 22, 165, 39, 167, 199, 200, 208, 101, 36, 100, 43,\n 57, 202, 242, 20, 99, 56, 28, 157, 124, 35, 113, 29, 160, 27, 211, 204, 210, 124, 113, 46, 106, 43, 204, 96, 62, 77, 227, 137, 116, 73, 41, 72, 36, 203,\n 142, 235, 64, 240, 48, 49, 64, 42, 41, 74, 214, 212, 207, 183, 42, 184, 210, 169, 211, 140, 170, 176, 104, 105, 69, 193, 122, 168, 50, 123, 187, 89, 96,\n 90, 66, 65, 107, 179, 89, 180, 119, 101, 120, 68, 63, 104, 234, 93, 227, 16, 15, 85, 209, 129, 49, 15, 14, 86, 107, 55, 9, 120, 100, 121, 153, 145, 22,\n 178, 88, 179, 197, 6, 196, 89, 88, 96, 135, 138, 136, 138, 215, 172, 218, 115, 219, 41, 42, 81, 5, 195, 51, 57, 43, 61, 208, 171, 199, 41, 81, 38,\n 224, 53, 225, 24, 144, 110, 105, 52, 66, 118, 229, 117, 227, 34, 234, 66, 107, 69, 10, 109, 151, 219, 48, 235, 183, 62, 191, 142, 129, 126, 116, 111,\n 143, 7, 163, 246, 118, 117, 50, 223, 222, 52, 94, 19, 141, 222, 221, 65, 196, 3, 197, 45, 220, 44, 156, 70, 139, 188, 122, 245, 139, 71, 162, 145,\n 153, 159, 149, 170, 150, 122, 188, 196, 206, 216, 92, 163, 144, 161, 164, 2, 167, 242, 141, 241, 0, 164, 37, 11, 72, 12, 144, 145, 160, 12, 38, 13, 70,\n 63, 71, 31, 226, 111, 157, 158, 154, 36, 101, 205, 203, 206, 165, 126, 209, 217, 98, 165, 97, 237, 220, 218, 237, 239, 241, 210, 214, 169, 140, 171, 32,\n 241, 125, 237, 179, 86, 178, 180, 85, 179, 181, 84, 180, 182, 83, 181, 194, 201, 182, 177, 137, 132, 184, 76, 183, 185, 61, 184, 186, 57, 185, 216, 212,\n 186, 192, 214, 187, 139, 34, 156, 218, 79, 237, 147, 123, 177, 45, 44, 4, 208, 201, 32, 98, 64, 129, 192, 213, 138, 235, 59, 219, 141, 242, 97, 97, 2,\n 141, 240, 75, 235, 229, 24, 228, 31, 25, 226, 230, 23, 229, 231, 22, 230, 232, 26, 231, 233, 112, 232, 244, 189, 243, 189, 221, 190, 222, 28, 221,\n 223, 27, 222, 224, 29, 223, 225, 30, 224, 113, 247, 225, 99, 60, 240, 213, 147, 215, 60, 20, 166, 192, 187, 213, 243, 112, 244, 244, 233, 245, 245,\n 128, 188, 188, 114, 174, 134, 131, 220, 174, 217, 236, 236, 198, 134, 215, 177, 58, 156, 143, 124, 25, 110, 7, 31, 228, 25, 264, 356, 368, 0, 11, 267,\n 451, 452, 349, 267, 302, 269, 350, 357, 277, 350, 452, 357, 299, 333, 297, 396, 175, 377, 381, 384, 382, 280, 347, 330, 269, 303, 270, 151, 9, 337,\n 344, 278, 360, 424, 418, 431, 270, 304, 409, 272, 310, 407, 322, 270, 410, 449, 450, 347, 432, 422, 434, 18, 313, 17, 291, 306, 375, 259, 387, 260,\n 424, 335, 418, 434, 364, 416, 391, 423, 327, 301, 251, 298, 275, 281, 4, 254, 373, 253, 375, 307, 321, 280, 425, 411, 200, 421, 18, 335, 321, 406,\n 321, 320, 405, 314, 315, 17, 423, 426, 266, 396, 377, 369, 270, 322, 269, 413, 417, 464, 385, 386, 258, 248, 456, 419, 298, 284, 333, 168, 417, 8,\n 448, 346, 261, 417, 413, 285, 326, 327, 328, 277, 355, 329, 309, 392, 438, 381, 382, 256, 279, 429, 360, 365, 364, 379, 355, 277, 437, 282, 443, 283,\n 281, 275, 363, 395, 431, 369, 299, 297, 337, 335, 273, 321, 348, 450, 349, 359, 446, 467, 283, 293, 282, 250, 458, 462, 300, 276, 383, 292, 308, 325,\n 283, 276, 293, 264, 372, 447, 346, 352, 340, 354, 274, 19, 363, 456, 281, 426, 436, 425, 380, 381, 252, 267, 269, 393, 421, 200, 428, 371, 266, 329,\n 432, 287, 422, 290, 250, 328, 385, 258, 384, 446, 265, 342, 386, 387, 257, 422, 424, 430, 445, 342, 276, 422, 273, 424, 306, 292, 307, 352, 366, 345,\n 268, 271, 302, 358, 423, 371, 327, 294, 460, 331, 279, 294, 303, 271, 304, 436, 432, 427, 304, 272, 408, 395, 394, 431, 378, 395, 400, 296, 334, 299,\n 6, 351, 168, 376, 352, 411, 307, 325, 320, 285, 295, 336, 320, 319, 404, 329, 330, 349, 334, 293, 333, 366, 323, 447, 316, 15, 315, 331, 358, 279,\n 317, 14, 316, 8, 285, 9, 277, 329, 350, 253, 374, 252, 319, 318, 403, 351, 6, 419, 324, 318, 325, 397, 367, 365, 288, 435, 397, 278, 344, 439, 310,\n 272, 311, 248, 195, 281, 375, 273, 291, 175, 396, 199, 312, 311, 268, 276, 283, 445, 390, 373, 339, 295, 282, 296, 448, 449, 346, 356, 264, 454, 337,\n 336, 299, 337, 338, 151, 294, 278, 455, 308, 292, 415, 429, 358, 355, 265, 340, 372, 388, 390, 466, 352, 346, 280, 295, 442, 282, 354, 19, 370, 285,\n 441, 295, 195, 248, 197, 457, 440, 274, 301, 300, 368, 417, 351, 465, 251, 301, 389, 385, 380, 386, 394, 395, 379, 399, 412, 419, 410, 436, 322, 387,\n 373, 388, 326, 2, 393, 354, 370, 461, 393, 164, 267, 268, 302, 12, 386, 374, 387, 312, 268, 13, 298, 293, 301, 265, 446, 340, 380, 385, 381, 280, 330,\n 425, 322, 426, 391, 420, 429, 437, 393, 391, 326, 344, 440, 438, 458, 459, 461, 364, 434, 394, 428, 396, 262, 274, 354, 457, 317, 316, 402, 316, 315,\n 403, 315, 314, 404, 314, 313, 405, 313, 421, 406, 323, 366, 361, 292, 306, 407, 306, 291, 408, 291, 287, 409, 287, 432, 410, 427, 434, 411, 372, 264,\n 383, 459, 309, 457, 366, 352, 401, 1, 274, 4, 418, 421, 262, 331, 294, 358, 435, 433, 367, 392, 289, 439, 328, 462, 326, 94, 2, 370, 289, 305, 455, 339,\n 254, 448, 359, 255, 446, 254, 253, 449, 253, 252, 450, 252, 256, 451, 256, 341, 452, 414, 413, 463, 286, 441, 414, 286, 258, 441, 258, 257, 442, 257,\n 259, 443, 259, 260, 444, 260, 467, 445, 309, 459, 250, 305, 289, 290, 305, 290, 460, 401, 376, 435, 309, 250, 392, 376, 411, 433, 453, 341, 464, 357,\n 453, 465, 343, 357, 412, 437, 343, 399, 344, 360, 440, 420, 437, 456, 360, 420, 363, 361, 401, 288, 265, 372, 353, 390, 339, 249, 339, 448, 255];\n\nexport const TRI68 = [0, 1, 36, 0, 36, 17, 1, 2, 41, 1, 41, 36, 2, 3, 31, 2, 31, 41, 3, 4, 48, 3, 48, 31, 4, 5, 48, 5, 6, 48, 6, 7, 59, 6, 59, 48, 7, 8, 58, 7, 58, 59,\n 8, 9, 56, 8, 56, 57, 8, 57, 58, 9, 10, 55, 9, 55, 56, 10, 11, 54, 10, 54, 55, 11, 12, 54, 12, 13, 54, 13, 14, 35, 13, 35, 54, 14, 15, 46, 14, 46, 35, 15, 16,\n 45, 15, 45, 46, 16, 26, 45, 17, 36, 18, 18, 37, 19, 18, 36, 37, 19, 38, 20, 19, 37, 38, 20, 39, 21, 20, 38, 39, 21, 39, 27, 22, 42, 23, 22, 27, 42, 23, 43, 24,\n 23, 42, 43, 24, 44, 25, 24, 43, 44, 25, 45, 26, 25, 44, 45, 27, 39, 28, 27, 28, 42, 28, 39, 29, 28, 29, 42, 29, 31, 30, 29, 30, 35, 29, 40, 31, 29, 35, 47, 29,\n 39, 40, 29, 47, 42, 30, 31, 32, 30, 32, 33, 30, 33, 34, 30, 34, 35, 31, 50, 32, 31, 40, 41, 31, 48, 49, 31, 49, 50, 32, 51, 33, 32, 50, 51, 33, 51, 34, 34, 52,\n 35, 34, 51, 52, 35, 46, 47, 35, 52, 53, 35, 53, 54, 36, 41, 37, 37, 40, 38, 37, 41, 40, 38, 40, 39, 42, 47, 43, 43, 47, 44, 44, 46, 45, 44, 47, 46, 48, 60, 49,\n 48, 59, 60, 49, 61, 50, 49, 60, 61, 50, 62, 51, 50, 61, 62, 51, 62, 52, 52, 63, 53, 52, 62, 63, 53, 64, 54, 53, 63, 64, 54, 64, 55, 55, 65, 56, 55, 64, 65, 56,\n 66, 57, 56, 65, 66, 57, 66, 58, 58, 67, 59, 58, 66, 67, 59, 67, 60, 60, 67, 61, 61, 66, 62, 61, 67, 66, 62, 66, 63, 63, 65, 64, 63, 66, 65, 21, 27, 22];\n\nexport const TRI33 = [\n /* eyes */ 0, 8, 7, 7, 8, 1, 2, 10, 9, 9, 10, 3,\n /* brows */ 17, 0, 18, 18, 0, 7, 18, 7, 19, 19, 7, 1, 19, 1, 11, 19, 11, 20, 21, 3, 22, 21, 9, 3, 20, 9, 21, 20, 2, 9, 20, 11, 2,\n /* 4head */ 23, 17, 18, 25, 21, 22, 24, 19, 20, 24, 18, 19, 24, 20, 21, 24, 23, 18, 24, 21, 25,\n /* nose */ 11, 12, 4, 11, 4, 13, 1, 12, 11, 11, 13, 2, 12, 14, 4, 4, 14, 13,\n /* up-lip */ 14, 5, 15, 14, 15, 6, 12, 5, 14, 14, 6, 13,\n /* cheeks */ 8, 12, 1, 2, 13, 10, 8, 26, 12, 10, 13, 27, 26, 5, 12, 13, 6, 27, 0, 26, 8, 10, 27, 3,\n /* chin */ 5, 32, 16, 16, 32, 6, 5, 30, 32, 6, 32, 31,\n /* cont */ 26, 30, 5, 27, 6, 31, 0, 28, 26, 3, 27, 29, 17, 28, 0, 3, 29, 22, 23, 28, 17, 22, 29, 25, 28, 30, 26, 27, 31, 29,\n];\n\nexport const TRI7 = [0, 4, 1, 2, 4, 3, 4, 5, 6];\n\nexport const VTX68 = [\n /* cont */ 127, 234, 132, 58, 172, 150, 149, 148, 152, 377, 378, 379, 397, 288, 361, 454, 356,\n /* brows */ 70, 63, 105, 66, 107, 336, 296, 334, 293, 300,\n /* nose */ 168, 6, 195, 4, 98, 97, 2, 326, 327,\n /* eyes */ 33, 160, 158, 133, 153, 144, 362, 385, 387, 263, 373, 380,\n /* lip */ 57, 40, 37, 0, 267, 270, 287, 321, 314, 17, 84, 91,\n /* mouth */ 78, 81, 13, 311, 308, 402, 14, 178,\n];\n\nexport const VTX33 = [33, 133, 362, 263, 1, 62, 308, 159, 145, 386, 374, 6, 102, 331, 2, 13, 14, 70, 105, 107, 336, 334, 300, 54, 10, 284, 50, 280, 234, 454, 58, 288, 152];\n\nexport const VTX7 = [33, 133, 362, 263, 1, 78, 308];\n\nexport const UV68 = VTX68.map((x) => UV468[x]);\n\nexport const UV33 = VTX33.map((x) => UV468[x]);\n\nexport const UV7 = VTX7.map((x) => UV468[x]);\n", "import { log } from '../helpers';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as modelBase from './modelBase';\nimport * as decodeMultiple from './decodeMultiple';\nimport * as decodePose from './decodePose';\nimport * as util from './util';\n\nasync function estimateMultiple(input, res, config, inputSize) {\n return new Promise(async (resolve) => {\n const allTensorBuffers = await util.toTensorBuffers3D([res.heatmapScores, res.offsets, res.displacementFwd, res.displacementBwd]);\n const scoresBuffer = allTensorBuffers[0];\n const offsetsBuffer = allTensorBuffers[1];\n const displacementsFwdBuffer = allTensorBuffers[2];\n const displacementsBwdBuffer = allTensorBuffers[3];\n const poses = await decodeMultiple.decodeMultiplePoses(scoresBuffer, offsetsBuffer, displacementsFwdBuffer, displacementsBwdBuffer, config.body.nmsRadius, config.body.maxDetections, config.body.scoreThreshold);\n const scaled = util.scaleAndFlipPoses(poses, [input.shape[1], input.shape[2]], [inputSize, inputSize]);\n resolve(scaled);\n });\n}\n\nasync function estimateSingle(input, res, config, inputSize) {\n return new Promise(async (resolve) => {\n const pose = await decodePose.decodeSinglePose(res.heatmapScores, res.offsets, config.body.scoreThreshold);\n const scaled = util.scaleAndFlipPoses([pose], [input.shape[1], input.shape[2]], [inputSize, inputSize]);\n resolve(scaled);\n });\n}\n\nexport class PoseNet {\n baseModel: any;\n inputSize: number\n constructor(model) {\n this.baseModel = model;\n this.inputSize = model.model.inputs[0].shape[1];\n if (this.inputSize < 128) this.inputSize = 257;\n }\n\n async estimatePoses(input, config) {\n const resized = util.resizeTo(input, [this.inputSize, this.inputSize]);\n const res = this.baseModel.predict(resized, config);\n\n const poses = (config.body.maxDetections < 2)\n ? await estimateSingle(input, res, config, this.inputSize)\n : await estimateMultiple(input, res, config, this.inputSize);\n\n res.heatmapScores.dispose();\n res.offsets.dispose();\n res.displacementFwd.dispose();\n res.displacementBwd.dispose();\n resized.dispose();\n\n return poses;\n }\n\n dispose() {\n this.baseModel.dispose();\n }\n}\n\nexport async function load(config) {\n const model = await tf.loadGraphModel(config.body.modelPath);\n const mobilenet = new modelBase.BaseModel(model);\n if (config.debug) log(`load model: ${config.body.modelPath.match(/\\/(.*)\\./)[1]}`);\n return new PoseNet(mobilenet);\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nfunction nameOutputResultsMobileNet(results) {\n const [offsets, heatmap, displacementFwd, displacementBwd] = results;\n return { offsets, heatmap, displacementFwd, displacementBwd };\n}\n\nexport class BaseModel {\n model: any;\n constructor(model) {\n this.model = model;\n }\n\n predict(input) {\n return tf.tidy(() => {\n const asFloat = input.toFloat().div(127.5).sub(1.0);\n const asBatch = asFloat.expandDims(0);\n const results = this.model.predict(asBatch);\n const results3d = results.map((y) => y.squeeze([0]));\n const namedResults = nameOutputResultsMobileNet(results3d);\n return {\n heatmapScores: namedResults.heatmap.sigmoid(),\n offsets: namedResults.offsets,\n displacementFwd: namedResults.displacementFwd,\n displacementBwd: namedResults.displacementBwd,\n };\n });\n }\n\n dispose() {\n this.model.dispose();\n }\n}\n", "// algorithm based on Coursera Lecture from Algorithms, Part 1: https://www.coursera.org/learn/algorithms-part1/lecture/ZjoSM/heapsort\nfunction half(k) {\n return Math.floor(k / 2);\n}\nexport class MaxHeap {\n priorityQueue: any;\n numberOfElements: number;\n getElementValue: any;\n\n constructor(maxSize, getElementValue) {\n this.priorityQueue = new Array(maxSize);\n this.numberOfElements = -1;\n this.getElementValue = getElementValue;\n }\n\n enqueue(x) {\n this.priorityQueue[++this.numberOfElements] = x;\n this.swim(this.numberOfElements);\n }\n\n dequeue() {\n const max = this.priorityQueue[0];\n this.exchange(0, this.numberOfElements--);\n this.sink(0);\n this.priorityQueue[this.numberOfElements + 1] = null;\n return max;\n }\n\n empty() {\n return this.numberOfElements === -1;\n }\n\n size() {\n return this.numberOfElements + 1;\n }\n\n all() {\n return this.priorityQueue.slice(0, this.numberOfElements + 1);\n }\n\n max() {\n return this.priorityQueue[0];\n }\n\n swim(k) {\n while (k > 0 && this.less(half(k), k)) {\n this.exchange(k, half(k));\n k = half(k);\n }\n }\n\n sink(k) {\n while (2 * k <= this.numberOfElements) {\n let j = 2 * k;\n if (j < this.numberOfElements && this.less(j, j + 1)) j++;\n if (!this.less(k, j)) break;\n this.exchange(k, j);\n k = j;\n }\n }\n\n getValueAt(i) {\n return this.getElementValue(this.priorityQueue[i]);\n }\n\n less(i, j) {\n return this.getValueAt(i) < this.getValueAt(j);\n }\n\n exchange(i, j) {\n const t = this.priorityQueue[i];\n this.priorityQueue[i] = this.priorityQueue[j];\n this.priorityQueue[j] = t;\n }\n}\n", "import * as heapSort from './heapSort';\n\nfunction scoreIsMaximumInLocalWindow(keypointId, score, heatmapY, heatmapX, localMaximumRadius, scores) {\n const [height, width] = scores.shape;\n let localMaximum = true;\n const yStart = Math.max(heatmapY - localMaximumRadius, 0);\n const yEnd = Math.min(heatmapY + localMaximumRadius + 1, height);\n for (let yCurrent = yStart; yCurrent < yEnd; ++yCurrent) {\n const xStart = Math.max(heatmapX - localMaximumRadius, 0);\n const xEnd = Math.min(heatmapX + localMaximumRadius + 1, width);\n for (let xCurrent = xStart; xCurrent < xEnd; ++xCurrent) {\n if (scores.get(yCurrent, xCurrent, keypointId) > score) {\n localMaximum = false;\n break;\n }\n }\n if (!localMaximum) break;\n }\n return localMaximum;\n}\n\nexport function buildPartWithScoreQueue(scoreThreshold, localMaximumRadius, scores) {\n const [height, width, numKeypoints] = scores.shape;\n const queue = new heapSort.MaxHeap(height * width * numKeypoints, ({ score }) => score);\n for (let heatmapY = 0; heatmapY < height; ++heatmapY) {\n for (let heatmapX = 0; heatmapX < width; ++heatmapX) {\n for (let keypointId = 0; keypointId < numKeypoints; ++keypointId) {\n const score = scores.get(heatmapY, heatmapX, keypointId);\n // Only consider parts with score greater or equal to threshold as root candidates.\n if (score < scoreThreshold) continue;\n // Only consider keypoints whose score is maximum in a local window.\n if (scoreIsMaximumInLocalWindow(keypointId, score, heatmapY, heatmapX, localMaximumRadius, scores)) {\n queue.enqueue({ score, part: { heatmapY, heatmapX, id: keypointId } });\n }\n }\n }\n }\n return queue;\n}\n", "import * as keypoints from './keypoints';\nimport * as vectors from './vectors';\nimport * as decoders from './decoders';\n\nconst parentChildrenTuples = keypoints.poseChain.map(([parentJoinName, childJoinName]) => ([keypoints.partIds[parentJoinName], keypoints.partIds[childJoinName]]));\nconst parentToChildEdges = parentChildrenTuples.map(([, childJointId]) => childJointId);\nconst childToParentEdges = parentChildrenTuples.map(([parentJointId]) => parentJointId);\n\nconst defaultOutputStride = 16;\n\nfunction getDisplacement(edgeId, point, displacements) {\n const numEdges = displacements.shape[2] / 2;\n return {\n y: displacements.get(point.y, point.x, edgeId),\n x: displacements.get(point.y, point.x, numEdges + edgeId),\n };\n}\n\nfunction getStridedIndexNearPoint(point, outputStride, height, width) {\n return {\n y: vectors.clamp(Math.round(point.y / outputStride), 0, height - 1),\n x: vectors.clamp(Math.round(point.x / outputStride), 0, width - 1),\n };\n}\n\nfunction traverseToTargetKeypoint(edgeId, sourceKeypoint, targetKeypointId, scoresBuffer, offsets, outputStride, displacements, offsetRefineStep = 2) {\n const [height, width] = scoresBuffer.shape;\n // Nearest neighbor interpolation for the source->target displacements.\n const sourceKeypointIndices = getStridedIndexNearPoint(sourceKeypoint.position, outputStride, height, width);\n const displacement = getDisplacement(edgeId, sourceKeypointIndices, displacements);\n const displacedPoint = vectors.addVectors(sourceKeypoint.position, displacement);\n let targetKeypoint = displacedPoint;\n for (let i = 0; i < offsetRefineStep; i++) {\n const targetKeypointIndices = getStridedIndexNearPoint(targetKeypoint, outputStride, height, width);\n const offsetPoint = vectors.getOffsetPoint(targetKeypointIndices.y, targetKeypointIndices.x, targetKeypointId, offsets);\n targetKeypoint = vectors.addVectors({\n x: targetKeypointIndices.x * outputStride,\n y: targetKeypointIndices.y * outputStride,\n }, { x: offsetPoint.x, y: offsetPoint.y });\n }\n const targetKeyPointIndices = getStridedIndexNearPoint(targetKeypoint, outputStride, height, width);\n const score = scoresBuffer.get(targetKeyPointIndices.y, targetKeyPointIndices.x, targetKeypointId);\n return { position: targetKeypoint, part: keypoints.partNames[targetKeypointId], score };\n}\n\nexport function decodePose(root, scores, offsets, outputStride, displacementsFwd, displacementsBwd) {\n const numParts = scores.shape[2];\n const numEdges = parentToChildEdges.length;\n const instanceKeypoints = new Array(numParts);\n // Start a new detection instance at the position of the root.\n const { part: rootPart, score: rootScore } = root;\n const rootPoint = vectors.getImageCoords(rootPart, outputStride, offsets);\n instanceKeypoints[rootPart.id] = {\n score: rootScore,\n part: keypoints.partNames[rootPart.id],\n position: rootPoint,\n };\n // Decode the part positions upwards in the tree, following the backward displacements.\n for (let edge = numEdges - 1; edge >= 0; --edge) {\n const sourceKeypointId = parentToChildEdges[edge];\n const targetKeypointId = childToParentEdges[edge];\n if (instanceKeypoints[sourceKeypointId] && !instanceKeypoints[targetKeypointId]) {\n instanceKeypoints[targetKeypointId] = traverseToTargetKeypoint(edge, instanceKeypoints[sourceKeypointId], targetKeypointId, scores, offsets, outputStride, displacementsBwd);\n }\n }\n // Decode the part positions downwards in the tree, following the forward displacements.\n for (let edge = 0; edge < numEdges; ++edge) {\n const sourceKeypointId = childToParentEdges[edge];\n const targetKeypointId = parentToChildEdges[edge];\n if (instanceKeypoints[sourceKeypointId] && !instanceKeypoints[targetKeypointId]) {\n instanceKeypoints[targetKeypointId] = traverseToTargetKeypoint(edge, instanceKeypoints[sourceKeypointId], targetKeypointId, scores, offsets, outputStride, displacementsFwd);\n }\n }\n return instanceKeypoints;\n}\n\nexport async function decodeSinglePose(heatmapScores, offsets, minScore) {\n let totalScore = 0.0;\n const heatmapValues = decoders.argmax2d(heatmapScores);\n const allTensorBuffers = await Promise.all([heatmapScores.buffer(), offsets.buffer(), heatmapValues.buffer()]);\n const scoresBuffer = allTensorBuffers[0];\n const offsetsBuffer = allTensorBuffers[1];\n const heatmapValuesBuffer = allTensorBuffers[2];\n const offsetPoints = decoders.getOffsetPoints(heatmapValuesBuffer, defaultOutputStride, offsetsBuffer);\n const offsetPointsBuffer = await offsetPoints.buffer();\n const keypointConfidence = Array.from(decoders.getPointsConfidence(scoresBuffer, heatmapValuesBuffer));\n const instanceKeypoints = keypointConfidence.map((score, i) => {\n totalScore += score;\n return {\n position: {\n y: offsetPointsBuffer.get(i, 0),\n x: offsetPointsBuffer.get(i, 1),\n },\n part: keypoints.partNames[i],\n score,\n };\n });\n const filteredKeypoints = instanceKeypoints.filter((kpt) => kpt.score > minScore);\n heatmapValues.dispose();\n offsetPoints.dispose();\n return { keypoints: filteredKeypoints, score: totalScore / instanceKeypoints.length };\n}\n", "import * as kpt from './keypoints';\n\nexport function getOffsetPoint(y, x, keypoint, offsets) {\n return {\n y: offsets.get(y, x, keypoint),\n x: offsets.get(y, x, keypoint + kpt.NUM_KEYPOINTS),\n };\n}\n\nexport function getImageCoords(part, outputStride, offsets) {\n const { heatmapY, heatmapX, id: keypoint } = part;\n const { y, x } = getOffsetPoint(heatmapY, heatmapX, keypoint, offsets);\n return {\n x: part.heatmapX * outputStride + x,\n y: part.heatmapY * outputStride + y,\n };\n}\n\nexport function fillArray(element, size) {\n const result = new Array(size);\n for (let i = 0; i < size; i++) {\n result[i] = element;\n }\n return result;\n}\n\nexport function clamp(a, min, max) {\n if (a < min) return min;\n if (a > max) return max;\n return a;\n}\n\nexport function squaredDistance(y1, x1, y2, x2) {\n const dy = y2 - y1;\n const dx = x2 - x1;\n return dy * dy + dx * dx;\n}\n\nexport function addVectors(a, b) {\n return { x: a.x + b.x, y: a.y + b.y };\n}\n\nexport function clampVector(a, min, max) {\n return { y: clamp(a.y, min, max), x: clamp(a.x, min, max) };\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\nimport * as kpt from './keypoints';\n\nexport function getPointsConfidence(heatmapScores, heatMapCoords) {\n const numKeypoints = heatMapCoords.shape[0];\n const result = new Float32Array(numKeypoints);\n for (let keypoint = 0; keypoint < numKeypoints; keypoint++) {\n const y = heatMapCoords.get(keypoint, 0);\n const x = heatMapCoords.get(keypoint, 1);\n result[keypoint] = heatmapScores.get(y, x, keypoint);\n }\n return result;\n}\n\nfunction getOffsetPoint(y, x, keypoint, offsetsBuffer) {\n return {\n y: offsetsBuffer.get(y, x, keypoint),\n x: offsetsBuffer.get(y, x, keypoint + kpt.NUM_KEYPOINTS),\n };\n}\n\nexport function getOffsetVectors(heatMapCoordsBuffer, offsetsBuffer) {\n const result: Array = [];\n for (let keypoint = 0; keypoint < kpt.NUM_KEYPOINTS; keypoint++) {\n const heatmapY = heatMapCoordsBuffer.get(keypoint, 0).valueOf();\n const heatmapX = heatMapCoordsBuffer.get(keypoint, 1).valueOf();\n const { x, y } = getOffsetPoint(heatmapY, heatmapX, keypoint, offsetsBuffer);\n result.push(y);\n result.push(x);\n }\n return tf.tensor2d(result, [kpt.NUM_KEYPOINTS, 2]);\n}\n\nexport function getOffsetPoints(heatMapCoordsBuffer, outputStride, offsetsBuffer) {\n return tf.tidy(() => heatMapCoordsBuffer.toTensor().mul(tf.scalar(outputStride, 'int32')).toFloat().add(getOffsetVectors(heatMapCoordsBuffer, offsetsBuffer)));\n}\n\nfunction mod(a, b) {\n return tf.tidy(() => {\n const floored = a.div(tf.scalar(b, 'int32'));\n return a.sub(floored.mul(tf.scalar(b, 'int32')));\n });\n}\n\nexport function argmax2d(inputs) {\n const [height, width, depth] = inputs.shape;\n return tf.tidy(() => {\n const reshaped = inputs.reshape([height * width, depth]);\n const coords = reshaped.argMax(0);\n const yCoords = coords.div(tf.scalar(width, 'int32')).expandDims(1);\n const xCoords = mod(coords, width).expandDims(1);\n return tf.concat([yCoords, xCoords], 1);\n });\n}\n", "import * as buildParts from './buildParts';\nimport * as decodePose from './decodePose';\nimport * as vectors from './vectors';\n\nconst kLocalMaximumRadius = 1;\nconst defaultOutputStride = 16;\n\nfunction withinNmsRadiusOfCorrespondingPoint(poses, squaredNmsRadius, { x, y }, keypointId) {\n return poses.some(({ keypoints }) => {\n const correspondingKeypoint = keypoints[keypointId].position;\n return vectors.squaredDistance(y, x, correspondingKeypoint.y, correspondingKeypoint.x) <= squaredNmsRadius;\n });\n}\n\nfunction getInstanceScore(existingPoses, squaredNmsRadius, instanceKeypoints) {\n const notOverlappedKeypointScores = instanceKeypoints.reduce((result, { position, score }, keypointId) => {\n if (!withinNmsRadiusOfCorrespondingPoint(existingPoses, squaredNmsRadius, position, keypointId)) result += score;\n return result;\n }, 0.0);\n return notOverlappedKeypointScores / instanceKeypoints.length;\n}\n\nexport function decodeMultiplePoses(scoresBuffer, offsetsBuffer, displacementsFwdBuffer, displacementsBwdBuffer, nmsRadius, maxDetections, scoreThreshold) {\n const poses: Array<{ keypoints: any, score: number }> = [];\n const queue = buildParts.buildPartWithScoreQueue(scoreThreshold, kLocalMaximumRadius, scoresBuffer);\n const squaredNmsRadius = nmsRadius ^ 2;\n // Generate at most maxDetections object instances per image in decreasing root part score order.\n while (poses.length < maxDetections && !queue.empty()) {\n // The top element in the queue is the next root candidate.\n const root = queue.dequeue();\n // Part-based non-maximum suppression: We reject a root candidate if it is within a disk of `nmsRadius` pixels from the corresponding part of a previously detected instance.\n const rootImageCoords = vectors.getImageCoords(root.part, defaultOutputStride, offsetsBuffer);\n if (withinNmsRadiusOfCorrespondingPoint(poses, squaredNmsRadius, rootImageCoords, root.part.id)) continue;\n // Else start a new detection instance at the position of the root.\n const keypoints = decodePose.decodePose(root, scoresBuffer, offsetsBuffer, defaultOutputStride, displacementsFwdBuffer, displacementsBwdBuffer);\n const score = getInstanceScore(poses, squaredNmsRadius, keypoints);\n if (score > scoreThreshold) poses.push({ keypoints, score });\n }\n return poses;\n}\n", "import * as kpt from './keypoints';\n\nexport function eitherPointDoesntMeetConfidence(a, b, minConfidence) {\n return (a < minConfidence || b < minConfidence);\n}\n\nexport function getAdjacentKeyPoints(keypoints, minConfidence) {\n return kpt.connectedPartIndices.reduce((result, [leftJoint, rightJoint]) => {\n if (eitherPointDoesntMeetConfidence(keypoints[leftJoint].score, keypoints[rightJoint].score, minConfidence)) {\n return result;\n }\n result.push([keypoints[leftJoint], keypoints[rightJoint]]);\n return result;\n }, []);\n}\n\nconst { NEGATIVE_INFINITY, POSITIVE_INFINITY } = Number;\nexport function getBoundingBox(keypoints) {\n return keypoints.reduce(({ maxX, maxY, minX, minY }, { position: { x, y } }) => ({\n maxX: Math.max(maxX, x),\n maxY: Math.max(maxY, y),\n minX: Math.min(minX, x),\n minY: Math.min(minY, y),\n }), {\n maxX: NEGATIVE_INFINITY,\n maxY: NEGATIVE_INFINITY,\n minX: POSITIVE_INFINITY,\n minY: POSITIVE_INFINITY,\n });\n}\n\nexport function getBoundingBoxPoints(keypoints) {\n const { minX, minY, maxX, maxY } = getBoundingBox(keypoints);\n return [{ x: minX, y: minY }, { x: maxX, y: minY }, { x: maxX, y: maxY }, { x: minX, y: maxY }];\n}\n\nexport async function toTensorBuffers3D(tensors) {\n return Promise.all(tensors.map((tensor) => tensor.buffer()));\n}\n\nexport function scalePose(pose, scaleY, scaleX) {\n return {\n score: pose.score,\n keypoints: pose.keypoints.map(({ score, part, position }) => ({\n score,\n part,\n position: { x: Math.trunc(position.x * scaleX), y: Math.trunc(position.y * scaleY) },\n })),\n };\n}\n\nexport function resizeTo(image, [targetH, targetW]) {\n const input = image.squeeze(0);\n const resized = input.resizeBilinear([targetH, targetW]);\n input.dispose();\n return resized;\n}\n\nexport function scaleAndFlipPoses(poses, [height, width], [inputResolutionHeight, inputResolutionWidth]) {\n const scaledPoses = poses.map((pose) => scalePose(pose, height / inputResolutionHeight, width / inputResolutionWidth));\n return scaledPoses;\n}\n", "// https://storage.googleapis.com/tfjs-models/demos/handpose/index.html\n\nimport { log } from '../helpers';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as handdetector from './handdetector';\nimport * as handpipeline from './handpipeline';\nimport * as anchors from './anchors';\n\nconst MESH_ANNOTATIONS = {\n thumb: [1, 2, 3, 4],\n indexFinger: [5, 6, 7, 8],\n middleFinger: [9, 10, 11, 12],\n ringFinger: [13, 14, 15, 16],\n pinky: [17, 18, 19, 20],\n palmBase: [0],\n};\n\nexport class HandPose {\n handPipeline: any;\n\n constructor(handPipeline) {\n this.handPipeline = handPipeline;\n }\n\n static getAnnotations() {\n return MESH_ANNOTATIONS;\n }\n\n async estimateHands(input, config) {\n const predictions = await this.handPipeline.estimateHands(input, config);\n if (!predictions) return [];\n const hands: Array<{ confidence: number, box: any, boxRaw: any, landmarks: any, annotations: any }> = [];\n for (const prediction of predictions) {\n const annotations = {};\n if (prediction.landmarks) {\n for (const key of Object.keys(MESH_ANNOTATIONS)) {\n annotations[key] = MESH_ANNOTATIONS[key].map((index) => prediction.landmarks[index]);\n }\n }\n const box = prediction.box ? [\n Math.max(0, prediction.box.topLeft[0]),\n Math.max(0, prediction.box.topLeft[1]),\n Math.min(input.shape[2], prediction.box.bottomRight[0]) - Math.max(0, prediction.box.topLeft[0]),\n Math.min(input.shape[1], prediction.box.bottomRight[1]) - Math.max(0, prediction.box.topLeft[1]),\n ] : [];\n const boxRaw = [\n (prediction.box.topLeft[0]) / input.shape[2],\n (prediction.box.topLeft[1]) / input.shape[1],\n (prediction.box.bottomRight[0] - prediction.box.topLeft[0]) / input.shape[2],\n (prediction.box.bottomRight[1] - prediction.box.topLeft[1]) / input.shape[1],\n ];\n hands.push({ confidence: prediction.confidence, box, boxRaw, landmarks: prediction.landmarks, annotations });\n }\n return hands;\n }\n}\n\nexport async function load(config) {\n const [handDetectorModel, handPoseModel] = await Promise.all([\n config.hand.enabled ? tf.loadGraphModel(config.hand.detector.modelPath, { fromTFHub: config.hand.detector.modelPath.includes('tfhub.dev') }) : null,\n config.hand.landmarks ? tf.loadGraphModel(config.hand.skeleton.modelPath, { fromTFHub: config.hand.skeleton.modelPath.includes('tfhub.dev') }) : null,\n ]);\n const handDetector = new handdetector.HandDetector(handDetectorModel, handDetectorModel?.inputs[0].shape[2], anchors.anchors);\n const handPipeline = new handpipeline.HandPipeline(handDetector, handPoseModel, handPoseModel?.inputs[0].shape[2]);\n const handPose = new HandPose(handPipeline);\n if (config.hand.enabled && config.debug) log(`load model: ${config.hand.detector.modelPath.match(/\\/(.*)\\./)[1]}`);\n if (config.hand.landmarks && config.debug) log(`load model: ${config.hand.skeleton.modelPath.match(/\\/(.*)\\./)[1]}`);\n return handPose;\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\nimport * as box from './box';\n\nexport class HandDetector {\n model: any;\n anchors: any;\n anchorsTensor: any;\n inputSize: number;\n inputSizeTensor: any;\n doubleInputSizeTensor: any;\n\n constructor(model, inputSize, anchorsAnnotated) {\n this.model = model;\n this.anchors = anchorsAnnotated.map((anchor) => [anchor.x_center, anchor.y_center]);\n this.anchorsTensor = tf.tensor2d(this.anchors);\n this.inputSize = inputSize;\n this.inputSizeTensor = tf.tensor1d([inputSize, inputSize]);\n this.doubleInputSizeTensor = tf.tensor1d([inputSize * 2, inputSize * 2]);\n }\n\n normalizeBoxes(boxes) {\n return tf.tidy(() => {\n const boxOffsets = tf.slice(boxes, [0, 0], [-1, 2]);\n const boxSizes = tf.slice(boxes, [0, 2], [-1, 2]);\n const boxCenterPoints = tf.add(tf.div(boxOffsets, this.inputSizeTensor), this.anchorsTensor);\n const halfBoxSizes = tf.div(boxSizes, this.doubleInputSizeTensor);\n const startPoints = tf.mul(tf.sub(boxCenterPoints, halfBoxSizes), this.inputSizeTensor);\n const endPoints = tf.mul(tf.add(boxCenterPoints, halfBoxSizes), this.inputSizeTensor);\n return tf.concat2d([startPoints, endPoints], 1);\n });\n }\n\n normalizeLandmarks(rawPalmLandmarks, index) {\n return tf.tidy(() => {\n const landmarks = tf.add(tf.div(rawPalmLandmarks.reshape([-1, 7, 2]), this.inputSizeTensor), this.anchors[index]);\n return tf.mul(landmarks, this.inputSizeTensor);\n });\n }\n\n async getBoxes(input, config) {\n const batched = this.model.predict(input);\n const predictions = batched.squeeze();\n batched.dispose();\n const scoresT = tf.tidy(() => tf.sigmoid(tf.slice(predictions, [0, 0], [-1, 1])).squeeze());\n const scores = scoresT.dataSync();\n const rawBoxes = tf.slice(predictions, [0, 1], [-1, 4]);\n const boxes = this.normalizeBoxes(rawBoxes);\n rawBoxes.dispose();\n const filteredT = await tf.image.nonMaxSuppressionAsync(boxes, scores, config.hand.maxHands, config.hand.iouThreshold, config.hand.scoreThreshold);\n const filtered = filteredT.arraySync();\n\n scoresT.dispose();\n filteredT.dispose();\n const hands: Array<{ box: any, palmLandmarks: any, confidence: number }> = [];\n for (const index of filtered) {\n if (scores[index] >= config.hand.minConfidence) {\n const matchingBox = tf.slice(boxes, [index, 0], [1, -1]);\n const rawPalmLandmarks = tf.slice(predictions, [index, 5], [1, 14]);\n const palmLandmarks = tf.tidy(() => this.normalizeLandmarks(rawPalmLandmarks, index).reshape([-1, 2]));\n rawPalmLandmarks.dispose();\n hands.push({ box: matchingBox, palmLandmarks, confidence: scores[index] });\n }\n }\n predictions.dispose();\n boxes.dispose();\n return hands;\n }\n\n async estimateHandBounds(input, config) {\n const inputHeight = input.shape[1];\n const inputWidth = input.shape[2];\n const image = tf.tidy(() => input.resizeBilinear([this.inputSize, this.inputSize]).div(127.5).sub(1));\n const predictions = await this.getBoxes(image, config);\n image.dispose();\n const hands: Array<{}> = [];\n if (!predictions || predictions.length === 0) return hands;\n for (const prediction of predictions) {\n const boxes = prediction.box.dataSync();\n const startPoint = boxes.slice(0, 2);\n const endPoint = boxes.slice(2, 4);\n const palmLandmarks = prediction.palmLandmarks.arraySync();\n prediction.box.dispose();\n prediction.palmLandmarks.dispose();\n hands.push(box.scaleBoxCoordinates({ startPoint, endPoint, palmLandmarks, confidence: prediction.confidence }, [inputWidth / this.inputSize, inputHeight / this.inputSize]));\n }\n return hands;\n }\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nexport function getBoxSize(box) {\n return [\n Math.abs(box.endPoint[0] - box.startPoint[0]),\n Math.abs(box.endPoint[1] - box.startPoint[1]),\n ];\n}\n\nexport function getBoxCenter(box) {\n return [\n box.startPoint[0] + (box.endPoint[0] - box.startPoint[0]) / 2,\n box.startPoint[1] + (box.endPoint[1] - box.startPoint[1]) / 2,\n ];\n}\n\nexport function cutBoxFromImageAndResize(box, image, cropSize) {\n const h = image.shape[1];\n const w = image.shape[2];\n const boxes = [[\n box.startPoint[1] / h,\n box.startPoint[0] / w,\n box.endPoint[1] / h,\n box.endPoint[0] / w,\n ]];\n return tf.image.cropAndResize(image, boxes, [0], cropSize);\n}\n\nexport function scaleBoxCoordinates(box, factor) {\n const startPoint = [box.startPoint[0] * factor[0], box.startPoint[1] * factor[1]];\n const endPoint = [box.endPoint[0] * factor[0], box.endPoint[1] * factor[1]];\n const palmLandmarks = box.palmLandmarks.map((coord) => {\n const scaledCoord = [coord[0] * factor[0], coord[1] * factor[1]];\n return scaledCoord;\n });\n return { startPoint, endPoint, palmLandmarks, confidence: box.confidence };\n}\n\nexport function enlargeBox(box, factor = 1.5) {\n const center = getBoxCenter(box);\n const size = getBoxSize(box);\n const newHalfSize = [factor * size[0] / 2, factor * size[1] / 2];\n const startPoint = [center[0] - newHalfSize[0], center[1] - newHalfSize[1]];\n const endPoint = [center[0] + newHalfSize[0], center[1] + newHalfSize[1]];\n return { startPoint, endPoint, palmLandmarks: box.palmLandmarks };\n}\n\nexport function squarifyBox(box) {\n const centers = getBoxCenter(box);\n const size = getBoxSize(box);\n const maxEdge = Math.max(...size);\n const halfSize = maxEdge / 2;\n const startPoint = [centers[0] - halfSize, centers[1] - halfSize];\n const endPoint = [centers[0] + halfSize, centers[1] + halfSize];\n return { startPoint, endPoint, palmLandmarks: box.palmLandmarks };\n}\n\nexport function shiftBox(box, shiftFactor) {\n const boxSize = [\n box.endPoint[0] - box.startPoint[0],\n box.endPoint[1] - box.startPoint[1],\n ];\n const shiftVector = [boxSize[0] * shiftFactor[0], boxSize[1] * shiftFactor[1]];\n const startPoint = [box.startPoint[0] + shiftVector[0], box.startPoint[1] + shiftVector[1]];\n const endPoint = [box.endPoint[0] + shiftVector[0], box.endPoint[1] + shiftVector[1]];\n return { startPoint, endPoint, palmLandmarks: box.palmLandmarks };\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\nimport * as box from './box';\nimport * as util from './util';\n\n// const PALM_BOX_SHIFT_VECTOR = [0, -0.4];\nconst PALM_BOX_ENLARGE_FACTOR = 5; // default 3\n// const HAND_BOX_SHIFT_VECTOR = [0, -0.1]; // move detected hand box by x,y to ease landmark detection\nconst HAND_BOX_ENLARGE_FACTOR = 1.65; // default 1.65\nconst PALM_LANDMARK_IDS = [0, 5, 9, 13, 17, 1, 2];\nconst PALM_LANDMARKS_INDEX_OF_PALM_BASE = 0;\nconst PALM_LANDMARKS_INDEX_OF_MIDDLE_FINGER_BASE = 2;\n\nexport class HandPipeline {\n handDetector: any;\n landmarkDetector: any;\n inputSize: number;\n storedBoxes: any;\n skipped: number;\n detectedHands: number;\n\n constructor(handDetector, landmarkDetector, inputSize) {\n this.handDetector = handDetector;\n this.landmarkDetector = landmarkDetector;\n this.inputSize = inputSize;\n this.storedBoxes = [];\n this.skipped = 0;\n this.detectedHands = 0;\n }\n\n getBoxForPalmLandmarks(palmLandmarks, rotationMatrix) {\n const rotatedPalmLandmarks = palmLandmarks.map((coord) => util.rotatePoint([...coord, 1], rotationMatrix));\n const boxAroundPalm = this.calculateLandmarksBoundingBox(rotatedPalmLandmarks);\n // return box.enlargeBox(box.squarifyBox(box.shiftBox(boxAroundPalm, PALM_BOX_SHIFT_VECTOR)), PALM_BOX_ENLARGE_FACTOR);\n return box.enlargeBox(box.squarifyBox(boxAroundPalm), PALM_BOX_ENLARGE_FACTOR);\n }\n\n getBoxForHandLandmarks(landmarks) {\n const boundingBox = this.calculateLandmarksBoundingBox(landmarks);\n // const boxAroundHand = box.enlargeBox(box.squarifyBox(box.shiftBox(boundingBox, HAND_BOX_SHIFT_VECTOR)), HAND_BOX_ENLARGE_FACTOR);\n const boxAroundHand = box.enlargeBox(box.squarifyBox(boundingBox), HAND_BOX_ENLARGE_FACTOR);\n boxAroundHand.palmLandmarks = [];\n for (let i = 0; i < PALM_LANDMARK_IDS.length; i++) {\n boxAroundHand.palmLandmarks.push(landmarks[PALM_LANDMARK_IDS[i]].slice(0, 2));\n }\n return boxAroundHand;\n }\n\n transformRawCoords(rawCoords, box2, angle, rotationMatrix) {\n const boxSize = box.getBoxSize(box2);\n const scaleFactor = [boxSize[0] / this.inputSize, boxSize[1] / this.inputSize, (boxSize[0] + boxSize[1]) / this.inputSize / 2];\n const coordsScaled = rawCoords.map((coord) => [\n scaleFactor[0] * (coord[0] - this.inputSize / 2),\n scaleFactor[1] * (coord[1] - this.inputSize / 2),\n scaleFactor[2] * coord[2],\n ]);\n const coordsRotationMatrix = util.buildRotationMatrix(angle, [0, 0]);\n const coordsRotated = coordsScaled.map((coord) => {\n const rotated = util.rotatePoint(coord, coordsRotationMatrix);\n return [...rotated, coord[2]];\n });\n const inverseRotationMatrix = util.invertTransformMatrix(rotationMatrix);\n const boxCenter = [...box.getBoxCenter(box2), 1];\n const originalBoxCenter = [\n util.dot(boxCenter, inverseRotationMatrix[0]),\n util.dot(boxCenter, inverseRotationMatrix[1]),\n ];\n return coordsRotated.map((coord) => [\n coord[0] + originalBoxCenter[0],\n coord[1] + originalBoxCenter[1],\n coord[2],\n ]);\n }\n\n async estimateHands(image, config) {\n let useFreshBox = false;\n\n // run new detector every skipFrames unless we only want box to start with\n let boxes;\n if ((this.skipped === 0) || (this.skipped > config.hand.skipFrames) || !config.hand.landmarks || !config.videoOptimized) {\n boxes = await this.handDetector.estimateHandBounds(image, config);\n this.skipped = 0;\n }\n if (config.videoOptimized) this.skipped++;\n\n // if detector result count doesn't match current working set, use it to reset current working set\n if (boxes && (boxes.length > 0) && ((boxes.length !== this.detectedHands) && (this.detectedHands !== config.hand.maxHands) || !config.hand.landmarks)) {\n this.detectedHands = 0;\n this.storedBoxes = [...boxes];\n // for (const possible of boxes) this.storedBoxes.push(possible);\n if (this.storedBoxes.length > 0) useFreshBox = true;\n }\n const hands: Array<{}> = [];\n\n if (config.hand.skipInitial && this.detectedHands === 0) this.skipped = 0;\n\n // go through working set of boxes\n for (let i = 0; i < this.storedBoxes.length; i++) {\n const currentBox = this.storedBoxes[i];\n if (!currentBox) continue;\n if (config.hand.landmarks) {\n const angle = config.hand.rotation ? util.computeRotation(currentBox.palmLandmarks[PALM_LANDMARKS_INDEX_OF_PALM_BASE], currentBox.palmLandmarks[PALM_LANDMARKS_INDEX_OF_MIDDLE_FINGER_BASE]) : 0;\n const palmCenter = box.getBoxCenter(currentBox);\n const palmCenterNormalized = [palmCenter[0] / image.shape[2], palmCenter[1] / image.shape[1]];\n const rotatedImage = config.hand.rotation ? tf.image.rotateWithOffset(image, angle, 0, palmCenterNormalized) : image.clone();\n const rotationMatrix = util.buildRotationMatrix(-angle, palmCenter);\n const newBox = useFreshBox ? this.getBoxForPalmLandmarks(currentBox.palmLandmarks, rotationMatrix) : currentBox;\n const croppedInput = box.cutBoxFromImageAndResize(newBox, rotatedImage, [this.inputSize, this.inputSize]);\n const handImage = croppedInput.div(255);\n croppedInput.dispose();\n rotatedImage.dispose();\n const [confidenceT, keypoints] = await this.landmarkDetector.predict(handImage);\n handImage.dispose();\n const confidence = confidenceT.dataSync()[0];\n confidenceT.dispose();\n if (confidence >= config.hand.minConfidence) {\n const keypointsReshaped = tf.reshape(keypoints, [-1, 3]);\n const rawCoords = keypointsReshaped.arraySync();\n keypoints.dispose();\n keypointsReshaped.dispose();\n const coords = this.transformRawCoords(rawCoords, newBox, angle, rotationMatrix);\n const nextBoundingBox = this.getBoxForHandLandmarks(coords);\n this.storedBoxes[i] = nextBoundingBox;\n const result = {\n landmarks: coords,\n confidence,\n box: { topLeft: nextBoundingBox.startPoint, bottomRight: nextBoundingBox.endPoint },\n };\n hands.push(result);\n } else {\n this.storedBoxes[i] = null;\n }\n keypoints.dispose();\n } else {\n // const enlarged = box.enlargeBox(box.squarifyBox(box.shiftBox(currentBox, HAND_BOX_SHIFT_VECTOR)), HAND_BOX_ENLARGE_FACTOR);\n const enlarged = box.enlargeBox(box.squarifyBox(currentBox), HAND_BOX_ENLARGE_FACTOR);\n const result = {\n confidence: currentBox.confidence,\n box: { topLeft: enlarged.startPoint, bottomRight: enlarged.endPoint },\n };\n hands.push(result);\n }\n }\n this.storedBoxes = this.storedBoxes.filter((a) => a !== null);\n this.detectedHands = hands.length;\n return hands;\n }\n\n // eslint-disable-next-line class-methods-use-this\n calculateLandmarksBoundingBox(landmarks) {\n const xs = landmarks.map((d) => d[0]);\n const ys = landmarks.map((d) => d[1]);\n const startPoint = [Math.min(...xs), Math.min(...ys)];\n const endPoint = [Math.max(...xs), Math.max(...ys)];\n return { startPoint, endPoint };\n }\n}\n", "export function normalizeRadians(angle) {\n return angle - 2 * Math.PI * Math.floor((angle + Math.PI) / (2 * Math.PI));\n}\n\nexport function computeRotation(point1, point2) {\n const radians = Math.PI / 2 - Math.atan2(-(point2[1] - point1[1]), point2[0] - point1[0]);\n return normalizeRadians(radians);\n}\n\nexport const buildTranslationMatrix = (x, y) => [[1, 0, x], [0, 1, y], [0, 0, 1]];\n\nexport function dot(v1, v2) {\n let product = 0;\n for (let i = 0; i < v1.length; i++) {\n product += v1[i] * v2[i];\n }\n return product;\n}\n\nexport function getColumnFrom2DArr(arr, columnIndex) {\n const column: Array = [];\n for (let i = 0; i < arr.length; i++) {\n column.push(arr[i][columnIndex]);\n }\n return column;\n}\n\nexport function multiplyTransformMatrices(mat1, mat2) {\n const product: Array = [];\n const size = mat1.length;\n for (let row = 0; row < size; row++) {\n product.push([]);\n for (let col = 0; col < size; col++) {\n product[row].push(dot(mat1[row], getColumnFrom2DArr(mat2, col)));\n }\n }\n return product;\n}\n\nexport function buildRotationMatrix(rotation, center) {\n const cosA = Math.cos(rotation);\n const sinA = Math.sin(rotation);\n const rotationMatrix = [[cosA, -sinA, 0], [sinA, cosA, 0], [0, 0, 1]];\n const translationMatrix = buildTranslationMatrix(center[0], center[1]);\n const translationTimesRotation = multiplyTransformMatrices(translationMatrix, rotationMatrix);\n const negativeTranslationMatrix = buildTranslationMatrix(-center[0], -center[1]);\n return multiplyTransformMatrices(translationTimesRotation, negativeTranslationMatrix);\n}\n\nexport function invertTransformMatrix(matrix) {\n const rotationComponent = [[matrix[0][0], matrix[1][0]], [matrix[0][1], matrix[1][1]]];\n const translationComponent = [matrix[0][2], matrix[1][2]];\n const invertedTranslation = [\n -dot(rotationComponent[0], translationComponent),\n -dot(rotationComponent[1], translationComponent),\n ];\n return [\n rotationComponent[0].concat(invertedTranslation[0]),\n rotationComponent[1].concat(invertedTranslation[1]),\n [0, 0, 1],\n ];\n}\n\nexport function rotatePoint(homogeneousCoordinate, rotationMatrix) {\n return [\n dot(homogeneousCoordinate, rotationMatrix[0]),\n dot(homogeneousCoordinate, rotationMatrix[1]),\n ];\n}\n", "export const anchors = [\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n];\n", "import { log } from '../helpers';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile';\nimport * as annotations from './annotations';\n\nlet model;\n\nexport async function load(config) {\n if (!model) {\n model = await tf.loadGraphModel(config.body.modelPath);\n model.width = parseInt(model.signature.inputs['input_1:0'].tensorShape.dim[2].size);\n model.height = parseInt(model.signature.inputs['input_1:0'].tensorShape.dim[1].size);\n if (config.debug) log(`load model: ${config.body.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return model;\n}\n\nexport async function predict(image, config) {\n if (!model) return null;\n if (!config.body.enabled) return null;\n const imgSize = { width: image.shape[2], height: image.shape[1] };\n const resize = tf.image.resizeBilinear(image, [model.width, model.height], false);\n const normalize = tf.div(resize, [255.0]);\n resize.dispose();\n let points;\n if (!config.profile) { // run through profiler or just execute\n const resT = await model.predict(normalize);\n // const segmentationT = resT.find((t) => (t.size === 16384))?.squeeze();\n // const segmentation = segmentationT.arraySync(); // array 128 x 128\n // segmentationT.dispose();\n points = resT.find((t) => (t.size === 195 || t.size === 155)).dataSync(); // order of output tensors may change between models, full has 195 and upper has 155 items\n resT.forEach((t) => t.dispose());\n } else {\n const profileData = await tf.profile(() => model.predict(normalize));\n points = profileData.result.find((t) => (t.size === 195 || t.size === 155)).dataSync();\n profileData.result.forEach((t) => t.dispose());\n profile.run('blazepose', profileData);\n }\n normalize.dispose();\n const keypoints: Array<{ id, part, position: { x, y, z }, score, presence }> = [];\n const labels = points.length === 195 ? annotations.full : annotations.upper; // full model has 39 keypoints, upper has 31 keypoints\n const depth = 5; // each points has x,y,z,visibility,presence\n for (let i = 0; i < points.length / depth; i++) {\n keypoints.push({\n id: i,\n part: labels[i],\n position: {\n x: Math.trunc(imgSize.width * points[depth * i + 0] / 255), // return normalized x value istead of 0..255\n y: Math.trunc(imgSize.height * points[depth * i + 1] / 255), // return normalized y value istead of 0..255\n z: Math.trunc(points[depth * i + 2]) + 0, // fix negative zero\n },\n score: (100 - Math.trunc(100 / (1 + Math.exp(points[depth * i + 3])))) / 100, // reverse sigmoid value\n presence: (100 - Math.trunc(100 / (1 + Math.exp(points[depth * i + 4])))) / 100, // reverse sigmoid value\n });\n }\n return [{ keypoints }];\n}\n", "export const full = [\n 'nose',\n 'leftEyeInside',\n 'leftEye',\n 'leftEyeOutside',\n 'rightEyeInside',\n 'rightEye',\n 'rightEyeOutside',\n 'leftEar',\n 'rightEar',\n 'leftMouth',\n 'rightMouth',\n 'leftShoulder',\n 'rightShoulder',\n 'leftElbow',\n 'rightElbow',\n 'leftWrist',\n 'rightWrist',\n 'leftPalm',\n 'rightPalm',\n 'leftIndex',\n 'rightIndex',\n 'leftPinky',\n 'rightPinky',\n 'leftHip',\n 'rightHip',\n 'leftKnee',\n 'rightKnee',\n 'leftAnkle',\n 'rightAnkle',\n 'leftHeel',\n 'rightHeel',\n 'leftFoot',\n 'rightFoot',\n 'midHip',\n 'forehead',\n 'leftThumb',\n 'leftHand',\n 'rightThumb',\n 'rightHand',\n];\n\nexport const upper = [\n 'nose',\n 'leftEyeInside',\n 'leftEye',\n 'leftEyeOutside',\n 'rightEyeInside',\n 'rightEye',\n 'rightEyeOutside',\n 'leftEar',\n 'rightEar',\n 'leftMouth',\n 'rightMouth',\n 'leftShoulder',\n 'rightShoulder',\n 'leftElbow',\n 'rightElbow',\n 'left:15',\n 'right:16',\n 'left:17',\n 'right:18',\n 'left:19',\n 'right:20',\n 'left:21',\n 'right:22',\n 'leftChest',\n 'rightChest',\n 'neck',\n 'forehead',\n 'left:27',\n 'right:28',\n 'left:29',\n 'right:30',\n];\n", "import { log } from '../helpers';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile';\nimport { labels } from './labels';\n\nlet model;\nlet last: Array<{}> = [];\nlet skipped = Number.MAX_SAFE_INTEGER;\n\nconst scaleBox = 2.5; // increase box size\nconst activateScore = false;\n\nexport async function load(config) {\n if (!model) {\n model = await tf.loadGraphModel(config.object.modelPath);\n // @ts-ignore\n model.inputSize = parseInt(Object.values(model.modelSignature['inputs'])[0].tensorShape.dim[2].size);\n if (config.debug) log(`load model: ${config.object.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return model;\n}\n\nasync function process(res, inputSize, outputShape, config) {\n let id = 0;\n let results: Array<{ score: number, strideSize: number, class: number, label: string, center: number[], centerRaw: number[], box: number[], boxRaw: number[] }> = [];\n for (const strideSize of [1, 2, 4]) { // try each stride size as it detects large/medium/small objects\n // find scores, boxes, classes\n tf.tidy(() => { // wrap in tidy to automatically deallocate temp tensors\n const baseSize = strideSize * 13; // 13x13=169, 26x26=676, 52x52=2704\n // find boxes and scores output depending on stride\n const scoresT = res.find((a) => (a.shape[1] === (baseSize ** 2) && a.shape[2] === 80))?.squeeze();\n const featuresT = res.find((a) => (a.shape[1] === (baseSize ** 2) && a.shape[2] < 80))?.squeeze();\n const boxesMax = featuresT.reshape([-1, 4, featuresT.shape[1] / 4]); // reshape [output] to [4, output / 4] where number is number of different features inside each stride\n const boxIdx = boxesMax.argMax(2).arraySync(); // what we need is indexes of features with highest scores, not values itself\n const scores = activateScore ? scoresT.exp(1).arraySync() : scoresT.arraySync(); // optionally use exponential scores or just as-is\n for (let i = 0; i < scoresT.shape[0]; i++) { // total strides (x * y matrix)\n for (let j = 0; j < scoresT.shape[1]; j++) { // one score for each class\n const score = scores[i][j] - (activateScore ? 1 : 0); // get score for current position\n if (score > config.object.minConfidence) {\n const cx = (0.5 + Math.trunc(i % baseSize)) / baseSize; // center.x normalized to range 0..1\n const cy = (0.5 + Math.trunc(i / baseSize)) / baseSize; // center.y normalized to range 0..1\n const boxOffset = boxIdx[i].map((a) => a * (baseSize / strideSize / inputSize)); // just grab indexes of features with highest scores\n let boxRaw = [ // results normalized to range 0..1\n cx - (scaleBox / strideSize * boxOffset[0]),\n cy - (scaleBox / strideSize * boxOffset[1]),\n cx + (scaleBox / strideSize * boxOffset[2]),\n cy + (scaleBox / strideSize * boxOffset[3]),\n ];\n boxRaw = boxRaw.map((a) => Math.max(0, Math.min(a, 1))); // fix out-of-bounds coords\n const box = [ // results normalized to input image pixels\n boxRaw[0] * outputShape[0],\n boxRaw[1] * outputShape[1],\n boxRaw[2] * outputShape[0],\n boxRaw[3] * outputShape[1],\n ];\n const result = {\n id: id++,\n strideSize,\n score,\n class: j + 1,\n label: labels[j].label,\n center: [Math.trunc(outputShape[0] * cx), Math.trunc(outputShape[1] * cy)],\n centerRaw: [cx, cy],\n box: box.map((a) => Math.trunc(a)),\n boxRaw,\n };\n results.push(result);\n }\n }\n }\n });\n }\n // deallocate tensors\n res.forEach((t) => tf.dispose(t));\n\n // normally nms is run on raw results, but since boxes need to be calculated this way we skip calulcation of\n // unnecessary boxes and run nms only on good candidates (basically it just does IOU analysis as scores are already filtered)\n const nmsBoxes = results.map((a) => a.boxRaw);\n const nmsScores = results.map((a) => a.score);\n const nms = await tf.image.nonMaxSuppressionAsync(nmsBoxes, nmsScores, config.object.maxResults, config.object.iouThreshold, config.object.minConfidence);\n const nmsIdx = nms.dataSync();\n tf.dispose(nms);\n\n // filter & sort results\n results = results\n .filter((a, idx) => nmsIdx.includes(idx))\n // @ts-ignore\n .sort((a, b) => (b.score - a.score));\n\n return results;\n}\n\nexport async function predict(image, config) {\n if (!model) return null;\n // console.log(skipped, config.object.skipFrames, config.videoOptimized, ((skipped < config.object.skipFrames) && config.videoOptimized && (last.length > 0)));\n if ((skipped < config.object.skipFrames) && config.videoOptimized && (last.length > 0)) {\n skipped++;\n return last;\n }\n if (config.videoOptimized) skipped = 0;\n else skipped = Number.MAX_SAFE_INTEGER;\n return new Promise(async (resolve) => {\n const outputSize = [image.shape[2], image.shape[1]];\n const resize = tf.image.resizeBilinear(image, [model.inputSize, model.inputSize], false);\n const norm = resize.div(255);\n resize.dispose();\n const transpose = norm.transpose([0, 3, 1, 2]);\n norm.dispose();\n\n let objectT;\n if (!config.profile) {\n if (config.object.enabled) objectT = await model.predict(transpose);\n } else {\n const profileObject = config.object.enabled ? await tf.profile(() => model.predict(transpose)) : {};\n objectT = profileObject.result.clone();\n profileObject.result.dispose();\n profile.run('object', profileObject);\n }\n transpose.dispose();\n\n const obj = await process(objectT, model.inputSize, outputSize, config);\n last = obj;\n resolve(obj);\n });\n}\n", "export const labels = [\n { class: 1, label: 'person' },\n { class: 2, label: 'bicycle' },\n { class: 3, label: 'car' },\n { class: 4, label: 'motorcycle' },\n { class: 5, label: 'airplane' },\n { class: 6, label: 'bus' },\n { class: 7, label: 'train' },\n { class: 8, label: 'truck' },\n { class: 9, label: 'boat' },\n { class: 10, label: 'traffic light' },\n { class: 11, label: 'fire hydrant' },\n { class: 12, label: 'stop sign' },\n { class: 13, label: 'parking meter' },\n { class: 14, label: 'bench' },\n { class: 15, label: 'bird' },\n { class: 16, label: 'cat' },\n { class: 17, label: 'dog' },\n { class: 18, label: 'horse' },\n { class: 19, label: 'sheep' },\n { class: 20, label: 'cow' },\n { class: 21, label: 'elephant' },\n { class: 22, label: 'bear' },\n { class: 23, label: 'zebra' },\n { class: 24, label: 'giraffe' },\n { class: 25, label: 'backpack' },\n { class: 26, label: 'umbrella' },\n { class: 27, label: 'handbag' },\n { class: 28, label: 'tie' },\n { class: 29, label: 'suitcase' },\n { class: 30, label: 'frisbee' },\n { class: 31, label: 'skis' },\n { class: 32, label: 'snowboard' },\n { class: 33, label: 'sports ball' },\n { class: 34, label: 'kite' },\n { class: 35, label: 'baseball bat' },\n { class: 36, label: 'baseball glove' },\n { class: 37, label: 'skateboard' },\n { class: 38, label: 'surfboard' },\n { class: 39, label: 'tennis racket' },\n { class: 40, label: 'bottle' },\n { class: 41, label: 'wine glass' },\n { class: 42, label: 'cup' },\n { class: 43, label: 'fork' },\n { class: 44, label: 'knife' },\n { class: 45, label: 'spoon' },\n { class: 46, label: 'bowl' },\n { class: 47, label: 'banana' },\n { class: 48, label: 'apple' },\n { class: 49, label: 'sandwich' },\n { class: 50, label: 'orange' },\n { class: 51, label: 'broccoli' },\n { class: 52, label: 'carrot' },\n { class: 53, label: 'hot dog' },\n { class: 54, label: 'pizza' },\n { class: 55, label: 'donut' },\n { class: 56, label: 'cake' },\n { class: 57, label: 'chair' },\n { class: 58, label: 'couch' },\n { class: 59, label: 'potted plant' },\n { class: 60, label: 'bed' },\n { class: 61, label: 'dining table' },\n { class: 62, label: 'toilet' },\n { class: 63, label: 'tv' },\n { class: 64, label: 'laptop' },\n { class: 65, label: 'mouse' },\n { class: 66, label: 'remote' },\n { class: 67, label: 'keyboard' },\n { class: 68, label: 'cell phone' },\n { class: 69, label: 'microwave' },\n { class: 70, label: 'oven' },\n { class: 71, label: 'toaster' },\n { class: 72, label: 'sink' },\n { class: 73, label: 'refrigerator' },\n { class: 74, label: 'book' },\n { class: 75, label: 'clock' },\n { class: 76, label: 'vase' },\n { class: 77, label: 'scissors' },\n { class: 78, label: 'teddy bear' },\n { class: 79, label: 'hair drier' },\n { class: 80, label: 'toothbrush' },\n];\n", "export const body = (res) => {\n if (!res) return [];\n const gestures: Array<{ body: number, gesture: string }> = [];\n for (let i = 0; i < res.length; i++) {\n // raising hands\n const leftWrist = res[i].keypoints.find((a) => (a.part === 'leftWrist'));\n const rightWrist = res[i].keypoints.find((a) => (a.part === 'rightWrist'));\n const nose = res[i].keypoints.find((a) => (a.part === 'nose'));\n if (nose && leftWrist && rightWrist && (leftWrist.position.y < nose.position.y) && (rightWrist.position.y < nose.position.y)) gestures.push({ body: i, gesture: 'i give up' });\n else if (nose && leftWrist && (leftWrist.position.y < nose.position.y)) gestures.push({ body: i, gesture: 'raise left hand' });\n else if (nose && rightWrist && (rightWrist.position.y < nose.position.y)) gestures.push({ body: i, gesture: 'raise right hand' });\n\n // leaning\n const leftShoulder = res[i].keypoints.find((a) => (a.part === 'leftShoulder'));\n const rightShoulder = res[i].keypoints.find((a) => (a.part === 'rightShoulder'));\n if (leftShoulder && rightShoulder) gestures.push({ body: i, gesture: `leaning ${(leftShoulder.position.y > rightShoulder.position.y) ? 'left' : 'right'}` });\n }\n return gestures;\n};\n\nexport const face = (res) => {\n if (!res) return [];\n const gestures: Array<{ face: number, gesture: string }> = [];\n for (let i = 0; i < res.length; i++) {\n if (res[i].mesh && res[i].mesh.length > 0) {\n const eyeFacing = res[i].mesh[33][2] - res[i].mesh[263][2];\n if (Math.abs(eyeFacing) < 10) gestures.push({ face: i, gesture: 'facing camera' });\n else gestures.push({ face: i, gesture: `facing ${eyeFacing < 0 ? 'right' : 'left'}` });\n const openLeft = Math.abs(res[i].mesh[374][1] - res[i].mesh[386][1]) / Math.abs(res[i].mesh[443][1] - res[i].mesh[450][1]); // center of eye inner lid y coord div center of wider eye border y coord\n if (openLeft < 0.2) gestures.push({ face: i, gesture: 'blink left eye' });\n const openRight = Math.abs(res[i].mesh[145][1] - res[i].mesh[159][1]) / Math.abs(res[i].mesh[223][1] - res[i].mesh[230][1]); // center of eye inner lid y coord div center of wider eye border y coord\n if (openRight < 0.2) gestures.push({ face: i, gesture: 'blink right eye' });\n const mouthOpen = Math.min(100, 500 * Math.abs(res[i].mesh[13][1] - res[i].mesh[14][1]) / Math.abs(res[i].mesh[10][1] - res[i].mesh[152][1]));\n if (mouthOpen > 10) gestures.push({ face: i, gesture: `mouth ${Math.trunc(mouthOpen)}% open` });\n const chinDepth = res[i].mesh[152][2];\n if (Math.abs(chinDepth) > 10) gestures.push({ face: i, gesture: `head ${chinDepth < 0 ? 'up' : 'down'}` });\n }\n }\n return gestures;\n};\n\nexport const iris = (res) => {\n if (!res) return [];\n const gestures: Array<{ iris: number, gesture: string }> = [];\n for (let i = 0; i < res.length; i++) {\n if (!res[i].annotations || !res[i].annotations.leftEyeIris || !res[i].annotations.rightEyeIris) continue;\n const sizeXLeft = res[i].annotations.leftEyeIris[3][0] - res[i].annotations.leftEyeIris[1][0];\n const sizeYLeft = res[i].annotations.leftEyeIris[4][1] - res[i].annotations.leftEyeIris[2][1];\n const areaLeft = Math.abs(sizeXLeft * sizeYLeft);\n\n const sizeXRight = res[i].annotations.rightEyeIris[3][0] - res[i].annotations.rightEyeIris[1][0];\n const sizeYRight = res[i].annotations.rightEyeIris[4][1] - res[i].annotations.rightEyeIris[2][1];\n const areaRight = Math.abs(sizeXRight * sizeYRight);\n\n const difference = Math.abs(areaLeft - areaRight) / Math.max(areaLeft, areaRight);\n if (difference < 0.25) gestures.push({ iris: i, gesture: 'looking at camera' });\n }\n return gestures;\n};\n\nexport const hand = (res) => {\n if (!res) return [];\n const gestures: Array<{ hand: number, gesture: string }> = [];\n for (let i = 0; i < res.length; i++) {\n const fingers: Array<{ name: string, position: number }> = [];\n for (const [finger, pos] of Object.entries(res[i]['annotations'])) {\n // @ts-ignore\n if (finger !== 'palmBase') fingers.push({ name: finger.toLowerCase(), position: pos[0] }); // get tip of each finger\n }\n if (fingers && fingers.length > 0) {\n const closest = fingers.reduce((best, a) => (best.position[2] < a.position[2] ? best : a));\n const highest = fingers.reduce((best, a) => (best.position[1] < a.position[1] ? best : a));\n gestures.push({ hand: i, gesture: `${closest.name} forward ${highest.name} up` });\n }\n }\n return gestures;\n};\n", "// @ts-nocheck\n\nimport { log } from '../helpers';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as fxImage from './imagefx';\n\nconst maxSize = 2048;\n// internal temp canvases\nlet inCanvas = null;\nlet outCanvas = null;\n// instance of fximage\nlet fx = null;\n\n// process input image and return tensor\n// input can be tensor, imagedata, htmlimageelement, htmlvideoelement\n// input is resized and run through imagefx filter\nexport function process(input, config): { tensor: tf.Tensor, canvas: OffscreenCanvas | HTMLCanvasElement } {\n let tensor;\n if (input instanceof tf.Tensor) {\n tensor = tf.clone(input);\n } else {\n const originalWidth = input.naturalWidth || input.videoWidth || input.width || (input.shape && (input.shape[1] > 0));\n const originalHeight = input.naturalHeight || input.videoHeight || input.height || (input.shape && (input.shape[2] > 0));\n let targetWidth = originalWidth;\n let targetHeight = originalHeight;\n if (targetWidth > maxSize) {\n targetWidth = maxSize;\n targetHeight = targetWidth * originalHeight / originalWidth;\n }\n if (targetHeight > maxSize) {\n targetHeight = maxSize;\n targetWidth = targetHeight * originalWidth / originalHeight;\n }\n if (config.filter.width > 0) targetWidth = config.filter.width;\n else if (config.filter.height > 0) targetWidth = originalWidth * (config.filter.height / originalHeight);\n if (config.filter.height > 0) targetHeight = config.filter.height;\n else if (config.filter.width > 0) targetHeight = originalHeight * (config.filter.width / originalWidth);\n if (!targetWidth || !targetHeight) {\n log('Human: invalid input', input);\n return { tensor: null, canvas: null };\n }\n if (!inCanvas || (inCanvas.width !== targetWidth) || (inCanvas.height !== targetHeight)) {\n inCanvas = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(targetWidth, targetHeight) : document.createElement('canvas');\n if (inCanvas.width !== targetWidth) inCanvas.width = targetWidth;\n if (inCanvas.height !== targetHeight) inCanvas.height = targetHeight;\n }\n const ctx = inCanvas.getContext('2d');\n if (input instanceof ImageData) ctx.putImageData(input, 0, 0);\n else ctx.drawImage(input, 0, 0, originalWidth, originalHeight, 0, 0, inCanvas.width, inCanvas.height);\n if (config.filter.enabled) {\n if (!fx || !outCanvas || (inCanvas.width !== outCanvas.width) || (inCanvas.height !== outCanvas.height)) {\n outCanvas = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(inCanvas.width, inCanvas.height) : document.createElement('canvas');\n if (outCanvas.width !== inCanvas.width) outCanvas.width = inCanvas.width;\n if (outCanvas.height !== inCanvas.height) outCanvas.height = inCanvas.height;\n // log('created FX filter');\n fx = tf.ENV.flags.IS_BROWSER ? new fxImage.GLImageFilter({ canvas: outCanvas }) : null; // && (typeof document !== 'undefined')\n }\n if (!fx) return { tensor: null, canvas: inCanvas };\n fx.reset();\n fx.addFilter('brightness', config.filter.brightness); // must have at least one filter enabled\n if (config.filter.contrast !== 0) fx.addFilter('contrast', config.filter.contrast);\n if (config.filter.sharpness !== 0) fx.addFilter('sharpen', config.filter.sharpness);\n if (config.filter.blur !== 0) fx.addFilter('blur', config.filter.blur);\n if (config.filter.saturation !== 0) fx.addFilter('saturation', config.filter.saturation);\n if (config.filter.hue !== 0) fx.addFilter('hue', config.filter.hue);\n if (config.filter.negative) fx.addFilter('negative');\n if (config.filter.sepia) fx.addFilter('sepia');\n if (config.filter.vintage) fx.addFilter('brownie');\n if (config.filter.sepia) fx.addFilter('sepia');\n if (config.filter.kodachrome) fx.addFilter('kodachrome');\n if (config.filter.technicolor) fx.addFilter('technicolor');\n if (config.filter.polaroid) fx.addFilter('polaroid');\n if (config.filter.pixelate !== 0) fx.addFilter('pixelate', config.filter.pixelate);\n fx.apply(inCanvas);\n // read pixel data\n /*\n const gl = outCanvas.getContext('webgl');\n if (gl) {\n const glBuffer = new Uint8Array(outCanvas.width * outCanvas.height * 4);\n const pixBuffer = new Uint8Array(outCanvas.width * outCanvas.height * 3);\n gl.readPixels(0, 0, outCanvas.width, outCanvas.height, gl.RGBA, gl.UNSIGNED_BYTE, glBuffer);\n // gl returns rbga while we only need rgb, so discarding alpha channel\n // gl returns starting point as lower left, so need to invert vertical\n let i = 0;\n for (let y = outCanvas.height - 1; y >= 0; y--) {\n for (let x = 0; x < outCanvas.width; x++) {\n const index = (x + y * outCanvas.width) * 4;\n pixBuffer[i++] = glBuffer[index + 0];\n pixBuffer[i++] = glBuffer[index + 1];\n pixBuffer[i++] = glBuffer[index + 2];\n }\n }\n outCanvas.data = pixBuffer;\n }\n */\n } else {\n outCanvas = inCanvas;\n if (fx) fx = null;\n }\n let pixels;\n if (outCanvas.data) {\n const shape = [outCanvas.height, outCanvas.width, 3];\n pixels = tf.tensor3d(outCanvas.data, shape, 'int32');\n } else if ((config.backend === 'webgl') || (outCanvas instanceof ImageData)) {\n // tf kernel-optimized method to get imagedata, also if input is imagedata, just use it\n pixels = tf.browser.fromPixels(outCanvas);\n } else {\n // cpu and wasm kernel does not implement efficient fromPixels method nor we can use canvas as-is, so we do a silly one more canvas\n const tempCanvas = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(targetWidth, targetHeight) : document.createElement('canvas');\n tempCanvas.width = targetWidth;\n tempCanvas.height = targetHeight;\n const tempCtx = tempCanvas.getContext('2d');\n tempCtx?.drawImage(outCanvas, 0, 0);\n const data = tempCtx?.getImageData(0, 0, targetWidth, targetHeight);\n pixels = tf.browser.fromPixels(data);\n }\n const casted = pixels.toFloat();\n tensor = casted.expandDims(0);\n pixels.dispose();\n casted.dispose();\n }\n const canvas = config.filter.return ? outCanvas : null;\n return { tensor, canvas };\n}\n", "/*\nWebGLImageFilter - MIT Licensed\n2013, Dominic Szablewski - phoboslab.org\n\n*/\n\nfunction GLProgram(gl, vertexSource, fragmentSource) {\n const _collect = function (source, prefix, collection) {\n const r = new RegExp('\\\\b' + prefix + ' \\\\w+ (\\\\w+)', 'ig');\n source.replace(r, (match, name) => {\n collection[name] = 0;\n return match;\n });\n };\n\n const _compile = function (source, type) {\n const shader = gl.createShader(type);\n gl.shaderSource(shader, source);\n gl.compileShader(shader);\n if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {\n // @ts-ignore\n throw new Error('Filter: GL compile failed', gl.getShaderInfoLog(shader));\n }\n return shader;\n };\n\n this.uniform = {};\n this.attribute = {};\n const _vsh = _compile(vertexSource, gl.VERTEX_SHADER);\n const _fsh = _compile(fragmentSource, gl.FRAGMENT_SHADER);\n this.id = gl.createProgram();\n gl.attachShader(this.id, _vsh);\n gl.attachShader(this.id, _fsh);\n gl.linkProgram(this.id);\n\n if (!gl.getProgramParameter(this.id, gl.LINK_STATUS)) {\n // @ts-ignore\n throw new Error('Filter: GL link failed', gl.getProgramInfoLog(this.id));\n }\n\n gl.useProgram(this.id);\n // Collect attributes\n _collect(vertexSource, 'attribute', this.attribute);\n for (const a in this.attribute) this.attribute[a] = gl.getAttribLocation(this.id, a);\n // Collect uniforms\n _collect(vertexSource, 'uniform', this.uniform);\n _collect(fragmentSource, 'uniform', this.uniform);\n for (const u in this.uniform) this.uniform[u] = gl.getUniformLocation(this.id, u);\n}\n\n// export const GLImageFilter = function (params) {\nexport function GLImageFilter(params) {\n if (!params) params = { };\n let _drawCount = 0;\n let _sourceTexture = null;\n let _lastInChain = false;\n let _currentFramebufferIndex = -1;\n let _tempFramebuffers = [null, null];\n let _filterChain = [];\n let _width = -1;\n let _height = -1;\n let _vertexBuffer = null;\n let _currentProgram = null;\n const _filter = {};\n const _canvas = params.canvas || document.createElement('canvas');\n // key is the shader program source, value is the compiled program\n const _shaderProgramCache = { };\n const DRAW = { INTERMEDIATE: 1 };\n const gl = _canvas.getContext('webgl');\n if (!gl) throw new Error('Filter: getContext() failed');\n\n this.addFilter = function (name) {\n // eslint-disable-next-line prefer-rest-params\n const args = Array.prototype.slice.call(arguments, 1);\n const filter = _filter[name];\n _filterChain.push({ func: filter, args });\n };\n\n this.reset = function () {\n _filterChain = [];\n };\n\n const _resize = function (width, height) {\n // Same width/height? Nothing to do here\n if (width === _width && height === _height) { return; }\n _canvas.width = width;\n _width = width;\n _canvas.height = height;\n _height = height;\n // Create the context if we don't have it yet\n if (!_vertexBuffer) {\n // Create the vertex buffer for the two triangles [x, y, u, v] * 6\n const vertices = new Float32Array([\n -1, -1, 0, 1, 1, -1, 1, 1, -1, 1, 0, 0,\n -1, 1, 0, 0, 1, -1, 1, 1, 1, 1, 1, 0,\n ]);\n // eslint-disable-next-line no-unused-expressions\n (_vertexBuffer = gl.createBuffer(), gl.bindBuffer(gl.ARRAY_BUFFER, _vertexBuffer));\n gl.bufferData(gl.ARRAY_BUFFER, vertices, gl.STATIC_DRAW);\n gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, true);\n }\n gl.viewport(0, 0, _width, _height);\n // Delete old temp framebuffers\n _tempFramebuffers = [null, null];\n };\n\n const _createFramebufferTexture = function (width, height) {\n const fbo = gl.createFramebuffer();\n gl.bindFramebuffer(gl.FRAMEBUFFER, fbo);\n const renderbuffer = gl.createRenderbuffer();\n gl.bindRenderbuffer(gl.RENDERBUFFER, renderbuffer);\n const texture = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, texture);\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, width, height, 0, gl.RGBA, gl.UNSIGNED_BYTE, null);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, texture, 0);\n gl.bindTexture(gl.TEXTURE_2D, null);\n gl.bindFramebuffer(gl.FRAMEBUFFER, null);\n return { fbo, texture };\n };\n\n const _getTempFramebuffer = function (index) {\n // @ts-ignore\n _tempFramebuffers[index] = _tempFramebuffers[index] || _createFramebufferTexture(_width, _height);\n return _tempFramebuffers[index];\n };\n\n const _draw = function (flags = null) {\n let source = null;\n let target = null;\n let flipY = false;\n // Set up the source\n if (_drawCount === 0) {\n // First draw call - use the source texture\n source = _sourceTexture;\n } else {\n // All following draw calls use the temp buffer last drawn to\n // @ts-ignore\n source = _getTempFramebuffer(_currentFramebufferIndex)?.texture;\n }\n _drawCount++;\n // Set up the target\n if (_lastInChain && !(flags & DRAW.INTERMEDIATE)) {\n // Last filter in our chain - draw directly to the WebGL Canvas. We may\n // also have to flip the image vertically now\n target = null;\n flipY = _drawCount % 2 === 0;\n } else {\n // Intermediate draw call - get a temp buffer to draw to\n _currentFramebufferIndex = (_currentFramebufferIndex + 1) % 2;\n // @ts-ignore\n target = _getTempFramebuffer(_currentFramebufferIndex)?.fbo;\n }\n // Bind the source and target and draw the two triangles\n gl.bindTexture(gl.TEXTURE_2D, source);\n gl.bindFramebuffer(gl.FRAMEBUFFER, target);\n gl.uniform1f(_currentProgram.uniform.flipY, (flipY ? -1 : 1));\n gl.drawArrays(gl.TRIANGLES, 0, 6);\n };\n\n this.apply = function (image) {\n _resize(image.width, image.height);\n _drawCount = 0;\n // Create the texture for the input image if we haven't yet\n if (!_sourceTexture) _sourceTexture = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, _sourceTexture);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, image);\n // No filters? Just draw\n if (_filterChain.length === 0) {\n // const program = _compileShader(SHADER.FRAGMENT_IDENTITY);\n _draw();\n return _canvas;\n }\n for (let i = 0; i < _filterChain.length; i++) {\n _lastInChain = (i === _filterChain.length - 1);\n const f = _filterChain[i];\n f.func.apply(this, f.args || []);\n }\n return _canvas;\n };\n\n const _compileShader = function (fragmentSource) {\n if (_shaderProgramCache[fragmentSource]) {\n _currentProgram = _shaderProgramCache[fragmentSource];\n gl.useProgram(_currentProgram.id);\n return _currentProgram;\n }\n // Compile shaders\n const SHADER = {};\n SHADER.VERTEX_IDENTITY = [\n 'precision highp float;',\n 'attribute vec2 pos;',\n 'attribute vec2 uv;',\n 'varying vec2 vUv;',\n 'uniform float flipY;',\n 'void main(void) {',\n 'vUv = uv;',\n 'gl_Position = vec4(pos.x, pos.y*flipY, 0.0, 1.);',\n '}',\n ].join('\\n');\n SHADER.FRAGMENT_IDENTITY = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n 'void main(void) {',\n 'gl_FragColor = texture2D(texture, vUv);',\n '}',\n ].join('\\n');\n _currentProgram = new GLProgram(gl, SHADER.VERTEX_IDENTITY, fragmentSource);\n const floatSize = Float32Array.BYTES_PER_ELEMENT;\n const vertSize = 4 * floatSize;\n gl.enableVertexAttribArray(_currentProgram.attribute.pos);\n gl.vertexAttribPointer(_currentProgram.attribute.pos, 2, gl.FLOAT, false, vertSize, 0 * floatSize);\n gl.enableVertexAttribArray(_currentProgram.attribute.uv);\n gl.vertexAttribPointer(_currentProgram.attribute.uv, 2, gl.FLOAT, false, vertSize, 2 * floatSize);\n _shaderProgramCache[fragmentSource] = _currentProgram;\n return _currentProgram;\n };\n\n // -------------------------------------------------------------------------\n // Color Matrix Filter\n _filter.colorMatrix = function (matrix) {\n // Create a Float32 Array and normalize the offset component to 0-1\n const m = new Float32Array(matrix);\n m[4] /= 255;\n m[9] /= 255;\n m[14] /= 255;\n m[19] /= 255;\n // Can we ignore the alpha value? Makes things a bit faster.\n const shader = (m[18] === 1 && m[3] === 0 && m[8] === 0 && m[13] === 0 && m[15] === 0 && m[16] === 0 && m[17] === 0 && m[19] === 0)\n ? _filter.colorMatrix.SHADER.WITHOUT_ALPHA\n : _filter.colorMatrix.SHADER.WITH_ALPHA;\n const program = _compileShader(shader);\n gl.uniform1fv(program.uniform.m, m);\n _draw();\n };\n _filter.colorMatrix.SHADER = {};\n _filter.colorMatrix.SHADER.WITH_ALPHA = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n 'uniform float m[20];',\n 'void main(void) {',\n 'vec4 c = texture2D(texture, vUv);',\n 'gl_FragColor.r = m[0] * c.r + m[1] * c.g + m[2] * c.b + m[3] * c.a + m[4];',\n 'gl_FragColor.g = m[5] * c.r + m[6] * c.g + m[7] * c.b + m[8] * c.a + m[9];',\n 'gl_FragColor.b = m[10] * c.r + m[11] * c.g + m[12] * c.b + m[13] * c.a + m[14];',\n 'gl_FragColor.a = m[15] * c.r + m[16] * c.g + m[17] * c.b + m[18] * c.a + m[19];',\n '}',\n ].join('\\n');\n _filter.colorMatrix.SHADER.WITHOUT_ALPHA = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n 'uniform float m[20];',\n 'void main(void) {',\n 'vec4 c = texture2D(texture, vUv);',\n 'gl_FragColor.r = m[0] * c.r + m[1] * c.g + m[2] * c.b + m[4];',\n 'gl_FragColor.g = m[5] * c.r + m[6] * c.g + m[7] * c.b + m[9];',\n 'gl_FragColor.b = m[10] * c.r + m[11] * c.g + m[12] * c.b + m[14];',\n 'gl_FragColor.a = c.a;',\n '}',\n ].join('\\n');\n\n _filter.brightness = function (brightness) {\n const b = (brightness || 0) + 1;\n _filter.colorMatrix([\n b, 0, 0, 0, 0,\n 0, b, 0, 0, 0,\n 0, 0, b, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.saturation = function (amount) {\n const x = (amount || 0) * 2 / 3 + 1;\n const y = ((x - 1) * -0.5);\n _filter.colorMatrix([\n x, y, y, 0, 0,\n y, x, y, 0, 0,\n y, y, x, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.desaturate = function () {\n _filter.saturation(-1);\n };\n\n _filter.contrast = function (amount) {\n const v = (amount || 0) + 1;\n const o = -128 * (v - 1);\n\n _filter.colorMatrix([\n v, 0, 0, 0, o,\n 0, v, 0, 0, o,\n 0, 0, v, 0, o,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.negative = function () {\n _filter.contrast(-2);\n };\n\n _filter.hue = function (rotation) {\n rotation = (rotation || 0) / 180 * Math.PI;\n const cos = Math.cos(rotation);\n const sin = Math.sin(rotation);\n const lumR = 0.213;\n const lumG = 0.715;\n const lumB = 0.072;\n\n _filter.colorMatrix([\n lumR + cos * (1 - lumR) + sin * (-lumR), lumG + cos * (-lumG) + sin * (-lumG), lumB + cos * (-lumB) + sin * (1 - lumB), 0, 0,\n lumR + cos * (-lumR) + sin * (0.143), lumG + cos * (1 - lumG) + sin * (0.140), lumB + cos * (-lumB) + sin * (-0.283), 0, 0,\n lumR + cos * (-lumR) + sin * (-(1 - lumR)), lumG + cos * (-lumG) + sin * (lumG), lumB + cos * (1 - lumB) + sin * (lumB), 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.desaturateLuminance = function () {\n _filter.colorMatrix([\n 0.2764723, 0.9297080, 0.0938197, 0, -37.1,\n 0.2764723, 0.9297080, 0.0938197, 0, -37.1,\n 0.2764723, 0.9297080, 0.0938197, 0, -37.1,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.sepia = function () {\n _filter.colorMatrix([\n 0.393, 0.7689999, 0.18899999, 0, 0,\n 0.349, 0.6859999, 0.16799999, 0, 0,\n 0.272, 0.5339999, 0.13099999, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.brownie = function () {\n _filter.colorMatrix([\n 0.5997023498159715, 0.34553243048391263, -0.2708298674538042, 0, 47.43192855600873,\n -0.037703249837783157, 0.8609577587992641, 0.15059552388459913, 0, -36.96841498319127,\n 0.24113635128153335, -0.07441037908422492, 0.44972182064877153, 0, -7.562075277591283,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.vintagePinhole = function () {\n _filter.colorMatrix([\n 0.6279345635605994, 0.3202183420819367, -0.03965408211312453, 0, 9.651285835294123,\n 0.02578397704808868, 0.6441188644374771, 0.03259127616149294, 0, 7.462829176470591,\n 0.0466055556782719, -0.0851232987247891, 0.5241648018700465, 0, 5.159190588235296,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.kodachrome = function () {\n _filter.colorMatrix([\n 1.1285582396593525, -0.3967382283601348, -0.03992559172921793, 0, 63.72958762196502,\n -0.16404339962244616, 1.0835251566291304, -0.05498805115633132, 0, 24.732407896706203,\n -0.16786010706155763, -0.5603416277695248, 1.6014850761964943, 0, 35.62982807460946,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.technicolor = function () {\n _filter.colorMatrix([\n 1.9125277891456083, -0.8545344976951645, -0.09155508482755585, 0, 11.793603434377337,\n -0.3087833385928097, 1.7658908555458428, -0.10601743074722245, 0, -70.35205161461398,\n -0.231103377548616, -0.7501899197440212, 1.847597816108189, 0, 30.950940869491138,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.polaroid = function () {\n _filter.colorMatrix([\n 1.438, -0.062, -0.062, 0, 0,\n -0.122, 1.378, -0.122, 0, 0,\n -0.016, -0.016, 1.483, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.shiftToBGR = function () {\n _filter.colorMatrix([\n 0, 0, 1, 0, 0,\n 0, 1, 0, 0, 0,\n 1, 0, 0, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n // -------------------------------------------------------------------------\n // Convolution Filter\n _filter.convolution = function (matrix) {\n const m = new Float32Array(matrix);\n const pixelSizeX = 1 / _width;\n const pixelSizeY = 1 / _height;\n const program = _compileShader(_filter.convolution.SHADER);\n gl.uniform1fv(program.uniform.m, m);\n gl.uniform2f(program.uniform.px, pixelSizeX, pixelSizeY);\n _draw();\n };\n\n _filter.convolution.SHADER = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n 'uniform vec2 px;',\n 'uniform float m[9];',\n 'void main(void) {',\n 'vec4 c11 = texture2D(texture, vUv - px);', // top left\n 'vec4 c12 = texture2D(texture, vec2(vUv.x, vUv.y - px.y));', // top center\n 'vec4 c13 = texture2D(texture, vec2(vUv.x + px.x, vUv.y - px.y));', // top right\n 'vec4 c21 = texture2D(texture, vec2(vUv.x - px.x, vUv.y) );', // mid left\n 'vec4 c22 = texture2D(texture, vUv);', // mid center\n 'vec4 c23 = texture2D(texture, vec2(vUv.x + px.x, vUv.y) );', // mid right\n 'vec4 c31 = texture2D(texture, vec2(vUv.x - px.x, vUv.y + px.y) );', // bottom left\n 'vec4 c32 = texture2D(texture, vec2(vUv.x, vUv.y + px.y) );', // bottom center\n 'vec4 c33 = texture2D(texture, vUv + px );', // bottom right\n 'gl_FragColor = ',\n 'c11 * m[0] + c12 * m[1] + c22 * m[2] +',\n 'c21 * m[3] + c22 * m[4] + c23 * m[5] +',\n 'c31 * m[6] + c32 * m[7] + c33 * m[8];',\n 'gl_FragColor.a = c22.a;',\n '}',\n ].join('\\n');\n\n _filter.detectEdges = function () {\n _filter.convolution.call(this, [\n 0, 1, 0,\n 1, -4, 1,\n 0, 1, 0,\n ]);\n };\n\n _filter.sobelX = function () {\n _filter.convolution.call(this, [\n -1, 0, 1,\n -2, 0, 2,\n -1, 0, 1,\n ]);\n };\n\n _filter.sobelY = function () {\n _filter.convolution.call(this, [\n -1, -2, -1,\n 0, 0, 0,\n 1, 2, 1,\n ]);\n };\n\n _filter.sharpen = function (amount) {\n const a = amount || 1;\n _filter.convolution.call(this, [\n 0, -1 * a, 0,\n -1 * a, 1 + 4 * a, -1 * a,\n 0, -1 * a, 0,\n ]);\n };\n\n _filter.emboss = function (size) {\n const s = size || 1;\n _filter.convolution.call(this, [\n -2 * s, -1 * s, 0,\n -1 * s, 1, 1 * s,\n 0, 1 * s, 2 * s,\n ]);\n };\n\n // -------------------------------------------------------------------------\n // Blur Filter\n _filter.blur = function (size) {\n const blurSizeX = (size / 7) / _width;\n const blurSizeY = (size / 7) / _height;\n const program = _compileShader(_filter.blur.SHADER);\n // Vertical\n gl.uniform2f(program.uniform.px, 0, blurSizeY);\n _draw(DRAW.INTERMEDIATE);\n // Horizontal\n gl.uniform2f(program.uniform.px, blurSizeX, 0);\n _draw();\n };\n\n _filter.blur.SHADER = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n 'uniform vec2 px;',\n 'void main(void) {',\n 'gl_FragColor = vec4(0.0);',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-7.0*px.x, -7.0*px.y))*0.0044299121055113265;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-6.0*px.x, -6.0*px.y))*0.00895781211794;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-5.0*px.x, -5.0*px.y))*0.0215963866053;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-4.0*px.x, -4.0*px.y))*0.0443683338718;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-3.0*px.x, -3.0*px.y))*0.0776744219933;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-2.0*px.x, -2.0*px.y))*0.115876621105;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-1.0*px.x, -1.0*px.y))*0.147308056121;',\n 'gl_FragColor += texture2D(texture, vUv )*0.159576912161;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 1.0*px.x, 1.0*px.y))*0.147308056121;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 2.0*px.x, 2.0*px.y))*0.115876621105;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 3.0*px.x, 3.0*px.y))*0.0776744219933;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 4.0*px.x, 4.0*px.y))*0.0443683338718;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 5.0*px.x, 5.0*px.y))*0.0215963866053;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 6.0*px.x, 6.0*px.y))*0.00895781211794;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 7.0*px.x, 7.0*px.y))*0.0044299121055113265;',\n '}',\n ].join('\\n');\n\n // -------------------------------------------------------------------------\n // Pixelate Filter\n _filter.pixelate = function (size) {\n const blurSizeX = (size) / _width;\n const blurSizeY = (size) / _height;\n const program = _compileShader(_filter.pixelate.SHADER);\n // Horizontal\n gl.uniform2f(program.uniform.size, blurSizeX, blurSizeY);\n _draw();\n };\n\n _filter.pixelate.SHADER = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform vec2 size;',\n 'uniform sampler2D texture;',\n 'vec2 pixelate(vec2 coord, vec2 size) {',\n 'return floor( coord / size ) * size;',\n '}',\n 'void main(void) {',\n 'gl_FragColor = vec4(0.0);',\n 'vec2 coord = pixelate(vUv, size);',\n 'gl_FragColor += texture2D(texture, coord);',\n '}',\n ].join('\\n');\n}\n", "import { defaults } from '../config';\nimport { TRI468 as triangulation } from '../blazeface/coords';\n\nexport const drawOptions = {\n color: 'rgba(173, 216, 230, 0.3)', // 'lightblue' with light alpha channel\n labelColor: 'rgba(173, 216, 230, 1)', // 'lightblue' with dark alpha channel\n shadowColor: 'black',\n font: 'small-caps 16px \"Segoe UI\"',\n lineHeight: 20,\n lineWidth: 6,\n pointSize: 2,\n roundRect: 28,\n drawPoints: false,\n drawLabels: true,\n drawBoxes: true,\n drawPolygons: true,\n fillPolygons: false,\n useDepth: true,\n useCurves: false,\n bufferedOutput: false,\n useRawBoxes: false,\n};\n\nfunction point(ctx, x, y, z = null) {\n ctx.fillStyle = drawOptions.useDepth && z ? `rgba(${127.5 + (2 * (z || 0))}, ${127.5 - (2 * (z || 0))}, 255, 0.3)` : drawOptions.color;\n ctx.beginPath();\n ctx.arc(x, y, drawOptions.pointSize, 0, 2 * Math.PI);\n ctx.fill();\n}\n\nfunction rect(ctx, x, y, width, height) {\n ctx.beginPath();\n if (drawOptions.useCurves) {\n const cx = (x + x + width) / 2;\n const cy = (y + y + height) / 2;\n ctx.ellipse(cx, cy, width / 2, height / 2, 0, 0, 2 * Math.PI);\n } else {\n ctx.lineWidth = drawOptions.lineWidth;\n ctx.moveTo(x + drawOptions.roundRect, y);\n ctx.lineTo(x + width - drawOptions.roundRect, y);\n ctx.quadraticCurveTo(x + width, y, x + width, y + drawOptions.roundRect);\n ctx.lineTo(x + width, y + height - drawOptions.roundRect);\n ctx.quadraticCurveTo(x + width, y + height, x + width - drawOptions.roundRect, y + height);\n ctx.lineTo(x + drawOptions.roundRect, y + height);\n ctx.quadraticCurveTo(x, y + height, x, y + height - drawOptions.roundRect);\n ctx.lineTo(x, y + drawOptions.roundRect);\n ctx.quadraticCurveTo(x, y, x + drawOptions.roundRect, y);\n ctx.closePath();\n }\n ctx.stroke();\n}\n\nfunction lines(ctx, points: number[] = []) {\n if (points === undefined || points.length === 0) return;\n ctx.beginPath();\n ctx.moveTo(points[0][0], points[0][1]);\n for (const pt of points) {\n ctx.strokeStyle = drawOptions.useDepth && pt[2] ? `rgba(${127.5 + (2 * pt[2])}, ${127.5 - (2 * pt[2])}, 255, 0.3)` : drawOptions.color;\n ctx.fillStyle = drawOptions.useDepth && pt[2] ? `rgba(${127.5 + (2 * pt[2])}, ${127.5 - (2 * pt[2])}, 255, 0.3)` : drawOptions.color;\n ctx.lineTo(pt[0], parseInt(pt[1]));\n }\n ctx.stroke();\n if (drawOptions.fillPolygons) {\n ctx.closePath();\n ctx.fill();\n }\n}\n\nfunction curves(ctx, points: number[] = []) {\n if (points === undefined || points.length === 0) return;\n if (!drawOptions.useCurves || points.length <= 2) {\n lines(ctx, points);\n return;\n }\n ctx.moveTo(points[0][0], points[0][1]);\n for (let i = 0; i < points.length - 2; i++) {\n const xc = (points[i][0] + points[i + 1][0]) / 2;\n const yc = (points[i][1] + points[i + 1][1]) / 2;\n ctx.quadraticCurveTo(points[i][0], points[i][1], xc, yc);\n }\n ctx.quadraticCurveTo(points[points.length - 2][0], points[points.length - 2][1], points[points.length - 1][0], points[points.length - 1][1]);\n ctx.stroke();\n if (drawOptions.fillPolygons) {\n ctx.closePath();\n ctx.fill();\n }\n}\n\nexport async function gesture(inCanvas: HTMLCanvasElement, result: Array) {\n if (!result || !inCanvas) return;\n if (!(inCanvas instanceof HTMLCanvasElement)) return;\n const ctx = inCanvas.getContext('2d');\n if (!ctx) return;\n ctx.font = drawOptions.font;\n ctx.fillStyle = drawOptions.color;\n let i = 1;\n for (let j = 0; j < result.length; j++) {\n let where:any[] = [];\n let what:any[] = [];\n [where, what] = Object.entries(result[j]);\n if ((what.length > 1) && (what[1].length > 0)) {\n const person = where[1] > 0 ? `#${where[1]}` : '';\n const label = `${where[0]} ${person}: ${what[1]}`;\n if (drawOptions.shadowColor && drawOptions.shadowColor !== '') {\n ctx.fillStyle = drawOptions.shadowColor;\n ctx.fillText(label, 8, 2 + (i * drawOptions.lineHeight));\n }\n ctx.fillStyle = drawOptions.labelColor;\n ctx.fillText(label, 6, 0 + (i * drawOptions.lineHeight));\n i += 1;\n }\n }\n}\n\nexport async function face(inCanvas: HTMLCanvasElement, result: Array) {\n if (!result || !inCanvas) return;\n if (!(inCanvas instanceof HTMLCanvasElement)) return;\n const ctx = inCanvas.getContext('2d');\n if (!ctx) return;\n for (const f of result) {\n ctx.font = drawOptions.font;\n ctx.strokeStyle = drawOptions.color;\n ctx.fillStyle = drawOptions.color;\n if (drawOptions.drawBoxes) {\n if (drawOptions.useRawBoxes) rect(ctx, inCanvas.width * f.boxRaw[0], inCanvas.height * f.boxRaw[1], inCanvas.width * f.boxRaw[2], inCanvas.height * f.boxRaw[3]);\n else rect(ctx, f.box[0], f.box[1], f.box[2], f.box[3]);\n }\n // silly hack since fillText does not suport new line\n const labels:string[] = [];\n labels.push(`face confidence: ${Math.trunc(100 * f.confidence)}%`);\n if (f.genderConfidence) labels.push(`${f.gender || ''} ${Math.trunc(100 * f.genderConfidence)}% confident`);\n // if (f.genderConfidence) labels.push(f.gender);\n if (f.age) labels.push(`age: ${f.age || ''}`);\n if (f.iris) labels.push(`iris distance: ${f.iris}`);\n if (f.emotion && f.emotion.length > 0) {\n const emotion = f.emotion.map((a) => `${Math.trunc(100 * a.score)}% ${a.emotion}`);\n labels.push(emotion.join(' '));\n }\n if (f.angle && f.angle.roll) labels.push(`roll: ${Math.trunc(100 * f.angle.roll) / 100} yaw:${Math.trunc(100 * f.angle.yaw) / 100} pitch:${Math.trunc(100 * f.angle.pitch) / 100}`);\n if (labels.length === 0) labels.push('face');\n ctx.fillStyle = drawOptions.color;\n for (let i = labels.length - 1; i >= 0; i--) {\n const x = Math.max(f.box[0], 0);\n const y = i * drawOptions.lineHeight + f.box[1];\n if (drawOptions.shadowColor && drawOptions.shadowColor !== '') {\n ctx.fillStyle = drawOptions.shadowColor;\n ctx.fillText(labels[i], x + 5, y + 16);\n }\n ctx.fillStyle = drawOptions.labelColor;\n ctx.fillText(labels[i], x + 4, y + 15);\n }\n ctx.lineWidth = 1;\n if (f.mesh && f.mesh.length > 0) {\n if (drawOptions.drawPoints) {\n for (const pt of f.mesh) point(ctx, pt[0], pt[1], pt[2]);\n // for (const pt of f.meshRaw) point(ctx, pt[0] * inCanvas.offsetWidth, pt[1] * inCanvas.offsetHeight, pt[2]);\n }\n if (drawOptions.drawPolygons) {\n ctx.lineWidth = 1;\n for (let i = 0; i < triangulation.length / 3; i++) {\n const points = [\n triangulation[i * 3 + 0],\n triangulation[i * 3 + 1],\n triangulation[i * 3 + 2],\n ].map((index) => f.mesh[index]);\n lines(ctx, points);\n }\n // iris: array[center, left, top, right, bottom]\n if (f.annotations && f.annotations.leftEyeIris) {\n ctx.strokeStyle = drawOptions.useDepth ? 'rgba(255, 200, 255, 0.3)' : drawOptions.color;\n ctx.beginPath();\n const sizeX = Math.abs(f.annotations.leftEyeIris[3][0] - f.annotations.leftEyeIris[1][0]) / 2;\n const sizeY = Math.abs(f.annotations.leftEyeIris[4][1] - f.annotations.leftEyeIris[2][1]) / 2;\n ctx.ellipse(f.annotations.leftEyeIris[0][0], f.annotations.leftEyeIris[0][1], sizeX, sizeY, 0, 0, 2 * Math.PI);\n ctx.stroke();\n if (drawOptions.fillPolygons) {\n ctx.fillStyle = drawOptions.useDepth ? 'rgba(255, 255, 200, 0.3)' : drawOptions.color;\n ctx.fill();\n }\n }\n if (f.annotations && f.annotations.rightEyeIris) {\n ctx.strokeStyle = drawOptions.useDepth ? 'rgba(255, 200, 255, 0.3)' : drawOptions.color;\n ctx.beginPath();\n const sizeX = Math.abs(f.annotations.rightEyeIris[3][0] - f.annotations.rightEyeIris[1][0]) / 2;\n const sizeY = Math.abs(f.annotations.rightEyeIris[4][1] - f.annotations.rightEyeIris[2][1]) / 2;\n ctx.ellipse(f.annotations.rightEyeIris[0][0], f.annotations.rightEyeIris[0][1], sizeX, sizeY, 0, 0, 2 * Math.PI);\n ctx.stroke();\n if (drawOptions.fillPolygons) {\n ctx.fillStyle = drawOptions.useDepth ? 'rgba(255, 255, 200, 0.3)' : drawOptions.color;\n ctx.fill();\n }\n }\n }\n }\n }\n}\n\nconst lastDrawnPose:any[] = [];\nexport async function body(inCanvas: HTMLCanvasElement, result: Array) {\n if (!result || !inCanvas) return;\n if (!(inCanvas instanceof HTMLCanvasElement)) return;\n const ctx = inCanvas.getContext('2d');\n if (!ctx) return;\n ctx.lineJoin = 'round';\n for (let i = 0; i < result.length; i++) {\n // result[i].keypoints = result[i].keypoints.filter((a) => a.score > 0.5);\n if (!lastDrawnPose[i] && drawOptions.bufferedOutput) lastDrawnPose[i] = { ...result[i] };\n ctx.strokeStyle = drawOptions.color;\n ctx.lineWidth = drawOptions.lineWidth;\n if (drawOptions.drawPoints) {\n for (let pt = 0; pt < result[i].keypoints.length; pt++) {\n ctx.fillStyle = drawOptions.useDepth && result[i].keypoints[pt].position.z ? `rgba(${127.5 + (2 * result[i].keypoints[pt].position.z)}, ${127.5 - (2 * result[i].keypoints[pt].position.z)}, 255, 0.5)` : drawOptions.color;\n if (drawOptions.bufferedOutput) {\n lastDrawnPose[i].keypoints[pt][0] = (lastDrawnPose[i].keypoints[pt][0] + result[i].keypoints[pt].position.x) / 2;\n lastDrawnPose[i].keypoints[pt][1] = (lastDrawnPose[i].keypoints[pt][1] + result[i].keypoints[pt].position.y) / 2;\n point(ctx, lastDrawnPose[i].keypoints[pt][0], lastDrawnPose[i].keypoints[pt][1]);\n } else {\n point(ctx, result[i].keypoints[pt].position.x, result[i].keypoints[pt].position.y);\n }\n }\n }\n if (drawOptions.drawLabels) {\n ctx.font = drawOptions.font;\n for (const pt of result[i].keypoints) {\n ctx.fillStyle = drawOptions.useDepth && pt.position.z ? `rgba(${127.5 + (2 * pt.position.z)}, ${127.5 - (2 * pt.position.z)}, 255, 0.5)` : drawOptions.color;\n ctx.fillText(`${pt.part}`, pt.position.x + 4, pt.position.y + 4);\n }\n }\n if (drawOptions.drawPolygons) {\n let part;\n const points: any[] = [];\n // torso\n points.length = 0;\n part = result[i].keypoints.find((a) => a.part === 'leftShoulder');\n if (part && part.score > defaults.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightShoulder');\n if (part && part.score > defaults.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightHip');\n if (part && part.score > defaults.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftHip');\n if (part && part.score > defaults.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftShoulder');\n if (part && part.score > defaults.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n if (points.length === 5) lines(ctx, points); // only draw if we have complete torso\n // leg left\n points.length = 0;\n part = result[i].keypoints.find((a) => a.part === 'leftHip');\n if (part && part.score > defaults.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftKnee');\n if (part && part.score > defaults.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftAnkle');\n if (part && part.score > defaults.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftHeel');\n if (part && part.score > defaults.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftFoot');\n if (part && part.score > defaults.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n curves(ctx, points);\n // leg right\n points.length = 0;\n part = result[i].keypoints.find((a) => a.part === 'rightHip');\n if (part && part.score > defaults.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightKnee');\n if (part && part.score > defaults.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightAnkle');\n if (part && part.score > defaults.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightHeel');\n if (part && part.score > defaults.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightFoot');\n if (part && part.score > defaults.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n curves(ctx, points);\n // arm left\n points.length = 0;\n part = result[i].keypoints.find((a) => a.part === 'leftShoulder');\n if (part && part.score > defaults.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftElbow');\n if (part && part.score > defaults.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftWrist');\n if (part && part.score > defaults.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftPalm');\n if (part && part.score > defaults.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n curves(ctx, points);\n // arm right\n points.length = 0;\n part = result[i].keypoints.find((a) => a.part === 'rightShoulder');\n if (part && part.score > defaults.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightElbow');\n if (part && part.score > defaults.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightWrist');\n if (part && part.score > defaults.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightPalm');\n if (part && part.score > defaults.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n curves(ctx, points);\n // draw all\n }\n }\n}\n\nexport async function hand(inCanvas: HTMLCanvasElement, result: Array) {\n if (!result || !inCanvas) return;\n if (!(inCanvas instanceof HTMLCanvasElement)) return;\n const ctx = inCanvas.getContext('2d');\n if (!ctx) return;\n ctx.lineJoin = 'round';\n ctx.font = drawOptions.font;\n for (const h of result) {\n if (drawOptions.drawBoxes) {\n ctx.strokeStyle = drawOptions.color;\n ctx.fillStyle = drawOptions.color;\n if (drawOptions.useRawBoxes) rect(ctx, inCanvas.width * h.boxRaw[0], inCanvas.height * h.boxRaw[1], inCanvas.width * h.boxRaw[2], inCanvas.height * h.boxRaw[3]);\n else rect(ctx, h.box[0], h.box[1], h.box[2], h.box[3]);\n if (drawOptions.drawLabels) {\n if (drawOptions.shadowColor && drawOptions.shadowColor !== '') {\n ctx.fillStyle = drawOptions.shadowColor;\n ctx.fillText('hand', h.box[0] + 3, 1 + h.box[1] + drawOptions.lineHeight, h.box[2]);\n }\n ctx.fillStyle = drawOptions.labelColor;\n ctx.fillText('hand', h.box[0] + 2, 0 + h.box[1] + drawOptions.lineHeight, h.box[2]);\n }\n ctx.stroke();\n }\n if (drawOptions.drawPoints) {\n if (h.landmarks && h.landmarks.length > 0) {\n for (const pt of h.landmarks) {\n ctx.fillStyle = drawOptions.useDepth ? `rgba(${127.5 + (2 * pt[2])}, ${127.5 - (2 * pt[2])}, 255, 0.5)` : drawOptions.color;\n point(ctx, pt[0], pt[1]);\n }\n }\n }\n if (drawOptions.drawPolygons) {\n const addPart = (part) => {\n if (!part) return;\n for (let i = 0; i < part.length; i++) {\n ctx.lineWidth = drawOptions.lineWidth;\n ctx.beginPath();\n ctx.strokeStyle = drawOptions.useDepth ? `rgba(${127.5 + (2 * part[i][2])}, ${127.5 - (2 * part[i][2])}, 255, 0.5)` : drawOptions.color;\n ctx.moveTo(part[i > 0 ? i - 1 : 0][0], part[i > 0 ? i - 1 : 0][1]);\n ctx.lineTo(part[i][0], part[i][1]);\n ctx.stroke();\n }\n };\n addPart(h.annotations.indexFinger);\n addPart(h.annotations.middleFinger);\n addPart(h.annotations.ringFinger);\n addPart(h.annotations.pinky);\n addPart(h.annotations.thumb);\n // addPart(hand.annotations.palmBase);\n }\n }\n}\n\nexport async function object(inCanvas: HTMLCanvasElement, result: Array) {\n if (!result || !inCanvas) return;\n if (!(inCanvas instanceof HTMLCanvasElement)) return;\n const ctx = inCanvas.getContext('2d');\n if (!ctx) return;\n ctx.lineJoin = 'round';\n ctx.font = drawOptions.font;\n for (const h of result) {\n if (drawOptions.drawBoxes) {\n ctx.strokeStyle = drawOptions.color;\n ctx.fillStyle = drawOptions.color;\n if (drawOptions.useRawBoxes) rect(ctx, inCanvas.width * h.boxRaw[0], inCanvas.height * h.boxRaw[1], inCanvas.width * h.boxRaw[2], inCanvas.height * h.boxRaw[3]);\n else rect(ctx, h.box[0], h.box[1], h.box[2], h.box[3]);\n if (drawOptions.drawLabels) {\n const label = `${Math.round(100 * h.score)}% ${h.label}`;\n if (drawOptions.shadowColor && drawOptions.shadowColor !== '') {\n ctx.fillStyle = drawOptions.shadowColor;\n ctx.fillText(label, h.box[0] + 3, 1 + h.box[1] + drawOptions.lineHeight, h.box[2]);\n }\n ctx.fillStyle = drawOptions.labelColor;\n ctx.fillText(label, h.box[0] + 2, 0 + h.box[1] + drawOptions.lineHeight, h.box[2]);\n }\n ctx.stroke();\n }\n }\n}\n\nexport async function canvas(inCanvas: HTMLCanvasElement, outCanvas: HTMLCanvasElement) {\n if (!inCanvas || !outCanvas) return;\n if (!(inCanvas instanceof HTMLCanvasElement) || !(outCanvas instanceof HTMLCanvasElement)) return;\n const outCtx = inCanvas.getContext('2d');\n outCtx?.drawImage(inCanvas, 0, 0);\n}\n\nexport async function all(inCanvas: HTMLCanvasElement, result:any) {\n if (!result || !inCanvas) return;\n if (!(inCanvas instanceof HTMLCanvasElement)) return;\n face(inCanvas, result.face);\n body(inCanvas, result.body);\n hand(inCanvas, result.hand);\n gesture(inCanvas, result.gesture);\n object(inCanvas, result.object);\n}\n", "/* eslint-disable indent */\n/* eslint-disable no-multi-spaces */\n\n/**\n * Configuration interface definition for **Human** library\n *\n * Contains all configurable parameters\n */\nexport interface Config {\n backend: string,\n wasmPath: string,\n debug: boolean,\n async: boolean,\n profile: boolean,\n deallocate: boolean,\n scoped: boolean,\n videoOptimized: boolean,\n warmup: string,\n filter: {\n enabled: boolean,\n width: number,\n height: number,\n return: boolean,\n brightness: number,\n contrast: number,\n sharpness: number,\n blur: number\n saturation: number,\n hue: number,\n negative: boolean,\n sepia: boolean,\n vintage: boolean,\n kodachrome: boolean,\n technicolor: boolean,\n polaroid: boolean,\n pixelate: number,\n },\n gesture: {\n enabled: boolean,\n },\n face: {\n enabled: boolean,\n detector: {\n modelPath: string,\n rotation: boolean,\n maxFaces: number,\n skipFrames: number,\n skipInitial: boolean,\n minConfidence: number,\n iouThreshold: number,\n scoreThreshold: number,\n return: boolean,\n },\n mesh: {\n enabled: boolean,\n modelPath: string,\n },\n iris: {\n enabled: boolean,\n modelPath: string,\n },\n description: {\n enabled: boolean,\n modelPath: string,\n skipFrames: number,\n },\n age: {\n enabled: boolean,\n modelPath: string,\n skipFrames: number,\n },\n gender: {\n enabled: boolean,\n minConfidence: number,\n modelPath: string,\n skipFrames: number,\n },\n emotion: {\n enabled: boolean,\n minConfidence: number,\n skipFrames: number,\n modelPath: string,\n },\n embedding: {\n enabled: boolean,\n modelPath: string,\n },\n },\n body: {\n enabled: boolean,\n modelPath: string,\n maxDetections: number,\n scoreThreshold: number,\n nmsRadius: number,\n },\n hand: {\n enabled: boolean,\n rotation: boolean,\n skipFrames: number,\n skipInitial: boolean,\n minConfidence: number,\n iouThreshold: number,\n scoreThreshold: number,\n maxHands: number,\n landmarks: boolean,\n detector: {\n modelPath: string,\n },\n skeleton: {\n modelPath: string,\n },\n },\n object: {\n enabled: boolean,\n modelPath: string,\n minConfidence: number,\n iouThreshold: number,\n maxResults: number,\n skipFrames: number,\n },\n}\n\nconst config: Config = {\n backend: 'webgl', // select tfjs backend to use\n // can be 'webgl', 'wasm', 'cpu', or 'humangl' which is a custom version of webgl\n // leave as empty string to continue using default backend\n // when backend is set outside of Human library\n wasmPath: '../assets/', // path for wasm binaries\n // only used for backend: wasm\n debug: true, // print additional status messages to console\n async: true, // execute enabled models in parallel\n // this disables per-model performance data but\n // slightly increases performance\n // cannot be used if profiling is enabled\n profile: false, // enable tfjs profiling\n // this has significant performance impact\n // only enable for debugging purposes\n // currently only implemented for age,gender,emotion models\n deallocate: false, // aggresively deallocate gpu memory after each usage\n // only valid for webgl backend and only during first call\n // cannot be changed unless library is reloaded\n // this has significant performance impact\n // only enable on low-memory devices\n scoped: false, // enable scoped runs\n // some models *may* have memory leaks,\n // this wrapps everything in a local scope at a cost of performance\n // typically not needed\n videoOptimized: true, // perform additional optimizations when input is video,\n // must be disabled for images\n // basically this skips object box boundary detection for every n frames\n // while maintaining in-box detection since objects cannot move that fast\n warmup: 'face', // what to use for human.warmup(), can be 'none', 'face', 'full'\n // warmup pre-initializes all models for faster inference but can take\n // significant time on startup\n filter: {\n enabled: true, // enable image pre-processing filters\n width: 0, // resize input width\n height: 0, // resize input height\n // if both width and height are set to 0, there is no resizing\n // if just one is set, second one is scaled automatically\n // if both are set, values are used as-is\n return: true, // return processed canvas imagedata in result\n brightness: 0, // range: -1 (darken) to 1 (lighten)\n contrast: 0, // range: -1 (reduce contrast) to 1 (increase contrast)\n sharpness: 0, // range: 0 (no sharpening) to 1 (maximum sharpening)\n blur: 0, // range: 0 (no blur) to N (blur radius in pixels)\n saturation: 0, // range: -1 (reduce saturation) to 1 (increase saturation)\n hue: 0, // range: 0 (no change) to 360 (hue rotation in degrees)\n negative: false, // image negative\n sepia: false, // image sepia colors\n vintage: false, // image vintage colors\n kodachrome: false, // image kodachrome colors\n technicolor: false, // image technicolor colors\n polaroid: false, // image polaroid camera effect\n pixelate: 0, // range: 0 (no pixelate) to N (number of pixels to pixelate)\n },\n\n gesture: {\n enabled: true, // enable simple gesture recognition\n },\n\n face: {\n enabled: true, // controls if specified modul is enabled\n // face.enabled is required for all face models:\n // detector, mesh, iris, age, gender, emotion\n // (note: module is not loaded until it is required)\n detector: {\n modelPath: '../models/blazeface-back.json',\n rotation: false, // use best-guess rotated face image or just box with rotation as-is\n // false means higher performance, but incorrect mesh mapping if face angle is above 20 degrees\n // this parameter is not valid in nodejs\n maxFaces: 10, // maximum number of faces detected in the input\n // should be set to the minimum number for performance\n skipFrames: 21, // how many frames to go without re-running the face bounding box detector\n // only used for video inputs\n // e.g., if model is running st 25 FPS, we can re-use existing bounding\n // box for updated face analysis as the head probably hasn't moved much\n // in short time (10 * 1/25 = 0.25 sec)\n skipInitial: false, // if previous detection resulted in no faces detected,\n // should skipFrames be reset immediately\n minConfidence: 0.2, // threshold for discarding a prediction\n iouThreshold: 0.1, // threshold for deciding whether boxes overlap too much in\n // non-maximum suppression (0.1 means drop if overlap 10%)\n scoreThreshold: 0.2, // threshold for deciding when to remove boxes based on score\n // in non-maximum suppression,\n // this is applied on detection objects only and before minConfidence\n return: false, // return extracted face as tensor\n },\n\n mesh: {\n enabled: true,\n modelPath: '../models/facemesh.json',\n },\n\n iris: {\n enabled: true,\n modelPath: '../models/iris.json',\n },\n\n description: {\n enabled: true, // to improve accuracy of face embedding extraction it is\n // recommended to enable detector.rotation and mesh.enabled\n modelPath: '../models/faceres.json',\n skipFrames: 31, // how many frames to go without re-running the detector\n // only used for video inputs\n },\n\n emotion: {\n enabled: true,\n minConfidence: 0.1, // threshold for discarding a prediction\n skipFrames: 32, // how many frames to go without re-running the detector\n modelPath: '../models/emotion.json',\n },\n\n age: {\n enabled: false, // obsolete, replaced by description module\n modelPath: '../models/age.json',\n skipFrames: 33, // how many frames to go without re-running the detector\n // only used for video inputs\n },\n\n gender: {\n enabled: false, // obsolete, replaced by description module\n minConfidence: 0.1, // threshold for discarding a prediction\n modelPath: '../models/gender.json',\n skipFrames: 34, // how many frames to go without re-running the detector\n // only used for video inputs\n },\n\n embedding: {\n enabled: false, // obsolete, replaced by description module\n modelPath: '../models/mobileface.json',\n },\n },\n\n body: {\n enabled: true,\n modelPath: '../models/posenet.json', // can be 'posenet' or 'blazepose'\n maxDetections: 10, // maximum number of people detected in the input\n // should be set to the minimum number for performance\n // only valid for posenet as blazepose only detects single pose\n scoreThreshold: 0.3, // threshold for deciding when to remove boxes based on score\n // in non-maximum suppression\n // only valid for posenet as blazepose only detects single pose\n nmsRadius: 20, // radius for deciding points are too close in non-maximum suppression\n // only valid for posenet as blazepose only detects single pose\n },\n\n hand: {\n enabled: true,\n rotation: false, // use best-guess rotated hand image or just box with rotation as-is\n // false means higher performance, but incorrect finger mapping if hand is inverted\n skipFrames: 12, // how many frames to go without re-running the hand bounding box detector\n // only used for video inputs\n // e.g., if model is running st 25 FPS, we can re-use existing bounding\n // box for updated hand skeleton analysis as the hand probably\n // hasn't moved much in short time (10 * 1/25 = 0.25 sec)\n skipInitial: false, // if previous detection resulted in no faces detected,\n // should skipFrames be reset immediately\n minConfidence: 0.1, // threshold for discarding a prediction\n iouThreshold: 0.1, // threshold for deciding whether boxes overlap too much\n // in non-maximum suppression\n scoreThreshold: 0.5, // threshold for deciding when to remove boxes based on\n // score in non-maximum suppression\n maxHands: 1, // maximum number of hands detected in the input\n // should be set to the minimum number for performance\n landmarks: true, // detect hand landmarks or just hand boundary box\n detector: {\n modelPath: '../models/handdetect.json',\n },\n skeleton: {\n modelPath: '../models/handskeleton.json',\n },\n },\n\n object: {\n enabled: false,\n modelPath: '../models/nanodet.json',\n minConfidence: 0.20, // threshold for discarding a prediction\n iouThreshold: 0.40, // threshold for deciding whether boxes overlap too much\n // in non-maximum suppression\n maxResults: 10, // maximum number of objects detected in the input\n skipFrames: 41, // how many frames to go without re-running the detector\n },\n};\nexport { config as defaults };\n", "// data:image/jpeg;base64,\nexport const face = `\n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`;\n\n// data:image/jpeg;base64,\nexport const body = `\n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\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAa2p1UYo5adbz+xbxMlvqJ1OqjDHLXree0ejmzNrWm953tPmTPWbWneZ7yoy5YhjrXXTjH8s75N\nmtkyxt0VZM2/m175N1V03yTKubMLXVXybeYLLX2VXy7eam+b0bOg4VquJW+rry4/O9uyZOq3UjVm\n9r25axMzPaIdvhns1kzbZddM0p5Y47z8/R2+HcF03Doi1a8+Xzvbv+TotJnjDXkt+K8ODHp8cY8N\nIpSO0RCwF2YAAAAAAAAACvUZYw6fJkntWN3k8dfHz2vLucdz8mkjFE9bz1+UOZosX1UzPm0nqI/W\nMYo9FlcPNklfFGeH/NshLGun+Cz6PtHZtVZWlRLS+jxPkRpIn7rdoupHTdA5s6SI+7H6Mfo+32Y2\n+To3neSIiZ7A0IjPXpXLePlMotGW3272t85datKzHZjbTVnsDj+FG/2Y/RlGP4R+jo20u7H6N1Ql\no+H8I/REY957R+jpfReiK6eOYHLtj2tttH6KrY/6Y/R2c+kjeJiFVtLG24hxpw7/AHY/RRkw9O37\nO99Hrt1YX0tfOBLjcGp4XF8c+u8fs9c4dcVcGemSI61nd3IneN1orQAAAAAAAAAAAAABFqxes1tE\nTE9JiUgPKcX4RbRXnNgiZwWnrH4XPi28PdXpW9JraImsxtMS8pxXhF9DecuGJtgmf+1TWW2N/la1\nL7N7T5e3Vy6W3hsYcvLbqzbO9jvvCzvDR0+XeO7crO6FmGSvRThy/RtVXJ92elvk2rRvDUzU7pl4\nizsd2J3jeBpcNz+Lg5LT7+Pp+Xk3W7js5eAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADs0NTrN96Yp6edkW8Wzm6+LNTq4pvTHO9vOfRoWtt\n1mes95YWvs1s2fZldddOczLPLn2ju0MmebT3YZc2/mpm3qqllN1drsbZIhr3yzvtHf4AsvlYYseb\nV5Yx4KTe0+UQ6nDvZ3UazbJqd8OKeu33peq0eh0+hxcmnxxWPOfOfm0mP+steT/ji8N9mKY9suum\nL37+HHaPm9DSlaVitKxWsdohI0Y22gAgAAAAAAAAAABXnyRhw3yT92Nwef4xm8bVzET0rPJH5d12\n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\nAOZE/OsPS29nuH27YrV+VpeV9pdPXhOtw49NG9Mld55+vXcTPd42I47qo7xSfyWV9oM8d8VJ/VxM\nd8l46xWF9cV7en6o/qLfxp2I9ob+eCv/AHMo9op89P8A/wBORGmyT5R+qfo2X8P7n9Q/jTsx7RR5\n6ef+4/8AuHftg/8A6cWcOSO9J/WEbWr3pY7Efzp2Lcfv5YK/9zWy8d1E/ZpSv5Oba1/+Hb9lc+LP\nbFt87I7E/wAabWbiurvEx4nL/pjZzc2bJkn372t85ZXx55/BX85lucC0vPxnTxlnnjm32mOiZqUu\nLJ2p4TwnVavNWaYbRTfre0bQ99pcH0bT0xb78vmtiIiNojaErMwAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAHnfarF7umzRHaZrLjYrdIen9ocPi8JyTt1xzF4eUw23rCm3R4r6bMy\nwt6kdTaWLdjswmNoZontsCm0K5XWjopnuDC0dGpqG5bs08/daKV672MjbSaif6oh6Z5f2LtvptRX\n0tEvUN3Jfo8f7cYve0eX4zV7B5z20xc/C8eSPuZIRficfXlcPaG7ino08HWIbePpLF2NuiyOyrHK\n3fZFSwuovHVfaVF4QK5YWTM9UT0EKry6Ps1Tn4zjn8NZn9nOtLseydObiWW34cf918fWfk+PYANn\nKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAq1WKM+ly4p+/WYeBxTNd6zG0xO0\nvobw3FcP0bi2em20Tbmj5Srr418V9sa2Z7qKyzi07MXUylhaU7yjqhLCeiq3ddaFNxFYW7NLNG8t\nzya+WO6Va9J7FW66mvwidnrXiPY3Ny8RyUn71Jj9Ht3RPjk19HK9pMHj8D1ER3rHN+jqqtTjjNps\nuOe16zAifXzfTz7kNyndpYazS9qT0mszDdoxrsi6m8LazMq6zDOsq1ZEyrt1WWlXaUCqyq0rbKbi\nFdp6PReyFd8uqv8ACsfy83aXrPZHHto89/xX2/SP/dpj6y8vx6EBq5gAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAB5n2q03LfDqqx39y39npmlxbS/TOG5se29tuavzgWzeV4mtui2\nO3RRSY2hdVhqO2MvI36iu9lUsrSrvDHn6spnmSiq5jooyV6tq1VV69RC32byTh43h8otMx+r6I+Z\naK/g8TwX7bXh9Mid4iW+fjl8n1ICWb57xLBOm4zqse20Tbmj8+qKdnS9q8PhcTw5tumSm0/OHMxz\n0Za+uzx3sX1t0Zxurr1ZxvspWiZYWZbsbT0QK7KLrZVZJFaqt5vbezNOTg9J/FaZeJns93wCvLwb\nT/GJn92uGHldIBowAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADuAPA67F9H4l\nqMW20VvO3yRWW97T4fC4rXJHSMtI/WGhVlue3b473K2KzMML4+62tujG9pnozXaOSOVFMnVbmq1t\ntrJRW5E7wwvUxTvCyY6CHOt7moxz6Wh9PxTzYaT61h8x1MbZK/OH0zTf+Fxf6I/htj45vL9WgLMn\nmvbPFvocGWO9L7fq85p5maw9d7VYvE4JkmPu2if3eW0+PasdFNOnxfF1Y2hlykRsmY+LJ0MZjZXa\neq2eyi8oQTO0KLdZWzPRjWu6VaqtHR73g0bcI0sf0Q8Nkq93wqNuFaWP+XDTDDytwBowAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAef9q8HNpcGaI60vtPyl56k9Iew49j8ThGe\nPwxFv0l4zH2U26fDfTYiyJljvsjf4sm6vJ1hrXjq2MkqLdZEVbgbMx0auGdmzNt6iHN1Ub5af6of\nTdPG2nxx6Vj+HzaaTm1+nx/iyVj930ysbViPRrj45vL9SAuyc7j1efguqj+jd4/T33rD3HEcPj8O\n1GP8WOY/Z4TTT7sKadHhbcsZnaCJ3TPZk6VdrKbTutmP0U2nqgrGOsr8deiuI2X09EqKM1dt3uuG\nf/jdN/06/wAPE546S9rwud+Gaaf+XH8NMMPK2wGjAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAABrcRp4nDtRWPPHP8PCYusPoWSvNjtX1iYfPuWaXtX8MzCuvjfw32siu8ptXoxi\n0wy5t4YulReqmazu2skbquURWFInddM7VYRGyL291KFnCcfj8e0le/Lbmn8n0N4b2Ur4nHLWmPsY\n5e5a5+OXyXugBZmiY3iY9Xz7NjnTa3Ph/BeYj5PoTxftFg8Hjk2iOmWkW/Psrr418V5WrWd2faFc\nV2jdnEMXWxntupmN7NiYU27iWML6dVMVnddjgVqMsdHr+CW5uE6f4Rt+7yuSsTDv+zWXn0WTHP3L\n/tK+GHl+O0A1c4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8Dn93W56/wDM\nt/L3z59qp24jn+OS38lnpr4r7ZxHQ2TEstt3PXUrt27K57rr1VT0BjKnJPRbMqMs7QlV2fYvHvrd\nVknyrEfu9m8f7FZI8fVU85iJewbT45NfQBKo817W4eulzxHaZrL0rje09ItwqbfhtBVs3leai8RD\nKLw1sduesL606dWFdsZT1jdhNeq6K9DlhCVUU6s4jZnt1YzAhnM71dH2bycmszY/K1d/0c6OzY4R\nfwuK4p8rTstn6z8k7HrwGzkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHz3\nVxvr80/8y38voTwGpj/F5/8AqT/JfjTx/WVeyY6FPspc9dZPVXaOq2WEwIUTVRmjo2rNfLHRI3vZ\nDJycXtX8dZh7t879nsnhcbwz23tt+r6I2nxyb+gCVBzuPY/E4PqI9K7ui19fTxNBnp60n+Aj5/pJ\n3jZu1aOnnltMNussdfXbm+l3ZM9URHREdZVXTuT1Nk7boQiOkJw28PU47/htEp5eivJPLMTCZ9Vv\nx7mJ3iJ9UqNHk8XR4b+tIXuhxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD\nweqjbWZ4/wCZP8vePCaz/wDIaiP+Zb+UX408f0r9lOxWOifJhXWjfyYWllPRXYQxnrCrJHRd3YZI\n6A1NJecHEsN/S0T+76bE7xE+r5dk93LW3pL6ZpMni6PDf8VIn9m2fjm8s9rgFmQxvHNS0esbMiew\nPnHLyai9fS0w2aNfUTtrs3+uf5bGPqy068fF227KtSsdFlKqNGMV6myyY6sbdIQI8tlOWOi6Jhhk\nj3RD0vA8nicMx9etZmHRcT2Zyb6XNT8N9/2dt0T449T2AJVAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAHhdfG3E9TH9cvdPEcXjk4zqI/q3L8aeP6xr2TsxpLOekMK6mFo6qpXSrm\nOqBixvHSVmzC4OfqK7S9/wAByeLwbTW9K7fo8Fqo6Paeyl+fglI/Da0NcMPK7QC7AAB8313TiOf/\nAKk/y2MHWrX4jG3E9R/1Lfyv0/aFNOrHxuU7LI7MMayGTVlHWUXhNe6Z6wIUsb9d1m20q7dkDpez\nN9tRqKT5xEvRvKez9+Xis1/FSYerb5+OTyf6AFlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAB43j9eXjN/jWJ/Z7J5L2mry8Upb8VIF8f6aGOey2eynHvOy7bowrrYSxZSwQJ2YXZ\n92N4BoanrEvVexmTm4blr+HJ/aHltRHSXofYm/1Wrp5RaJaYY+X49WA0c4AD51xONuKan/qW/lbp\n+0MOLRtxbU/9SU4J7KadWPjep2WQrr2WRPRk1TvsndXMpiRCb9FNu0rbTuqvKBscCjfi9PhWZeue\nV9n434rafTHL1TfPxy+T/QAszAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHmv\navHtfTZfnV6VxPajHzcNrf8ABeJFs/XnMcr4no18c+6vr2YadkY2YM57sEDLyY37Mo7MMnYGlqO0\nvQ+xNfqNVb1tEfs87qZ2rL0/sVX/AHdnt65P7Q0wx8vx6UBo5wAHz/jUbcX1PT78qtO2vaCnJxjP\n8Zif2amnnspp04+OjWejKJ6MKdmcMmyJn4m5ZHzEVPMwtJv0VZLbQDqezcb8RzT6Y/7vUPM+ytZt\nn1OTyiIh6Ztn45N/6AFlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABocbxeLw\nnUR5xXm/Rvq8+OMuDJjntaswEeBxT0bNZ6NatZpNqz3rO0rqsdO3PxlaWEMpY+aqWXkryT0ZT2V3\n7A0dVPuy9f7G124NM/iyT/Z4zWT7sw957MYfB4Fp4/FE2/WWmGHldcBowAAeM9qKcvFeb8VIly9P\n0nq7ntbTbVYL+tJj93CwT76unR4/jo0nozhhTsy3Y1sWljM9Ce7HyQIm3RRlttVbaWrnt0Sh6n2U\nx8vD8mSfv3/h3XN4Bi8Lg2nj8Uc36y6TeOPXugCUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAPD8RxeBxXUU26Tbmj8+quro+02Lw+I4ssdslNvzhzazvDPbq8d7GW7Dfqz2VzG\n0s2qd+iu/Zn5Ksk9BVztX1mI8930zh2LwOHabH+HHWP2fNYp4+vwYvxXiP3fUqxtWIjyjZtj45/L\nfaQFmQADzftfj3w6fJ6WmHmsP23rvaqnNwqLfhvEvIYZ+sV038bo0noy36MK9oZQxrdMyrlnMbMZ\nQKrS1M07zEestq/RRjr4utwY/wAV4j91p9V18fQdJj8LR4ccfdpEfsuREbREJbuMAAAAAAAAAAAA\nBAJAAAAEAJEAJQAJQAJEAJQAJQAJEACUJAQlAJEAJQAJQJAAAEAJEAJBAAAJAABAJEJAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwvanDzaPFmjvjv8A\ntLztJ3h7HjGHx+FainnFeaPnHV4vFbeIU038VbHeGF+kso7Mb9mTdhKnLK3dRm7SIrHhGPxeP6Sv\n9cT/AHfSnz72Zx+J7Q45/BWZ/Z9BbZ+OXyfQBZQABzeP4/E4NqI9Ii36S8Ng/wAx9C4jTxOH6ivr\njn+Hz3B/mQi/GvjdCnWNlsdI2V07LIlg6USrt2ZzZXMoFV+zPhGLxeOaavpbm/RVltEN72Yx+Jxm\nb7dKUmf7L5+s9/HtRA2cqRACRACRACRACUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQCQQCRACRACRCQBCQBCQB\nACRACRACRACRACL1i9LVntMbPATTwdRkxT3pea/u+gPE8Xx+DxrPHlaYt+qNfGvjvtXXsi0dOrKk\ndEXjZg6VMtbP2bMtXUdpEV0/Y2nNxbNf8OP+727xvsXH+N1U/wBEfy9k3nxyb+gCVQAGOWvNivX1\nrMPnGGOXNNfOJ2fSZ6w+dZKeHxDPX8N7R+6L8a+L63KdoZ7q6zvEMpnowdKJ6ywmWUyqvIKM0vQ+\nx+D6rU55+9aKx+TzWa36vbezmDwODYenW+95/Nphj5L6dQBo5wAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAEiAAAEoA\nAAAAAAAAAAAAAEAkEAkRuAkQbgkQAkQAkQAkQAl5T2nx8nEMOT8dNv0l6pwfarHvpcGWPu32/WCr\nYvK4mOem6b9mGKd4Z3idmFdka0y1c892zfpMtLPaNpEV6D2Kj/Eauf6YeweQ9ieuTVz8K/3evbT4\n5NfQBKoAA8FxCvJxrUx/XMvevD8Zry8fz/Haf2RfjTx/6RSOnRMyypHu9kXjowrqVSrvPRnZVl6V\nkK0775MsUjvadn0nT4ow6bFijtSsVfPuFYvpPGtNTy54mfy6vorXDm8l9pEC7JIgBIgBIgBIgBIg\nBIgBIhIAgBIhIAgBIgBIIBIAAhIAhIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAA\nAAAAAAAAABAJQkAEAAAAAAAAAAjc3BIjdG4Mkbo5kcwMjdhzHMDPc3V8xzAs3N1fMjmBZubq+Y5g\nWbm6vmOYFm5ur5jmBZubq+Y5gWbm6vmOYFm5ur5jmBZubq+Y5gWbm6vmTzAz3N2HMnmBlu5ftFTx\nOEZJ/DMW/d0t2rxKni8N1FPWkiZ9eS08e7Cy8dGGn6UhZaJljXZGnmc3UT3dPP2cnUT78xCIV6j2\nH/8A9c/6f7vXPI+w8bU1U+vL/d63du5NfUiDcVSIAS8b7RV5eOb/AIqRL2TyXtNX/e2KfXH/AHlF\n+NPH/pr4+2xcxx0hFpY11K7R16KM32ZWz3UaidqSgrc9kcPicWyZJjfw6T+727y3sXh2xarN+K0V\nh6lvPjj3e0ASqAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJQAAAAAkQAkQAkAAAAAAAAAAAAAAA\nEgAAAAAAAAAAAAAAAAAAAAAgAAABKDcAN0bgkY8xzAyRux5kcwM9zdXNkTcFm6OZXzMeYFvMibKu\nZHMC2bo51U2RuC2bom6rc3BZzom6sBZzI52ADPnOdggFnMc6skFnMc6rc3BbznOp3RzAv50c6nml\nHMC/nOf4qOY5wX85zqOc5wbHOc7X5znBsc6edr85zg2ec52vzpi4NjmY5bROG+/bllVzsNTk5dLl\nn0pP8BHmMHWNmzt0aum8obm08vVjfrtnxztR0mXHzTvaZdjVRMTLkZo6yiFen9iZ2pqY/wBP93rN\n3kPY+/LfPX1rE/u9XzN3HfqzdO6vmTuIZ7m7Hc3Bnu8t7TR/vHBP9E/y9Pu837SV31umn+if5Rfi\n/j/01MMb1hjkrtKzBG0bMsmOZY11tOYamr6Und0LUc7XT7u3rJPqL8er9lcPhcFpbzyWm39v7O00\n+FYvA4Zpsc94xxu227jv1IAgAAAAAAAAABKAAAASgASgBIgBIgBIgBIhIAAAAAAAAAAAAAAAAAAC\nUACUJAAAAAAAAAAAABIAAAAAAAAAAAAAAAAAAAAg3AEbomQZbo3YzLGbAz3RNlc3YzcFs2YzdVN2\nM2Bdzom6nmNwW86JurTAMuY3REJ2BB1ZRVMVBhsbSsiqeUFXLucq3lTygp5TlXcpygp5TlXcpygp\n5TlXcqOUFXKjlXcrGYBXysdlswiYBVMdUTCyY6sZBWxlnMMZgGLGZZSwkDdHMiWO4MuY5mEyjcFn\nN1OdVzHMC3nTzqeY5gX85zqOZPMC+Lqdbk20eb/RKOZr8QybaK/XvtH7iZ9aGlp2luzT3fg19NHS\nOjbmPcYX67XH1XSZ9XIzRvMuzrK7zLkZYmYnciunb9lZ5dTk+OP+71cXeP8AZnJ/ip2nf3J/l6iL\n/Fu5L9bMWZczXi6YuIbEWTzKIuyiwLt3nuO25uI4a/hx7/rLuczg8TicvFLbfdpEK6+NPH/phhjo\nstLGkctUWnoxrrU3j1cnWTzZq1jzl1clo5Zcu8c+txR63iP3Tn6pv4+g4o5cVI9IiGe7CJ2iE7t3\nGyN2O6dwSINwSISAlAAlACRAAlAAlACRACRCQAAAAAAAAAASgASISAAAAAAAAAAAAACQAAAAAAAA\nAAAAAASAAAAAAAAAAAAAAAAIAAAQCAJljuljsCJlhMs9mOwMJYys5TkBVsjZdyHICrZPKt5E8oK4\nqmKrOVOwMIqyirPY2Bjyp2ZbAI2NmSARsbMgEbI2ZAMdjZICNkbMkSCNmOzJEgx2YyzljMAwlhKy\nWEwCuWErJhhMArlhLOWEgxljMpljIImWMyTKJA3N0IBO5vux3NwZbnMx3NwZczT4jf3MdPW27a3a\nfJOq1XNP2KdIRfi+J2trSYfcjeF+Wm1OicVeWIiN9kai8xjY12ORqultnI1Ecsujq79XP1FovWYI\nrTgeq+j8QrWZ+3Mx+r2UXeC0WG2Ti2kiN5mL807eUREvbzbaejefHJv62Iv8WUXa0WTFhVtRdlF2\nrz9WUXBtc7jR9dqc2T1ttHyhvZMvJitb0jdq6XHNcNenWVN3028U99WRj6Kb02be3Tq18/SN2Lpc\n3UdN9nOmZrqKX/DaJ/d0svvTLRzV3jomK6+Pd1vvWJj0ZczT0mXxNJht60hfFnQ4qu3N1cWTEgs3\nTur5k7gz3N2O5uDM3Y7m4MtxBuCQASIASIASAAAAAAACRCQAAAAAAAAEoSAAAAAAAAAAAlAAlCQA\nAAAAAAAAAAASAAAAAAAAAAAAIASgAAAEJAQJQCNkbMgGOyOVnsAw5TlZ7GwMOVPKy2NgY7GzIBGx\nskA2AAAAAAAAAAQkBAEghEskAxYzDPZGwK5hjMLJhjMAqmGEwumrCagomFcw2JqqtUFEsLLrV82F\no7gqljKyYYTGwMZRKUSCAQAboJnaN5Bjkneu0d5W4ccViIiOzHFWbTzNumP1Zarr8eeRMbxDW1Mx\nNO67NbkhzNVnmInqzaOZrL93JyZeV0M1++7S02jvxDWxhxx033tPpC8Z6rrezWjmZyazJG2/u03h\n2vFibTHoqvamiwVwY+nLGzV0+SZ1Mx8G0/45tOhzJ5lXMc3UVXRdlF1HP+iYsDPLPPy49/tz1+Te\npSIr0ho6ak5Ms5J8o2q6NImOrHV7XX488ypzTtHXo0s9t6zG7c1G1qz6ubeZiZ3UatXJG3yauSO7\ncvMTEx5tPLb3prPRMVr0HB8vicNxf0+7+kt+LOJwTJyY/Bnz3tH93X36N58cWvq6LSyiyndMSlC7\nmZcymLJiwLosmJVRLKLAtiU7q4lMSCzc3YxJuDMRuAlKAEgAAAlAkAAAAAABKAEgAAAAAJAAAAAA\nAAAAAAAEgAAAAAAAAAAAAAkAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAhIAAACAAAASgAAAAAAEAAAA\nhGzJAImGMwzQDDZjNVuyNgUTVhNGxysZqDVmiu1G5NN2M4waM0+DCaN2cbGcQNGaMZq3JxMJxA1J\nqx2bU4kU09slorWNwa20z02RXHbJbl26QvtFovbHWkxEdJt5y2MOHlr2U1W3jx+1hiw8vSO63lmI\nXRTaEWmtY6snRHO1VpmJ+DjavpSZl2s8b7y4HFcnh0n0gha5ebJN55KRM2mdoiPN6fh+kpwXh0Wy\nRHj5Otp/s5Ps1p62y31+em9aTMYt/OfVfxTiPjZ52naI7fBrI5t66xz5+a1rW7yx0eSL6iZjtEOX\nqNbSletom3lENjh2fbHzbbWt3iVozruc+5ztWubf4M4ybpQ2Oboyrva0Vjza8WdDR4OkXt3n9ldX\nkaePP9VtYqctYhdvt5oivTeCZ2YOxXk6ubqMfV0b9mrljfqlFcq88k7z2U5axeItDa1OPessuC8P\nya7XRWYnwqdbT/ZMilvIu4dpslNdixXja8Y5tt85djZdbDWnGOesRtXFtuw6T27No5Kx2OrKYQlC\nExKJgBnEpiyvdlEgsizKLKollFgWxLKJVRLKJBbEp3VxLKJBnuMWQJEbpBIAAAJAAAABIAAAAAAA\nlAJAAAAAAAAAAAAAASAAAAAAAAAAAAAJAAAABAJABAlAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAA\nAAABAJQAAAAgAABAAI2EoBGyJhkgGPKxmqxAKpownHC+YRMdN5BrTj67R3bOn01o7p01Iv71u89o\n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\n2Q==`;\n"], - "mappings": "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,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,iBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,iBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,gBAAkB,kBACnB,CAAC,cAAgB,kBACjB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,mBAGT,GAAS,CACpB,IAAK,GAAI,IAAK,GAAI,EAAG,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,EACtJ,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,GAAI,GAClJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,IAAK,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,GACrJ,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,EAAG,IAC7I,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAClJ,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GACrJ,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,GACpJ,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,GACjJ,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,EAAG,IAC/I,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,EAAG,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IACnJ,IAAK,GAAI,EAAG,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IACnJ,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,IAAK,IAAK,GAAI,EAAG,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAC9I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GACtJ,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,GAClJ,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,EAAG,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GACnJ,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GACrJ,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IACpJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,EAAG,IAClJ,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,IAAK,IAAK,IACnJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IACnJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAChJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,EAAG,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAChJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAC7I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAClJ,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAC7I,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,EAAG,IAAK,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GACnJ,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GACpJ,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,GAAI,IAAK,GAAI,IAAK,EAAG,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAClJ,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAClJ,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,GAAI,EAAG,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAChJ,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IACpJ,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GACrJ,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,GAAI,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,GACpJ,IAAK,GAAI,IAAK,IAAK,EAAG,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,EAAG,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAC/I,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,EAAG,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAC9I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GACpJ,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GACrJ,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IACpJ,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,EACpJ,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAC9I,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,EAAG,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,EAAG,GAAI,IAClJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAC9I,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAChJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAChJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAC9I,IAAK,GAAI,IAAK,EAAG,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAChJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAClJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,IAAK,IAAK,IAAK,IAAK,IACpJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAw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G,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CAC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AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kEA0JP,GAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;qBtC3JpB,+BA8CO,QA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", + "sourcesContent": ["// wrapper to load tfjs in a single place so version can be changed quickly\n\n// simplified\n// { modules: 1061, moduleBytes: 3772720, outputBytes: 1531035 }\n\n// export * from '@tensorflow/tfjs/dist/index.js';\n// export * from '@tensorflow/tfjs-backend-wasm';\n\n// modular\n// { modules: 1064, moduleBytes: 3793219, outputBytes: 1535600 }\n\n// get versions of all packages.\nimport * as packageBundle from '@tensorflow/tfjs/package.json';\nimport * as packageCore from '@tensorflow/tfjs-core/package.json';\nimport * as packageData from '@tensorflow/tfjs-data/package.json';\nimport * as packageLayers from '@tensorflow/tfjs-layers/package.json';\nimport * as packageConverter from '@tensorflow/tfjs-converter/package.json';\n// for backends, get version from source so it can register backend during import\nimport { version_cpu } from '@tensorflow/tfjs-backend-cpu/dist/index.js';\nimport { version_webgl } from '@tensorflow/tfjs-backend-webgl/dist/index.js';\nimport { version_wasm } from '@tensorflow/tfjs-backend-wasm/dist/index.js';\n\n// export all\nexport * from '@tensorflow/tfjs-core/dist/index.js';\nexport * from '@tensorflow/tfjs-layers/dist/index.js';\nexport * from '@tensorflow/tfjs-converter/dist/index.js';\nexport * as data from '@tensorflow/tfjs-data/dist/index.js';\nexport * from '@tensorflow/tfjs-backend-cpu/dist/index.js';\nexport * from '@tensorflow/tfjs-backend-webgl/dist/index.js';\nexport * from '@tensorflow/tfjs-backend-wasm/dist/index.js';\n\n// export versions\nexport const version = {\n tfjs: packageBundle.version,\n 'tfjs-core': packageCore.version,\n 'tfjs-data': packageData.version,\n 'tfjs-layers': packageLayers.version,\n 'tfjs-converter': packageConverter.version,\n 'tfjs-backend-cpu': version_cpu,\n 'tfjs-backend-webgl': version_webgl,\n 'tfjs-backend-wasm': version_wasm,\n};\n", "import { log } from '../helpers';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as blazeface from './blazeface';\nimport * as facepipeline from './facepipeline';\nimport * as coords from './coords';\n\nexport class MediaPipeFaceMesh {\n facePipeline: any;\n config: any;\n\n constructor(blazeFace, blazeMeshModel, irisModel, config) {\n this.facePipeline = new facepipeline.Pipeline(blazeFace, blazeMeshModel, irisModel);\n this.config = config;\n }\n\n async estimateFaces(input, config): Promise<{ confidence, boxConfidence, faceConfidence, box, mesh, boxRaw, meshRaw, annotations, image }[]> {\n const predictions = await this.facePipeline.predict(input, config);\n const results: Array<{ confidence, boxConfidence, faceConfidence, box, mesh, boxRaw, meshRaw, annotations, image }> = [];\n for (const prediction of (predictions || [])) {\n if (prediction.isDisposedInternal) continue; // guard against disposed tensors on long running operations such as pause in middle of processing\n const mesh = prediction.coords ? prediction.coords.arraySync() : [];\n const meshRaw = mesh.map((pt) => [\n pt[0] / input.shape[2],\n pt[1] / input.shape[1],\n pt[2] / this.facePipeline.meshSize,\n ]);\n const annotations = {};\n if (mesh && mesh.length > 0) {\n for (const key of Object.keys(coords.MESH_ANNOTATIONS)) annotations[key] = coords.MESH_ANNOTATIONS[key].map((index) => mesh[index]);\n }\n const box = prediction.box ? [\n Math.max(0, prediction.box.startPoint[0]),\n Math.max(0, prediction.box.startPoint[1]),\n Math.min(input.shape[1], prediction.box.endPoint[0]) - Math.max(0, prediction.box.startPoint[0]),\n Math.min(input.shape[2], prediction.box.endPoint[1]) - Math.max(0, prediction.box.startPoint[1]),\n ] : 0;\n const boxRaw = prediction.box ? [\n prediction.box.startPoint[0] / input.shape[2],\n prediction.box.startPoint[1] / input.shape[1],\n (prediction.box.endPoint[0] - prediction.box.startPoint[0]) / input.shape[2],\n (prediction.box.endPoint[1] - prediction.box.startPoint[1]) / input.shape[1],\n ] : [];\n results.push({\n confidence: prediction.faceConfidence || prediction.boxConfidence || 0,\n boxConfidence: prediction.boxConfidence,\n faceConfidence: prediction.faceConfidence,\n box,\n boxRaw,\n mesh,\n meshRaw,\n annotations,\n image: prediction.image ? prediction.image.clone() : null,\n });\n if (prediction.coords) prediction.coords.dispose();\n if (prediction.image) prediction.image.dispose();\n }\n return results;\n }\n}\n\nlet faceModels = [null, null, null];\nexport async function load(config) {\n // @ts-ignore\n faceModels = await Promise.all([\n (!faceModels[0] && config.face.enabled) ? blazeface.load(config) : null,\n (!faceModels[1] && config.face.mesh.enabled) ? tf.loadGraphModel(config.face.mesh.modelPath, { fromTFHub: config.face.mesh.modelPath.includes('tfhub.dev') }) : null,\n (!faceModels[2] && config.face.iris.enabled) ? tf.loadGraphModel(config.face.iris.modelPath, { fromTFHub: config.face.iris.modelPath.includes('tfhub.dev') }) : null,\n ]);\n const faceMesh = new MediaPipeFaceMesh(faceModels[0], faceModels[1], faceModels[2], config);\n if (config.face.mesh.enabled && config.debug) log(`load model: ${config.face.mesh.modelPath.match(/\\/(.*)\\./)[1]}`);\n if (config.face.iris.enabled && config.debug) log(`load model: ${config.face.iris.modelPath.match(/\\/(.*)\\./)[1]}`);\n return faceMesh;\n}\n\nexports.triangulation = coords.TRI468;\n", "export const partNames = [\n 'nose', 'leftEye', 'rightEye', 'leftEar', 'rightEar', 'leftShoulder',\n 'rightShoulder', 'leftElbow', 'rightElbow', 'leftWrist', 'rightWrist',\n 'leftHip', 'rightHip', 'leftKnee', 'rightKnee', 'leftAnkle', 'rightAnkle',\n];\n\nexport const NUM_KEYPOINTS = exports.partNames.length; // 17 keypoints\n\nexport const partIds = exports.partNames.reduce((result, jointName, i) => {\n result[jointName] = i;\n return result;\n}, {});\n\nconst connectedPartNames = [\n ['leftHip', 'leftShoulder'], ['leftElbow', 'leftShoulder'],\n ['leftElbow', 'leftWrist'], ['leftHip', 'leftKnee'],\n ['leftKnee', 'leftAnkle'], ['rightHip', 'rightShoulder'],\n ['rightElbow', 'rightShoulder'], ['rightElbow', 'rightWrist'],\n ['rightHip', 'rightKnee'], ['rightKnee', 'rightAnkle'],\n ['leftShoulder', 'rightShoulder'], ['leftHip', 'rightHip'],\n];\nexport const connectedPartIndices = connectedPartNames.map(([jointNameA, jointNameB]) => ([partIds[jointNameA], partIds[jointNameB]]));\n\nexport const poseChain = [\n ['nose', 'leftEye'], ['leftEye', 'leftEar'], ['nose', 'rightEye'],\n ['rightEye', 'rightEar'], ['nose', 'leftShoulder'],\n ['leftShoulder', 'leftElbow'], ['leftElbow', 'leftWrist'],\n ['leftShoulder', 'leftHip'], ['leftHip', 'leftKnee'],\n ['leftKnee', 'leftAnkle'], ['nose', 'rightShoulder'],\n ['rightShoulder', 'rightElbow'], ['rightElbow', 'rightWrist'],\n ['rightShoulder', 'rightHip'], ['rightHip', 'rightKnee'],\n ['rightKnee', 'rightAnkle'],\n];\n\nexport const partChannels = [\n 'left_face',\n 'right_face',\n 'right_upper_leg_front',\n 'right_lower_leg_back',\n 'right_upper_leg_back',\n 'left_lower_leg_front',\n 'left_upper_leg_front',\n 'left_upper_leg_back',\n 'left_lower_leg_back',\n 'right_feet',\n 'right_lower_leg_front',\n 'left_feet',\n 'torso_front',\n 'torso_back',\n 'right_upper_arm_front',\n 'right_upper_arm_back',\n 'right_lower_arm_back',\n 'left_lower_arm_front',\n 'left_upper_arm_front',\n 'left_upper_arm_back',\n 'left_lower_arm_back',\n 'right_hand',\n 'right_lower_arm_front',\n 'left_hand',\n];\n", "// helper function: wrapper around console output\nexport function log(...msg) {\n const dt = new Date();\n const ts = `${dt.getHours().toString().padStart(2, '0')}:${dt.getMinutes().toString().padStart(2, '0')}:${dt.getSeconds().toString().padStart(2, '0')}.${dt.getMilliseconds().toString().padStart(3, '0')}`;\n // eslint-disable-next-line no-console\n if (msg) console.log(ts, 'Human:', ...msg);\n}\n\n// helper function: gets elapsed time on both browser and nodejs\nexport const now = () => {\n if (typeof performance !== 'undefined') return performance.now();\n return parseInt((Number(process.hrtime.bigint()) / 1000 / 1000).toString());\n};\n\n// helper function: perform deep merge of multiple objects so it allows full inheriance with overrides\nexport function mergeDeep(...objects) {\n const isObject = (obj) => obj && typeof obj === 'object';\n return objects.reduce((prev, obj) => {\n Object.keys(obj || {}).forEach((key) => {\n const pVal = prev[key];\n const oVal = obj[key];\n if (Array.isArray(pVal) && Array.isArray(oVal)) prev[key] = pVal.concat(...oVal);\n else if (isObject(pVal) && isObject(oVal)) prev[key] = mergeDeep(pVal, oVal);\n else prev[key] = oVal;\n });\n return prev;\n }, {});\n}\n", "export function info(): { platform: string, agent: string } {\n let platform;\n let agent;\n if (typeof navigator !== 'undefined') {\n const raw = navigator.userAgent.match(/\\(([^()]+)\\)/g);\n if (raw && raw[0]) {\n // @ts-ignore\n platform = raw[0].match(/\\(([^()]+)\\)/g)[0].replace(/\\(|\\)/g, '');\n agent = navigator.userAgent.replace(raw[0], '');\n if (platform[1]) agent = agent.replace(raw[1], '');\n agent = agent.replace(/ /g, ' ');\n }\n } else if (typeof process !== 'undefined') {\n platform = `${process.platform} ${process.arch}`;\n agent = `NodeJS ${process.version}`;\n }\n return { platform, agent };\n}\n", "import { log, now, mergeDeep } from './helpers';\nimport * as sysinfo from './sysinfo';\nimport * as tf from '../dist/tfjs.esm.js';\nimport * as backend from './tfjs/backend';\nimport * as faceall from './faceall';\nimport * as facemesh from './blazeface/facemesh';\nimport * as age from './age/age';\nimport * as gender from './gender/gender';\nimport * as faceres from './faceres/faceres';\nimport * as emotion from './emotion/emotion';\nimport * as embedding from './embedding/embedding';\nimport * as posenet from './posenet/posenet';\nimport * as handpose from './handpose/handpose';\nimport * as blazepose from './blazepose/blazepose';\nimport * as nanodet from './nanodet/nanodet';\nimport * as gesture from './gesture/gesture';\nimport * as image from './image/image';\nimport * as draw from './draw/draw';\nimport * as profile from './profile';\nimport { Config, defaults } from './config';\nimport { Result } from './result';\nimport * as sample from './sample';\nimport * as app from '../package.json';\n\n/** Generic Tensor object type */\nexport type Tensor = typeof tf.Tensor;\nexport type { Config } from './config';\nexport type { Result } from './result';\n/** Defines all possible input types for **Human** detection */\nexport type Input = Tensor | ImageData | ImageBitmap | HTMLVideoElement | HTMLCanvasElement | OffscreenCanvas;\n/** Error message */\nexport type Error = { error: string };\n/** Instance of TensorFlow/JS */\nexport type TensorFlow = typeof tf;\n/** Generic Model object type, holds instance of individual models */\ntype Model = Object;\n\n/**\n * **Human** library main class\n *\n * All methods and properties are available only as members of Human class\n *\n * - Configuration object definition: {@link Config}\n * - Results object definition: {@link Result}\n * - Possible inputs: {@link Input}\n */\nexport class Human {\n version: string;\n config: Config;\n state: string;\n image: { tensor: Tensor, canvas: OffscreenCanvas | HTMLCanvasElement };\n // classes\n tf: TensorFlow;\n draw: {\n drawOptions?: typeof draw.drawOptions,\n gesture: typeof draw.gesture,\n face: typeof draw.face,\n body: typeof draw.body,\n hand: typeof draw.hand,\n canvas: typeof draw.canvas,\n all: typeof draw.all,\n };\n // models\n models: {\n face: facemesh.MediaPipeFaceMesh | null,\n posenet: posenet.PoseNet | null,\n blazepose: Model | null,\n handpose: handpose.HandPose | null,\n iris: Model | null,\n age: Model | null,\n gender: Model | null,\n emotion: Model | null,\n embedding: Model | null,\n nanodet: Model | null,\n faceres: Model | null,\n };\n classes: {\n facemesh: typeof facemesh;\n age: typeof age;\n gender: typeof gender;\n emotion: typeof emotion;\n body: typeof posenet | typeof blazepose;\n hand: typeof handpose;\n nanodet: typeof nanodet;\n faceres: typeof faceres;\n };\n sysinfo: { platform: string, agent: string };\n perf: any;\n #numTensors: number;\n #analyzeMemoryLeaks: boolean;\n #checkSanity: boolean;\n #firstRun: boolean;\n // definition end\n\n constructor(userConfig: Config | Object = {}) {\n this.tf = tf;\n this.draw = draw;\n this.version = app.version;\n this.config = mergeDeep(defaults, userConfig);\n this.state = 'idle';\n this.#numTensors = 0;\n this.#analyzeMemoryLeaks = false;\n this.#checkSanity = false;\n this.#firstRun = true;\n this.perf = {};\n // object that contains all initialized models\n this.models = {\n face: null,\n posenet: null,\n blazepose: null,\n handpose: null,\n iris: null,\n age: null,\n gender: null,\n emotion: null,\n embedding: null,\n nanodet: null,\n faceres: null,\n };\n // export access to image processing\n // @ts-ignore\n this.image = (input: Input) => image.process(input, this.config);\n // export raw access to underlying models\n this.classes = {\n facemesh,\n age,\n gender,\n emotion,\n faceres,\n body: this.config.body.modelPath.includes('posenet') ? posenet : blazepose,\n hand: handpose,\n nanodet,\n };\n // include platform info\n this.sysinfo = sysinfo.info();\n }\n\n profileData(): { newBytes, newTensors, peakBytes, numKernelOps, timeKernelOps, slowestKernelOps, largestKernelOps } | {} {\n if (this.config.profile) return profile.data;\n return {};\n }\n\n // helper function: measure tensor leak\n /** @hidden */\n analyze = (...msg) => {\n if (!this.#analyzeMemoryLeaks) return;\n const current = this.tf.engine().state.numTensors;\n const previous = this.#numTensors;\n this.#numTensors = current;\n const leaked = current - previous;\n if (leaked !== 0) log(...msg, leaked);\n }\n\n // quick sanity check on inputs\n /** @hidden */\n #sanity = (input): null | string => {\n if (!this.#checkSanity) return null;\n if (!input) return 'input is not defined';\n if (this.tf.ENV.flags.IS_NODE && !(input instanceof tf.Tensor)) return 'input must be a tensor';\n try {\n this.tf.getBackend();\n } catch {\n return 'backend not loaded';\n }\n return null;\n }\n\n similarity(embedding1: Array, embedding2: Array): number {\n if (this.config.face.description.enabled) return faceres.similarity(embedding1, embedding2);\n if (this.config.face.embedding.enabled) return embedding.similarity(embedding1, embedding2);\n return 0;\n }\n\n // eslint-disable-next-line class-methods-use-this\n enhance(input: Tensor): Tensor | null {\n return faceres.enhance(input);\n }\n\n // eslint-disable-next-line class-methods-use-this\n match(faceEmbedding: Array, db: Array<{ name: string, source: string, embedding: number[] }>, threshold = 0): { name: string, source: string, similarity: number, embedding: number[] } {\n return faceres.match(faceEmbedding, db, threshold);\n }\n\n // preload models, not explicitly required as it's done automatically on first use\n async load(userConfig: Config | Object = {}) {\n this.state = 'load';\n const timeStamp = now();\n if (userConfig) this.config = mergeDeep(this.config, userConfig);\n\n if (this.#firstRun) {\n if (this.config.debug) log(`version: ${this.version}`);\n if (this.config.debug) log(`tfjs version: ${this.tf.version_core}`);\n if (this.config.debug) log('platform:', this.sysinfo.platform);\n if (this.config.debug) log('agent:', this.sysinfo.agent);\n\n await this.#checkBackend(true);\n if (this.tf.ENV.flags.IS_BROWSER) {\n if (this.config.debug) log('configuration:', this.config);\n if (this.config.debug) log('tf flags:', this.tf.ENV.flags);\n }\n }\n if (this.config.async) {\n [\n this.models.face,\n this.models.age,\n this.models.gender,\n this.models.emotion,\n this.models.embedding,\n this.models.handpose,\n this.models.posenet,\n this.models.blazepose,\n this.models.nanodet,\n this.models.faceres,\n ] = await Promise.all([\n this.models.face || (this.config.face.enabled ? facemesh.load(this.config) : null),\n this.models.age || ((this.config.face.enabled && this.config.face.age.enabled) ? age.load(this.config) : null),\n this.models.gender || ((this.config.face.enabled && this.config.face.gender.enabled) ? gender.load(this.config) : null),\n this.models.emotion || ((this.config.face.enabled && this.config.face.emotion.enabled) ? emotion.load(this.config) : null),\n this.models.embedding || ((this.config.face.enabled && this.config.face.embedding.enabled) ? embedding.load(this.config) : null),\n this.models.handpose || (this.config.hand.enabled ? handpose.load(this.config) : null),\n this.models.posenet || (this.config.body.enabled && this.config.body.modelPath.includes('posenet') ? posenet.load(this.config) : null),\n this.models.posenet || (this.config.body.enabled && this.config.body.modelPath.includes('blazepose') ? blazepose.load(this.config) : null),\n this.models.nanodet || (this.config.object.enabled ? nanodet.load(this.config) : null),\n this.models.faceres || ((this.config.face.enabled && this.config.face.description.enabled) ? faceres.load(this.config) : null),\n ]);\n } else {\n if (this.config.face.enabled && !this.models.face) this.models.face = await facemesh.load(this.config);\n if (this.config.face.enabled && this.config.face.age.enabled && !this.models.age) this.models.age = await age.load(this.config);\n if (this.config.face.enabled && this.config.face.gender.enabled && !this.models.gender) this.models.gender = await gender.load(this.config);\n if (this.config.face.enabled && this.config.face.emotion.enabled && !this.models.emotion) this.models.emotion = await emotion.load(this.config);\n if (this.config.face.enabled && this.config.face.embedding.enabled && !this.models.embedding) this.models.embedding = await embedding.load(this.config);\n if (this.config.hand.enabled && !this.models.handpose) this.models.handpose = await handpose.load(this.config);\n if (this.config.body.enabled && !this.models.posenet && this.config.body.modelPath.includes('posenet')) this.models.posenet = await posenet.load(this.config);\n if (this.config.body.enabled && !this.models.blazepose && this.config.body.modelPath.includes('blazepose')) this.models.blazepose = await blazepose.load(this.config);\n if (this.config.object.enabled && !this.models.nanodet) this.models.nanodet = await nanodet.load(this.config);\n if (this.config.face.enabled && this.config.face.description.enabled && !this.models.faceres) this.models.faceres = await faceres.load(this.config);\n }\n\n if (this.#firstRun) {\n if (this.config.debug) log('tf engine state:', this.tf.engine().state.numBytes, 'bytes', this.tf.engine().state.numTensors, 'tensors');\n this.#firstRun = false;\n }\n\n const current = Math.trunc(now() - timeStamp);\n if (current > (this.perf.load || 0)) this.perf.load = current;\n }\n\n // check if backend needs initialization if it changed\n /** @hidden */\n #checkBackend = async (force = false) => {\n if (this.config.backend && (this.config.backend !== '') && force || (this.tf.getBackend() !== this.config.backend)) {\n const timeStamp = now();\n this.state = 'backend';\n /* force backend reload\n if (this.config.backend in tf.engine().registry) {\n const backendFactory = tf.findBackendFactory(this.config.backend);\n tf.removeBackend(this.config.backend);\n tf.registerBackend(this.config.backend, backendFactory);\n } else {\n log('Backend not registred:', this.config.backend);\n }\n */\n\n if (this.config.backend && this.config.backend !== '') {\n if (this.tf.ENV.flags.IS_BROWSER && this.config.backend === 'tensorflow') this.config.backend = 'webgl';\n if (this.tf.ENV.flags.IS_NODE && (this.config.backend === 'webgl' || this.config.backend === 'wasm')) this.config.backend = 'tensorflow';\n if (this.config.debug) log('setting backend:', this.config.backend);\n\n if (this.config.backend === 'wasm') {\n if (this.config.debug) log('wasm path:', this.config.wasmPath);\n this.tf.setWasmPaths(this.config.wasmPath);\n const simd = await this.tf.env().getAsync('WASM_HAS_SIMD_SUPPORT');\n const mt = await this.tf.env().getAsync('WASM_HAS_MULTITHREAD_SUPPORT');\n if (this.config.debug) log(`wasm execution: ${simd ? 'SIMD' : 'no SIMD'} ${mt ? 'multithreaded' : 'singlethreaded'}`);\n if (!simd) log('warning: wasm simd support is not enabled');\n }\n\n if (this.config.backend === 'humangl') backend.register();\n try {\n await this.tf.setBackend(this.config.backend);\n } catch (err) {\n log('error: cannot set backend:', this.config.backend, err);\n }\n }\n this.tf.enableProdMode();\n /* debug mode is really too mcuh\n tf.enableDebugMode();\n */\n if (this.tf.getBackend() === 'webgl') {\n if (this.config.deallocate) {\n log('changing webgl: WEBGL_DELETE_TEXTURE_THRESHOLD:', this.config.deallocate);\n this.tf.ENV.set('WEBGL_DELETE_TEXTURE_THRESHOLD', this.config.deallocate ? 0 : -1);\n }\n // this.tf.ENV.set('WEBGL_FORCE_F16_TEXTURES', true);\n // this.tf.ENV.set('WEBGL_PACK_DEPTHWISECONV', true);\n const gl = await this.tf.backend().getGPGPUContext().gl;\n if (this.config.debug) log(`gl version:${gl.getParameter(gl.VERSION)} renderer:${gl.getParameter(gl.RENDERER)}`);\n }\n await this.tf.ready();\n this.perf.backend = Math.trunc(now() - timeStamp);\n }\n }\n\n // main detect function\n async detect(input: Input, userConfig: Config | Object = {}): Promise {\n // detection happens inside a promise\n return new Promise(async (resolve) => {\n this.state = 'config';\n let timeStamp;\n\n // update configuration\n this.config = mergeDeep(this.config, userConfig);\n\n // sanity checks\n this.state = 'check';\n const error = this.#sanity(input);\n if (error) {\n log(error, input);\n resolve({ error });\n }\n\n const timeStart = now();\n\n // configure backend\n await this.#checkBackend();\n\n // load models if enabled\n await this.load();\n\n if (this.config.scoped) this.tf.engine().startScope();\n this.analyze('Start Scope:');\n\n timeStamp = now();\n const process = image.process(input, this.config);\n if (!process || !process.tensor) {\n log('could not convert input to tensor');\n resolve({ error: 'could not convert input to tensor' });\n return;\n }\n this.perf.image = Math.trunc(now() - timeStamp);\n this.analyze('Get Image:');\n\n // prepare where to store model results\n let bodyRes;\n let handRes;\n let faceRes;\n let objectRes;\n let current;\n\n // run face detection followed by all models that rely on face bounding box: face mesh, age, gender, emotion\n if (this.config.async) {\n faceRes = this.config.face.enabled ? faceall.detectFace(this, process.tensor) : [];\n if (this.perf.face) delete this.perf.face;\n } else {\n this.state = 'run:face';\n timeStamp = now();\n faceRes = this.config.face.enabled ? await faceall.detectFace(this, process.tensor) : [];\n current = Math.trunc(now() - timeStamp);\n if (current > 0) this.perf.face = current;\n }\n\n // run body: can be posenet or blazepose\n this.analyze('Start Body:');\n if (this.config.async) {\n if (this.config.body.modelPath.includes('posenet')) bodyRes = this.config.body.enabled ? this.models.posenet?.estimatePoses(process.tensor, this.config) : [];\n else bodyRes = this.config.body.enabled ? blazepose.predict(process.tensor, this.config) : [];\n if (this.perf.body) delete this.perf.body;\n } else {\n this.state = 'run:body';\n timeStamp = now();\n if (this.config.body.modelPath.includes('posenet')) bodyRes = this.config.body.enabled ? await this.models.posenet?.estimatePoses(process.tensor, this.config) : [];\n else bodyRes = this.config.body.enabled ? await blazepose.predict(process.tensor, this.config) : [];\n current = Math.trunc(now() - timeStamp);\n if (current > 0) this.perf.body = current;\n }\n this.analyze('End Body:');\n\n // run handpose\n this.analyze('Start Hand:');\n if (this.config.async) {\n handRes = this.config.hand.enabled ? this.models.handpose?.estimateHands(process.tensor, this.config) : [];\n if (this.perf.hand) delete this.perf.hand;\n } else {\n this.state = 'run:hand';\n timeStamp = now();\n handRes = this.config.hand.enabled ? await this.models.handpose?.estimateHands(process.tensor, this.config) : [];\n current = Math.trunc(now() - timeStamp);\n if (current > 0) this.perf.hand = current;\n }\n this.analyze('End Hand:');\n\n // run nanodet\n this.analyze('Start Object:');\n if (this.config.async) {\n objectRes = this.config.object.enabled ? nanodet.predict(process.tensor, this.config) : [];\n if (this.perf.object) delete this.perf.object;\n } else {\n this.state = 'run:object';\n timeStamp = now();\n objectRes = this.config.object.enabled ? await nanodet.predict(process.tensor, this.config) : [];\n current = Math.trunc(now() - timeStamp);\n if (current > 0) this.perf.object = current;\n }\n this.analyze('End Object:');\n\n // if async wait for results\n if (this.config.async) {\n [faceRes, bodyRes, handRes, objectRes] = await Promise.all([faceRes, bodyRes, handRes, objectRes]);\n }\n process.tensor.dispose();\n\n if (this.config.scoped) this.tf.engine().endScope();\n this.analyze('End Scope:');\n\n let gestureRes = [];\n if (this.config.gesture.enabled) {\n timeStamp = now();\n // @ts-ignore\n gestureRes = [...gesture.face(faceRes), ...gesture.body(bodyRes), ...gesture.hand(handRes), ...gesture.iris(faceRes)];\n if (!this.config.async) this.perf.gesture = Math.trunc(now() - timeStamp);\n else if (this.perf.gesture) delete this.perf.gesture;\n }\n\n this.perf.total = Math.trunc(now() - timeStart);\n this.state = 'idle';\n const result = {\n face: faceRes,\n body: bodyRes,\n hand: handRes,\n gesture: gestureRes,\n object: objectRes,\n performance: this.perf,\n canvas: process.canvas,\n };\n // log('Result:', result);\n resolve(result);\n });\n }\n\n /** @hidden */\n #warmupBitmap = async () => {\n const b64toBlob = (base64, type = 'application/octet-stream') => fetch(`data:${type};base64,${base64}`).then((res) => res.blob());\n let blob;\n let res;\n switch (this.config.warmup) {\n case 'face': blob = await b64toBlob(sample.face); break;\n case 'full': blob = await b64toBlob(sample.body); break;\n default: blob = null;\n }\n if (blob) {\n const bitmap = await createImageBitmap(blob);\n res = await this.detect(bitmap, this.config);\n bitmap.close();\n }\n return res;\n }\n\n /** @hidden */\n #warmupCanvas = async () => new Promise((resolve) => {\n let src;\n let size = 0;\n switch (this.config.warmup) {\n case 'face':\n size = 256;\n src = 'data:image/jpeg;base64,' + sample.face;\n break;\n case 'full':\n case 'body':\n size = 1200;\n src = 'data:image/jpeg;base64,' + sample.body;\n break;\n default:\n src = null;\n }\n // src = encodeURI('../assets/human-sample-upper.jpg');\n const img = new Image();\n img.onload = async () => {\n const canvas = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(size, size) : document.createElement('canvas');\n canvas.width = img.naturalWidth;\n canvas.height = img.naturalHeight;\n const ctx = canvas.getContext('2d');\n ctx?.drawImage(img, 0, 0);\n // const data = ctx?.getImageData(0, 0, canvas.height, canvas.width);\n const res = await this.detect(canvas, this.config);\n resolve(res);\n };\n if (src) img.src = src;\n else resolve(null);\n });\n\n /** @hidden */\n #warmupNode = async () => {\n const atob = (str) => Buffer.from(str, 'base64');\n const img = this.config.warmup === 'face' ? atob(sample.face) : atob(sample.body);\n // @ts-ignore\n const data = tf.node.decodeJpeg(img); // tf.node is only defined when compiling for nodejs\n const expanded = data.expandDims(0);\n this.tf.dispose(data);\n // log('Input:', expanded);\n const res = await this.detect(expanded, this.config);\n this.tf.dispose(expanded);\n return res;\n }\n\n async warmup(userConfig: Config | Object = {}): Promise {\n const t0 = now();\n if (userConfig) this.config = mergeDeep(this.config, userConfig);\n const save = this.config.videoOptimized;\n this.config.videoOptimized = false;\n let res;\n if (typeof createImageBitmap === 'function') res = await this.#warmupBitmap();\n else if (typeof Image !== 'undefined') res = await this.#warmupCanvas();\n else res = await this.#warmupNode();\n this.config.videoOptimized = save;\n const t1 = now();\n if (this.config.debug) log('Warmup', this.config.warmup, Math.round(t1 - t0), 'ms', res);\n return res;\n }\n}\n\n/**\n * Class Human is also available as default export\n */\nexport { Human as default };\n", "import { log } from '../helpers';\nimport * as tf from '../../dist/tfjs.esm.js';\n\nexport const config = {\n name: 'humangl',\n priority: 99,\n canvas: null,\n gl: null,\n width: 1024,\n height: 1024,\n webGLattr: { // https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.2\n alpha: false,\n antialias: false,\n premultipliedAlpha: false,\n preserveDrawingBuffer: false,\n depth: false,\n stencil: false,\n failIfMajorPerformanceCaveat: false,\n desynchronized: true,\n },\n};\n\nexport function register(): void {\n if (!tf.findBackend(config.name)) {\n log('backend registration:', config.name);\n try {\n // @ts-ignore\n config.canvas = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(config.width, config.height) : document.createElement('canvas');\n } catch (err) {\n log('error: cannot create canvas:', err);\n return;\n }\n try {\n // @ts-ignore\n config.gl = config.canvas.getContext('webgl2', config.webGLattr);\n } catch (err) {\n log('error: cannot get WebGL2 context:', err);\n return;\n }\n try {\n tf.setWebGLContext(2, config.gl);\n } catch (err) {\n log('error: cannot set WebGL2 context:', err);\n return;\n }\n try {\n const ctx = new tf.GPGPUContext(config.gl);\n tf.registerBackend(config.name, () => new tf.MathBackendWebGL(ctx), config.priority);\n } catch (err) {\n log('error: cannot register WebGL backend:', err);\n return;\n }\n try {\n const kernels = tf.getKernelsForBackend('webgl');\n kernels.forEach((kernelConfig) => {\n const newKernelConfig = { ...kernelConfig, backendName: config.name };\n tf.registerKernel(newKernelConfig);\n });\n } catch (err) {\n log('error: cannot update WebGL backend registration:', err);\n return;\n }\n try {\n tf.ENV.set('WEBGL_VERSION', 2);\n // @ts-ignore\n // tf.ENV.set('WEBGL_MAX_TEXTURE_SIZE', config.gl.getParameter(config.gl.MAX_TEXTURE_SIZE));\n // tf.ENV.set('WEBGL_FORCE_F16_TEXTURES', true);\n // tf.ENV.set('WEBGL_PACK_DEPTHWISECONV', true);\n } catch (err) {\n log('error: cannot set WebGL backend flags:', err);\n return;\n }\n log('backend registered:', config.name);\n }\n}\n", "import { log } from '../helpers';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile';\n\nlet model;\nlet last = { age: 0 };\nlet skipped = Number.MAX_SAFE_INTEGER;\n\nexport async function load(config) {\n if (!model) {\n model = await tf.loadGraphModel(config.face.age.modelPath);\n if (config.debug) log(`load model: ${config.face.age.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return model;\n}\n\nexport async function predict(image, config) {\n if (!model) return null;\n if ((skipped < config.face.age.skipFrames) && config.videoOptimized && last.age && (last.age > 0)) {\n skipped++;\n return last;\n }\n if (config.videoOptimized) skipped = 0;\n else skipped = Number.MAX_SAFE_INTEGER;\n return new Promise(async (resolve) => {\n const resize = tf.image.resizeBilinear(image, [model.inputs[0].shape[2], model.inputs[0].shape[1]], false);\n const enhance = tf.mul(resize, [255.0]);\n tf.dispose(resize);\n\n let ageT;\n const obj = { age: 0 };\n\n if (!config.profile) {\n if (config.face.age.enabled) ageT = await model.predict(enhance);\n } else {\n const profileAge = config.face.age.enabled ? await tf.profile(() => model.predict(enhance)) : {};\n ageT = profileAge.result.clone();\n profileAge.result.dispose();\n profile.run('age', profileAge);\n }\n enhance.dispose();\n\n if (ageT) {\n const data = ageT.dataSync();\n obj.age = Math.trunc(10 * data[0]) / 10;\n }\n ageT.dispose();\n\n last = obj;\n resolve(obj);\n });\n}\n", "import { log } from './helpers';\n\nexport const data = {};\n\nexport function run(name: string, raw: any): void {\n if (!raw || !raw.kernels) return;\n const maxResults = 5;\n const time = raw.kernels\n .filter((a) => a.kernelTimeMs > 0)\n .reduce((a, b) => a += b.kernelTimeMs, 0);\n const slowest = raw.kernels\n .map((a, i) => { a.id = i; return a; })\n .filter((a) => a.kernelTimeMs > 0)\n .sort((a, b) => b.kernelTimeMs - a.kernelTimeMs);\n const largest = raw.kernels\n .map((a, i) => { a.id = i; return a; })\n .filter((a) => a.totalBytesSnapshot > 0)\n .sort((a, b) => b.totalBytesSnapshot - a.totalBytesSnapshot);\n if (slowest.length > maxResults) slowest.length = maxResults;\n if (largest.length > maxResults) largest.length = maxResults;\n const res = { newBytes: raw.newBytes, newTensors: raw.newTensors, peakBytes: raw.peakBytes, numKernelOps: raw.kernels.length, timeKernelOps: time, slowestKernelOps: slowest, largestKernelOps: largest };\n data[name] = res;\n log('Human profiler', name, res);\n}\n", "import { log } from '../helpers';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile';\n\nlet model;\nlet last = { gender: '' };\nlet skipped = Number.MAX_SAFE_INTEGER;\nlet alternative = false;\n\n// tuning values\nconst rgb = [0.2989, 0.5870, 0.1140]; // factors for red/green/blue colors when converting to grayscale\n\nexport async function load(config) {\n if (!model) {\n model = await tf.loadGraphModel(config.face.gender.modelPath);\n alternative = model.inputs[0].shape[3] === 1;\n if (config.debug) log(`load model: ${config.face.gender.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return model;\n}\n\nexport async function predict(image, config) {\n if (!model) return null;\n if ((skipped < config.face.gender.skipFrames) && config.videoOptimized && last.gender !== '') {\n skipped++;\n return last;\n }\n if (config.videoOptimized) skipped = 0;\n else skipped = Number.MAX_SAFE_INTEGER;\n return new Promise(async (resolve) => {\n const resize = tf.image.resizeBilinear(image, [model.inputs[0].shape[2], model.inputs[0].shape[1]], false);\n let enhance;\n if (alternative) {\n enhance = tf.tidy(() => {\n const [red, green, blue] = tf.split(resize, 3, 3);\n const redNorm = tf.mul(red, rgb[0]);\n const greenNorm = tf.mul(green, rgb[1]);\n const blueNorm = tf.mul(blue, rgb[2]);\n const grayscale = tf.addN([redNorm, greenNorm, blueNorm]);\n const normalize = grayscale.sub(0.5).mul(2); // range grayscale:-1..1\n return normalize;\n });\n } else {\n enhance = tf.mul(resize, [255.0]); // range RGB:0..255\n }\n tf.dispose(resize);\n\n let genderT;\n const obj = { gender: '', confidence: 0 };\n\n if (!config.profile) {\n if (config.face.gender.enabled) genderT = await model.predict(enhance);\n } else {\n const profileGender = config.face.gender.enabled ? await tf.profile(() => model.predict(enhance)) : {};\n genderT = profileGender.result.clone();\n profileGender.result.dispose();\n profile.run('gender', profileGender);\n }\n enhance.dispose();\n\n if (genderT) {\n if (!Array.isArray(genderT)) {\n const data = genderT.dataSync();\n if (alternative) {\n // returns two values 0..1, bigger one is prediction\n if (data[0] > config.face.gender.minConfidence || data[1] > config.face.gender.minConfidence) {\n obj.gender = data[0] > data[1] ? 'female' : 'male';\n obj.confidence = data[0] > data[1] ? (Math.trunc(100 * data[0]) / 100) : (Math.trunc(100 * data[1]) / 100);\n }\n } else {\n // returns one value 0..1, .5 is prediction threshold\n const confidence = Math.trunc(200 * Math.abs((data[0] - 0.5))) / 100;\n if (confidence > config.face.gender.minConfidence) {\n obj.gender = data[0] <= 0.5 ? 'female' : 'male';\n obj.confidence = Math.min(0.99, confidence);\n }\n }\n genderT.dispose();\n } else {\n const gender = genderT[0].dataSync();\n const confidence = Math.trunc(200 * Math.abs((gender[0] - 0.5))) / 100;\n if (confidence > config.face.gender.minConfidence) {\n obj.gender = gender[0] <= 0.5 ? 'female' : 'male';\n obj.confidence = Math.min(0.99, confidence);\n }\n /*\n let age = genderT[1].argMax(1).dataSync()[0];\n const all = genderT[1].dataSync();\n age = Math.round(all[age - 1] > all[age + 1] ? 10 * age - 100 * all[age - 1] : 10 * age + 100 * all[age + 1]) / 10;\n const descriptor = genderT[1].dataSync();\n */\n genderT.forEach((t) => tf.dispose(t));\n }\n }\n last = obj;\n resolve(obj);\n });\n}\n", "import { log } from '../helpers';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile';\n\nconst annotations = ['angry', 'disgust', 'fear', 'happy', 'sad', 'surprise', 'neutral'];\nlet model;\nlet last: Array<{ score: number, emotion: string }> = [];\nlet skipped = Number.MAX_SAFE_INTEGER;\n\n// tuning values\nconst rgb = [0.2989, 0.5870, 0.1140]; // factors for red/green/blue colors when converting to grayscale\n\nexport async function load(config) {\n if (!model) {\n model = await tf.loadGraphModel(config.face.emotion.modelPath);\n if (config.debug) log(`load model: ${config.face.emotion.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return model;\n}\n\nexport async function predict(image, config) {\n if (!model) return null;\n if ((skipped < config.face.emotion.skipFrames) && config.videoOptimized && (last.length > 0)) {\n skipped++;\n return last;\n }\n if (config.videoOptimized) skipped = 0;\n else skipped = Number.MAX_SAFE_INTEGER;\n return new Promise(async (resolve) => {\n const resize = tf.image.resizeBilinear(image, [model.inputs[0].shape[2], model.inputs[0].shape[1]], false);\n const [red, green, blue] = tf.split(resize, 3, 3);\n resize.dispose();\n // weighted rgb to grayscale: https://www.mathworks.com/help/matlab/ref/rgb2gray.html\n const redNorm = tf.mul(red, rgb[0]);\n const greenNorm = tf.mul(green, rgb[1]);\n const blueNorm = tf.mul(blue, rgb[2]);\n red.dispose();\n green.dispose();\n blue.dispose();\n const grayscale = tf.addN([redNorm, greenNorm, blueNorm]);\n redNorm.dispose();\n greenNorm.dispose();\n blueNorm.dispose();\n const normalize = tf.tidy(() => grayscale.sub(0.5).mul(2));\n grayscale.dispose();\n const obj: Array<{ score: number, emotion: string }> = [];\n if (config.face.emotion.enabled) {\n let data;\n if (!config.profile) {\n const emotionT = await model.predict(normalize); // result is already in range 0..1, no need for additional activation\n data = emotionT.dataSync();\n tf.dispose(emotionT);\n } else {\n const profileData = await tf.profile(() => model.predict(normalize));\n data = profileData.result.dataSync();\n profileData.result.dispose();\n profile.run('emotion', profileData);\n }\n for (let i = 0; i < data.length; i++) {\n if (data[i] > config.face.emotion.minConfidence) obj.push({ score: Math.min(0.99, Math.trunc(100 * data[i]) / 100), emotion: annotations[i] });\n }\n obj.sort((a, b) => b.score - a.score);\n }\n normalize.dispose();\n last = obj;\n resolve(obj);\n });\n}\n", "import { log } from '../helpers';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile';\n\ntype Tensor = typeof tf.Tensor;\ntype DB = Array<{ name: string, source: string, embedding: number[] }>;\nlet model;\n\nexport async function load(config) {\n if (!model) {\n model = await tf.loadGraphModel(config.face.embedding.modelPath);\n if (config.debug) log(`load model: ${config.face.embedding.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return model;\n}\n\nexport function similarity(embedding1, embedding2, order = 2): number {\n if (!embedding1 || !embedding2) return 0;\n if (embedding1?.length === 0 || embedding2?.length === 0) return 0;\n if (embedding1?.length !== embedding2?.length) return 0;\n // general minkowski distance, euclidean distance is limited case where order is 2\n const distance = embedding1\n .map((val, i) => (Math.abs(embedding1[i] - embedding2[i]) ** order)) // distance squared\n .reduce((sum, now) => (sum + now), 0) // sum all distances\n ** (1 / order); // get root of\n const res = Math.max(Math.trunc(1000 * (1 - distance)) / 1000, 0);\n return res;\n}\n\nexport function match(embedding: Array, db: DB, threshold = 0) {\n let best = { similarity: 0, name: '', source: '', embedding: [] as number[] };\n if (!embedding || !db || !Array.isArray(embedding) || !Array.isArray(db)) return best;\n for (const f of db) {\n if (f.embedding && f.name) {\n const perc = similarity(embedding, f.embedding);\n if (perc > threshold && perc > best.similarity) best = { ...f, similarity: perc };\n }\n }\n return best;\n}\n\nexport function enhance(input): Tensor {\n const image = tf.tidy(() => {\n // input received from detector is already normalized to 0..1\n // input is also assumed to be straightened\n // const data = tf.image.resizeBilinear(input, [model.inputs[0].shape[2], model.inputs[0].shape[1]], false); // just resize to fit the embedding model\n // do a tight crop of image and resize it to fit the model\n const box = [[0.05, 0.15, 0.85, 0.85]]; // empyrical values for top, left, bottom, right\n const tensor = input.image || input.tensor;\n if (!(tensor instanceof tf.Tensor)) return null;\n const crop = (tensor.shape.length === 3)\n ? tf.image.cropAndResize(tf.expandDims(tensor, 0), box, [0], [model.inputs[0].shape[2], model.inputs[0].shape[1]]) // add batch dimension if missing\n : tf.image.cropAndResize(tensor, box, [0], [model.inputs[0].shape[2], model.inputs[0].shape[1]]);\n\n // convert to black&white to avoid colorization impact\n const rgb = [0.2989, 0.5870, 0.1140]; // factors for red/green/blue colors when converting to grayscale: https://www.mathworks.com/help/matlab/ref/rgb2gray.html\n const [red, green, blue] = tf.split(crop, 3, 3);\n const redNorm = tf.mul(red, rgb[0]);\n const greenNorm = tf.mul(green, rgb[1]);\n const blueNorm = tf.mul(blue, rgb[2]);\n const grayscale = tf.addN([redNorm, greenNorm, blueNorm]);\n const merge = tf.stack([grayscale, grayscale, grayscale], 3).squeeze(4);\n\n /*\n // optional increase image contrast\n // or do it per-channel so mean is done on each channel\n // or do it based on histogram\n const mean = merge.mean();\n const factor = 5;\n const contrast = merge.sub(mean).mul(factor).add(mean);\n */\n\n // normalize brightness from 0..1\n const darken = merge.sub(merge.min());\n const lighten = darken.div(darken.max());\n\n return lighten;\n });\n return image;\n}\n\nexport async function predict(input, config): Promise {\n if (!model) return [];\n return new Promise(async (resolve) => {\n // let data: Array<[]> = [];\n let data: Array = [];\n if (config.face.embedding.enabled) {\n const image = enhance(input);\n if (!config.profile) {\n data = tf.tidy(() => {\n /*\n // if needed convert from NHWC to NCHW\n const nchw = image.transpose([3, 0, 1, 2]);\n */\n\n const res = model.predict(image);\n\n /*\n // optionally do it twice with flipped image and average results\n const res1 = model.predict(image);\n const flipped = tf.image.flipLeftRight(image);\n const res2 = model.predict(flipped);\n const merge = tf.stack([res1, res2], 2).squeeze();\n const res = reshape.logSumExp(1);\n */\n\n /*\n // optional normalize outputs with l2 normalization\n const scaled = tf.tidy(() => {\n const l2 = res.norm('euclidean');\n const scale = res.div(l2);\n return scale;\n });\n */\n\n // optional reduce feature vector complexity\n const reshape = res.reshape([128, 2]); // split 256 vectors into 128 x 2\n const reduce = reshape.logSumExp(1); // reduce 2nd dimension by calculating logSumExp on it\n\n const output: Array = reduce.dataSync();\n return [...output]; // convert typed array to simple array\n });\n } else {\n const profileData = await tf.profile(() => model.predict({ img_inputs: image }));\n data = [...profileData.result.dataSync()];\n profileData.result.dispose();\n profile.run('emotion', profileData);\n }\n tf.dispose(image);\n }\n resolve(data);\n });\n}\n\n/*\ngit clone https://github.com/becauseofAI/MobileFace\ncd MobileFace/MobileFace_Identification\nmmconvert --srcFramework mxnet --inputWeight MobileFace_Identification_V3-0000.params --inputNetwork MobileFace_Identification_V3-symbol.json --inputShape 3,112,112 --dstFramework tensorflow --outputModel saved\nsaved_model_cli show --dir saved/\ntensorflowjs_converter --input_format tf_saved_model --output_format tfjs_graph_model --saved_model_tags train saved/ graph/\n~/dev/detector/signature.js graph/\n2021-03-12 08:25:12 DATA: created on: 2021-03-12T13:17:11.960Z\n2021-03-12 08:25:12 INFO: graph model: /home/vlado/dev/face/MobileFace/MobileFace_Identification/graph/model.json\n2021-03-12 08:25:12 INFO: size: { unreliable: true, numTensors: 75, numDataBuffers: 75, numBytes: 2183192 }\n2021-03-12 08:25:12 INFO: model inputs based on signature\n2021-03-12 08:25:12 INFO: model outputs based on signature\n2021-03-12 08:25:12 DATA: inputs: [ { name: 'data:0', dtype: 'DT_FLOAT', shape: [ -1, 112, 112, 3, [length]: 4 ] }, [length]: 1 ]\n2021-03-12 08:25:12 DATA: outputs: [ { id: 0, name: 'batchnorm0/add_1:0', dytpe: 'DT_FLOAT', shape: [ -1, 256, [length]: 2 ] }, [length]: 1 ]\n*/\n", "import { log } from '../helpers';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile';\n\nlet model;\nlet last = { age: 0 };\nlet skipped = Number.MAX_SAFE_INTEGER;\n\ntype Tensor = typeof tf.Tensor;\ntype DB = Array<{ name: string, source: string, embedding: number[] }>;\n\nexport async function load(config) {\n if (!model) {\n model = await tf.loadGraphModel(config.face.description.modelPath);\n if (config.debug) log(`load model: ${config.face.description.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return model;\n}\n\nexport function similarity(embedding1, embedding2, order = 2): number {\n if (!embedding1 || !embedding2) return 0;\n if (embedding1?.length === 0 || embedding2?.length === 0) return 0;\n if (embedding1?.length !== embedding2?.length) return 0;\n // general minkowski distance, euclidean distance is limited case where order is 2\n const distance = 4.0 * embedding1\n .map((val, i) => (Math.abs(embedding1[i] - embedding2[i]) ** order)) // distance squared\n .reduce((sum, now) => (sum + now), 0) // sum all distances\n ** (1 / order); // get root of\n const res = Math.max(0, 100 - distance) / 100.0;\n return res;\n}\n\nexport function match(embedding: Array, db: DB, threshold = 0) {\n let best = { similarity: 0, name: '', source: '', embedding: [] as number[] };\n if (!embedding || !db || !Array.isArray(embedding) || !Array.isArray(db)) return best;\n for (const f of db) {\n if (f.embedding && f.name) {\n const perc = similarity(embedding, f.embedding);\n if (perc > threshold && perc > best.similarity) best = { ...f, similarity: perc };\n }\n }\n return best;\n}\n\nexport function enhance(input): Tensor {\n const image = tf.tidy(() => {\n // input received from detector is already normalized to 0..1\n // input is also assumed to be straightened\n const tensor = input.image || input.tensor || input;\n if (!(tensor instanceof tf.Tensor)) return null;\n // do a tight crop of image and resize it to fit the model\n const box = [[0.05, 0.15, 0.85, 0.85]]; // empyrical values for top, left, bottom, right\n const crop = (tensor.shape.length === 3)\n ? tf.image.cropAndResize(tf.expandDims(tensor, 0), box, [0], [model.inputs[0].shape[2], model.inputs[0].shape[1]]) // add batch dimension if missing\n : tf.image.cropAndResize(tensor, box, [0], [model.inputs[0].shape[2], model.inputs[0].shape[1]]);\n // const crop = tf.image.resizeBilinear(tensor, [model.inputs[0].shape[2], model.inputs[0].shape[1]], false); // just resize to fit the embedding model\n\n /*\n // convert to black&white to avoid colorization impact\n const rgb = [0.2989, 0.5870, 0.1140]; // factors for red/green/blue colors when converting to grayscale: https://www.mathworks.com/help/matlab/ref/rgb2gray.html\n const [red, green, blue] = tf.split(crop, 3, 3);\n const redNorm = tf.mul(red, rgb[0]);\n const greenNorm = tf.mul(green, rgb[1]);\n const blueNorm = tf.mul(blue, rgb[2]);\n const grayscale = tf.addN([redNorm, greenNorm, blueNorm]);\n const merge = tf.stack([grayscale, grayscale, grayscale], 3).squeeze(4);\n */\n\n /*\n // optional increase image contrast\n // or do it per-channel so mean is done on each channel\n // or do it based on histogram\n const mean = merge.mean();\n const factor = 5;\n const contrast = merge.sub(mean).mul(factor).add(mean);\n */\n /*\n // normalize brightness from 0..1\n const darken = crop.sub(crop.min());\n const lighten = darken.div(darken.max());\n */\n const norm = crop.mul(255);\n\n return norm;\n });\n return image;\n}\n\nexport async function predict(image, config) {\n if (!model) return null;\n if ((skipped < config.face.description.skipFrames) && config.videoOptimized && last.age && (last.age > 0)) {\n skipped++;\n return last;\n }\n if (config.videoOptimized) skipped = 0;\n else skipped = Number.MAX_SAFE_INTEGER;\n return new Promise(async (resolve) => {\n // const resize = tf.image.resizeBilinear(image, [model.inputs[0].shape[2], model.inputs[0].shape[1]], false);\n // const enhanced = tf.mul(resize, [255.0]);\n // tf.dispose(resize);\n const enhanced = enhance(image);\n\n let resT;\n const obj = {\n age: 0,\n gender: 'unknown',\n genderConfidence: 0,\n descriptor: [] };\n\n if (!config.profile) {\n if (config.face.description.enabled) resT = await model.predict(enhanced);\n } else {\n const profileAge = config.face.description.enabled ? await tf.profile(() => model.predict(enhanced)) : {};\n resT = profileAge.result.clone();\n profileAge.result.dispose();\n profile.run('age', profileAge);\n }\n tf.dispose(enhanced);\n\n if (resT) {\n tf.tidy(() => {\n const gender = resT.find((t) => t.shape[1] === 1).dataSync();\n const confidence = Math.trunc(200 * Math.abs((gender[0] - 0.5))) / 100;\n if (confidence > config.face.gender.minConfidence) {\n obj.gender = gender[0] <= 0.5 ? 'female' : 'male';\n obj.genderConfidence = Math.min(0.99, confidence);\n }\n const age = resT.find((t) => t.shape[1] === 100).argMax(1).dataSync()[0];\n const all = resT.find((t) => t.shape[1] === 100).dataSync();\n obj.age = Math.round(all[age - 1] > all[age + 1] ? 10 * age - 100 * all[age - 1] : 10 * age + 100 * all[age + 1]) / 10;\n\n const desc = resT.find((t) => t.shape[1] === 1024);\n // const reshape = desc.reshape([128, 8]);\n // const reduce = reshape.logSumExp(1); // reduce 2nd dimension by calculating logSumExp on it\n\n obj.descriptor = [...desc.dataSync()];\n });\n resT.forEach((t) => tf.dispose(t));\n }\n\n last = obj;\n resolve(obj);\n });\n}\n", "import { log, now } from './helpers';\nimport * as tf from '../dist/tfjs.esm.js';\nimport * as age from './age/age';\nimport * as gender from './gender/gender';\nimport * as emotion from './emotion/emotion';\nimport * as embedding from './embedding/embedding';\nimport * as faceres from './faceres/faceres';\n\ntype Tensor = typeof tf.Tensor;\n\nconst calculateFaceAngle = (mesh): { roll: number | null, yaw: number | null, pitch: number | null } => {\n if (!mesh || mesh.length < 300) return { roll: null, yaw: null, pitch: null };\n const radians = (a1, a2, b1, b2) => Math.atan2(b2 - a2, b1 - a1);\n // eslint-disable-next-line no-unused-vars, @typescript-eslint/no-unused-vars\n const degrees = (theta) => Math.abs(((theta * 180) / Math.PI) % 360);\n const angle = {\n // values are in radians in range of -pi/2 to pi/2 which is -90 to +90 degrees\n // value of 0 means center\n // roll is face lean left/right\n roll: radians(mesh[33][0], mesh[33][1], mesh[263][0], mesh[263][1]), // looking at x,y of outside corners of leftEye and rightEye\n // yaw is face turn left/right\n yaw: radians(mesh[33][0], mesh[33][2], mesh[263][0], mesh[263][2]), // looking at x,z of outside corners of leftEye and rightEye\n // pitch is face move up/down\n pitch: radians(mesh[10][1], mesh[10][2], mesh[152][1], mesh[152][2]), // looking at y,z of top and bottom points of the face\n };\n return angle;\n};\n\nexport const detectFace = async (parent, input): Promise => {\n // run facemesh, includes blazeface and iris\n // eslint-disable-next-line no-async-promise-executor\n let timeStamp;\n let ageRes;\n let genderRes;\n let emotionRes;\n let embeddingRes;\n let descRes;\n const faceRes: Array<{\n confidence: number,\n boxConfidence: number,\n faceConfidence: number,\n box: [number, number, number, number],\n mesh: Array<[number, number, number]>\n meshRaw: Array<[number, number, number]>\n boxRaw: [number, number, number, number],\n annotations: Array<{ part: string, points: Array<[number, number, number]>[] }>,\n age: number,\n gender: string,\n genderConfidence: number,\n emotion: string,\n embedding: number[],\n iris: number,\n angle: { roll: number | null, yaw: number | null, pitch: number | null },\n tensor: Tensor,\n }> = [];\n parent.state = 'run:face';\n timeStamp = now();\n const faces = await parent.models.face?.estimateFaces(input, parent.config);\n parent.perf.face = Math.trunc(now() - timeStamp);\n if (!faces) return [];\n for (const face of faces) {\n parent.analyze('Get Face');\n\n // is something went wrong, skip the face\n if (!face.image || face.image.isDisposedInternal) {\n log('Face object is disposed:', face.image);\n continue;\n }\n\n const angle = calculateFaceAngle(face.mesh);\n\n // run age, inherits face from blazeface\n parent.analyze('Start Age:');\n if (parent.config.async) {\n ageRes = parent.config.face.age.enabled ? age.predict(face.image, parent.config) : {};\n } else {\n parent.state = 'run:age';\n timeStamp = now();\n ageRes = parent.config.face.age.enabled ? await age.predict(face.image, parent.config) : {};\n parent.perf.age = Math.trunc(now() - timeStamp);\n }\n\n // run gender, inherits face from blazeface\n parent.analyze('Start Gender:');\n if (parent.config.async) {\n genderRes = parent.config.face.gender.enabled ? gender.predict(face.image, parent.config) : {};\n } else {\n parent.state = 'run:gender';\n timeStamp = now();\n genderRes = parent.config.face.gender.enabled ? await gender.predict(face.image, parent.config) : {};\n parent.perf.gender = Math.trunc(now() - timeStamp);\n }\n\n // run emotion, inherits face from blazeface\n parent.analyze('Start Emotion:');\n if (parent.config.async) {\n emotionRes = parent.config.face.emotion.enabled ? emotion.predict(face.image, parent.config) : {};\n } else {\n parent.state = 'run:emotion';\n timeStamp = now();\n emotionRes = parent.config.face.emotion.enabled ? await emotion.predict(face.image, parent.config) : {};\n parent.perf.emotion = Math.trunc(now() - timeStamp);\n }\n parent.analyze('End Emotion:');\n\n // run emotion, inherits face from blazeface\n parent.analyze('Start Embedding:');\n if (parent.config.async) {\n embeddingRes = parent.config.face.embedding.enabled ? embedding.predict(face, parent.config) : [];\n } else {\n parent.state = 'run:embedding';\n timeStamp = now();\n embeddingRes = parent.config.face.embedding.enabled ? await embedding.predict(face, parent.config) : [];\n parent.perf.embedding = Math.trunc(now() - timeStamp);\n }\n parent.analyze('End Embedding:');\n\n // run emotion, inherits face from blazeface\n parent.analyze('Start Description:');\n if (parent.config.async) {\n descRes = parent.config.face.description.enabled ? faceres.predict(face, parent.config) : [];\n } else {\n parent.state = 'run:description';\n timeStamp = now();\n descRes = parent.config.face.description.enabled ? await faceres.predict(face.image, parent.config) : [];\n parent.perf.embedding = Math.trunc(now() - timeStamp);\n }\n parent.analyze('End Description:');\n\n // if async wait for results\n if (parent.config.async) {\n [ageRes, genderRes, emotionRes, embeddingRes, descRes] = await Promise.all([ageRes, genderRes, emotionRes, embeddingRes, descRes]);\n }\n\n parent.analyze('Finish Face:');\n\n // calculate iris distance\n // iris: array[ center, left, top, right, bottom]\n if (!parent.config.face.iris.enabled && face?.annotations?.leftEyeIris && face?.annotations?.rightEyeIris) {\n delete face.annotations.leftEyeIris;\n delete face.annotations.rightEyeIris;\n }\n const irisSize = (face.annotations?.leftEyeIris && face.annotations?.rightEyeIris)\n /* average human iris size is 11.7mm */\n ? 11.7 * Math.max(Math.abs(face.annotations.leftEyeIris[3][0] - face.annotations.leftEyeIris[1][0]), Math.abs(face.annotations.rightEyeIris[4][1] - face.annotations.rightEyeIris[2][1]))\n : 0;\n\n // combine results\n faceRes.push({\n ...face,\n age: descRes.age || ageRes.age,\n gender: descRes.gender || genderRes.gender,\n genderConfidence: descRes.genderConfidence || genderRes.confidence,\n embedding: descRes.descriptor || embeddingRes,\n emotion: emotionRes,\n iris: (irisSize !== 0) ? Math.trunc(irisSize) / 100 : 0,\n angle,\n tensor: parent.config.face.detector.return ? face.image?.squeeze() : null,\n });\n // dispose original face tensor\n face.image?.dispose();\n\n parent.analyze('End Face');\n }\n parent.analyze('End FaceMesh:');\n if (parent.config.async) {\n if (parent.perf.face) delete parent.perf.face;\n if (parent.perf.age) delete parent.perf.age;\n if (parent.perf.gender) delete parent.perf.gender;\n if (parent.perf.emotion) delete parent.perf.emotion;\n }\n return faceRes;\n};\n", "import { log } from '../helpers';\nimport * as tf from '../../dist/tfjs.esm.js';\n\nconst NUM_LANDMARKS = 6;\n\nfunction generateAnchors(inputSize) {\n const spec = { strides: [inputSize / 16, inputSize / 8], anchors: [2, 6] };\n const anchors: Array<[number, number]> = [];\n for (let i = 0; i < spec.strides.length; i++) {\n const stride = spec.strides[i];\n const gridRows = Math.floor((inputSize + stride - 1) / stride);\n const gridCols = Math.floor((inputSize + stride - 1) / stride);\n const anchorsNum = spec.anchors[i];\n for (let gridY = 0; gridY < gridRows; gridY++) {\n const anchorY = stride * (gridY + 0.5);\n for (let gridX = 0; gridX < gridCols; gridX++) {\n const anchorX = stride * (gridX + 0.5);\n for (let n = 0; n < anchorsNum; n++) {\n anchors.push([anchorX, anchorY]);\n }\n }\n }\n }\n return anchors;\n}\n\nexport const disposeBox = (box) => {\n box.startEndTensor.dispose();\n box.startPoint.dispose();\n box.endPoint.dispose();\n};\n\nconst createBox = (startEndTensor) => ({\n startEndTensor,\n startPoint: tf.slice(startEndTensor, [0, 0], [-1, 2]),\n endPoint: tf.slice(startEndTensor, [0, 2], [-1, 2]),\n});\n\nfunction decodeBounds(boxOutputs, anchors, inputSize) {\n const boxStarts = tf.slice(boxOutputs, [0, 1], [-1, 2]);\n const centers = tf.add(boxStarts, anchors);\n const boxSizes = tf.slice(boxOutputs, [0, 3], [-1, 2]);\n const boxSizesNormalized = tf.div(boxSizes, inputSize);\n const centersNormalized = tf.div(centers, inputSize);\n const halfBoxSize = tf.div(boxSizesNormalized, 2);\n const starts = tf.sub(centersNormalized, halfBoxSize);\n const ends = tf.add(centersNormalized, halfBoxSize);\n const startNormalized = tf.mul(starts, inputSize);\n const endNormalized = tf.mul(ends, inputSize);\n const concatAxis = 1;\n return tf.concat2d([startNormalized, endNormalized], concatAxis);\n}\n\nexport class BlazeFaceModel {\n model: any;\n anchorsData: any;\n anchors: any;\n inputSize: number;\n config: any;\n\n constructor(model, config) {\n this.model = model;\n this.anchorsData = generateAnchors(model.inputs[0].shape[1]);\n this.anchors = tf.tensor2d(this.anchorsData);\n this.inputSize = model.inputs[0].shape[2];\n this.config = config;\n }\n\n async getBoundingBoxes(inputImage) {\n // sanity check on input\n if ((!inputImage) || (inputImage.isDisposedInternal) || (inputImage.shape.length !== 4) || (inputImage.shape[1] < 1) || (inputImage.shape[2] < 1)) return null;\n const [batch, boxes, scores] = tf.tidy(() => {\n const resizedImage = inputImage.resizeBilinear([this.inputSize, this.inputSize]);\n // const normalizedImage = tf.mul(tf.sub(resizedImage.div(255), 0.5), 2);\n const normalizedImage = resizedImage.div(127.5).sub(0.5);\n const batchedPrediction = this.model.predict(normalizedImage);\n let batchOut;\n // are we using tfhub or pinto converted model?\n if (Array.isArray(batchedPrediction)) {\n const sorted = batchedPrediction.sort((a, b) => a.size - b.size);\n const concat384 = tf.concat([sorted[0], sorted[2]], 2); // dim: 384, 1 + 16\n const concat512 = tf.concat([sorted[1], sorted[3]], 2); // dim: 512, 1 + 16\n const concat = tf.concat([concat512, concat384], 1);\n batchOut = concat.squeeze(0);\n } else {\n batchOut = batchedPrediction.squeeze(); // when using tfhub model\n }\n const boxesOut = decodeBounds(batchOut, this.anchors, [this.inputSize, this.inputSize]);\n const logits = tf.slice(batchOut, [0, 0], [-1, 1]);\n const scoresOut = tf.sigmoid(logits).squeeze();\n return [batchOut, boxesOut, scoresOut];\n });\n const boxIndicesTensor = await tf.image.nonMaxSuppressionAsync(boxes, scores, this.config.face.detector.maxFaces, this.config.face.detector.iouThreshold, this.config.face.detector.scoreThreshold);\n const boxIndices = boxIndicesTensor.arraySync();\n boxIndicesTensor.dispose();\n const boundingBoxesMap = boxIndices.map((boxIndex) => tf.slice(boxes, [boxIndex, 0], [1, -1]));\n const boundingBoxes = boundingBoxesMap.map((boundingBox) => {\n const vals = boundingBox.arraySync();\n boundingBox.dispose();\n return vals;\n });\n\n const scoresVal = scores.dataSync();\n const annotatedBoxes: Array<{ box: any, landmarks: any, anchor: any, confidence: number }> = [];\n for (let i = 0; i < boundingBoxes.length; i++) {\n const boxIndex = boxIndices[i];\n const confidence = scoresVal[boxIndex];\n if (confidence > this.config.face.detector.minConfidence) {\n const box = createBox(boundingBoxes[i]);\n const anchor = this.anchorsData[boxIndex];\n const landmarks = tf.tidy(() => tf.slice(batch, [boxIndex, NUM_LANDMARKS - 1], [1, -1]).squeeze().reshape([NUM_LANDMARKS, -1]));\n annotatedBoxes.push({ box, landmarks, anchor, confidence });\n }\n }\n batch.dispose();\n boxes.dispose();\n scores.dispose();\n return {\n boxes: annotatedBoxes,\n scaleFactor: [inputImage.shape[2] / this.inputSize, inputImage.shape[1] / this.inputSize],\n };\n }\n}\n\nexport async function load(config) {\n const blazeface = await tf.loadGraphModel(config.face.detector.modelPath, { fromTFHub: config.face.detector.modelPath.includes('tfhub.dev') });\n const model = new BlazeFaceModel(blazeface, config);\n if (config.debug) log(`load model: ${config.face.detector.modelPath.match(/\\/(.*)\\./)[1]}`);\n return model;\n}\n", "/* eslint-disable class-methods-use-this */\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as bounding from './box';\nimport * as util from './util';\nimport * as coords from './coords';\n\nconst leftOutline = coords.MESH_ANNOTATIONS['leftEyeLower0'];\nconst rightOutline = coords.MESH_ANNOTATIONS['rightEyeLower0'];\n\nconst eyeLandmarks = {\n leftBounds: [leftOutline[0], leftOutline[leftOutline.length - 1]],\n rightBounds: [rightOutline[0], rightOutline[rightOutline.length - 1]],\n};\n\nconst meshLandmarks = {\n count: 468,\n mouth: 13,\n symmetryLine: [13, coords.MESH_ANNOTATIONS['midwayBetweenEyes'][0]],\n};\n\nconst blazeFaceLandmarks = {\n leftEye: 0,\n rightEye: 1,\n nose: 2,\n mouth: 3,\n leftEar: 4,\n rightEar: 5,\n symmetryLine: [3, 2],\n};\n\nconst irisLandmarks = {\n upperCenter: 3,\n lowerCenter: 4,\n index: 71,\n numCoordinates: 76,\n};\n\n// Replace the raw coordinates returned by facemesh with refined iris model coordinates\n// Update the z coordinate to be an average of the original and the new.\nfunction replaceRawCoordinates(rawCoords, newCoords, prefix, keys) {\n for (let i = 0; i < coords.MESH_TO_IRIS_INDICES_MAP.length; i++) {\n const { key, indices } = coords.MESH_TO_IRIS_INDICES_MAP[i];\n const originalIndices = coords.MESH_ANNOTATIONS[`${prefix}${key}`];\n // @ts-ignore\n if (!keys || keys.includes(key)) {\n for (let j = 0; j < indices.length; j++) {\n const index = indices[j];\n rawCoords[originalIndices[j]] = [\n newCoords[index][0], newCoords[index][1],\n (newCoords[index][2] + rawCoords[originalIndices[j]][2]) / 2,\n ];\n }\n }\n }\n}\n// The Pipeline coordinates between the bounding box and skeleton models.\nexport class Pipeline {\n storedBoxes: any;\n boundingBoxDetector: any;\n meshDetector: any;\n irisModel: any;\n boxSize: number;\n meshSize: number;\n irisSize: number;\n irisEnlarge: number;\n skipped: number;\n detectedFaces: number;\n\n constructor(boundingBoxDetector, meshDetector, irisModel) {\n // An array of facial bounding boxes.\n this.storedBoxes = [];\n this.boundingBoxDetector = boundingBoxDetector;\n this.meshDetector = meshDetector;\n this.irisModel = irisModel;\n this.boxSize = boundingBoxDetector?.model?.inputs[0].shape[2] || 0;\n this.meshSize = meshDetector?.inputs[0].shape[2] || boundingBoxDetector?.model?.inputs[0].shape[2];\n this.irisSize = irisModel?.inputs[0].shape[1] || 0;\n this.irisEnlarge = 2.3;\n this.skipped = 0;\n this.detectedFaces = 0;\n }\n\n transformRawCoords(rawCoords, box, angle, rotationMatrix) {\n const boxSize = bounding.getBoxSize({ startPoint: box.startPoint, endPoint: box.endPoint });\n const coordsScaled = rawCoords.map((coord) => ([\n boxSize[0] / this.meshSize * (coord[0] - this.meshSize / 2),\n boxSize[1] / this.meshSize * (coord[1] - this.meshSize / 2),\n coord[2],\n ]));\n const coordsRotationMatrix = (angle !== 0) ? util.buildRotationMatrix(angle, [0, 0]) : util.IDENTITY_MATRIX;\n const coordsRotated = (angle !== 0) ? coordsScaled.map((coord) => ([...util.rotatePoint(coord, coordsRotationMatrix), coord[2]])) : coordsScaled;\n const inverseRotationMatrix = (angle !== 0) ? util.invertTransformMatrix(rotationMatrix) : util.IDENTITY_MATRIX;\n const boxCenter = [...bounding.getBoxCenter({ startPoint: box.startPoint, endPoint: box.endPoint }), 1];\n return coordsRotated.map((coord) => ([\n coord[0] + util.dot(boxCenter, inverseRotationMatrix[0]),\n coord[1] + util.dot(boxCenter, inverseRotationMatrix[1]),\n coord[2],\n ]));\n }\n\n getLeftToRightEyeDepthDifference(rawCoords) {\n const leftEyeZ = rawCoords[eyeLandmarks.leftBounds[0]][2];\n const rightEyeZ = rawCoords[eyeLandmarks.rightBounds[0]][2];\n return leftEyeZ - rightEyeZ;\n }\n\n // Returns a box describing a cropped region around the eye fit for passing to the iris model.\n getEyeBox(rawCoords, face, eyeInnerCornerIndex, eyeOuterCornerIndex, flip = false) {\n const box = bounding.squarifyBox(bounding.enlargeBox(this.calculateLandmarksBoundingBox([rawCoords[eyeInnerCornerIndex], rawCoords[eyeOuterCornerIndex]]), this.irisEnlarge));\n const boxSize = bounding.getBoxSize(box);\n let crop = tf.image.cropAndResize(face, [[\n box.startPoint[1] / this.meshSize,\n box.startPoint[0] / this.meshSize, box.endPoint[1] / this.meshSize,\n box.endPoint[0] / this.meshSize,\n ]], [0], [this.irisSize, this.irisSize]);\n if (flip && tf.ENV.flags.IS_BROWSER) {\n crop = tf.image.flipLeftRight(crop); // flipLeftRight is not defined for tfjs-node\n }\n return { box, boxSize, crop };\n }\n\n // Given a cropped image of an eye, returns the coordinates of the contours surrounding the eye and the iris.\n getEyeCoords(eyeData, eyeBox, eyeBoxSize, flip = false) {\n const eyeRawCoords: Array = [];\n for (let i = 0; i < irisLandmarks.numCoordinates; i++) {\n const x = eyeData[i * 3];\n const y = eyeData[i * 3 + 1];\n const z = eyeData[i * 3 + 2];\n eyeRawCoords.push([\n (flip ? (1 - (x / this.irisSize)) : (x / this.irisSize)) * eyeBoxSize[0] + eyeBox.startPoint[0],\n (y / this.irisSize) * eyeBoxSize[1] + eyeBox.startPoint[1], z,\n ]);\n }\n return { rawCoords: eyeRawCoords, iris: eyeRawCoords.slice(irisLandmarks.index) };\n }\n\n // The z-coordinates returned for the iris are unreliable, so we take the z values from the surrounding keypoints.\n getAdjustedIrisCoords(rawCoords, irisCoords, direction) {\n const upperCenterZ = rawCoords[coords.MESH_ANNOTATIONS[`${direction}EyeUpper0`][irisLandmarks.upperCenter]][2];\n const lowerCenterZ = rawCoords[coords.MESH_ANNOTATIONS[`${direction}EyeLower0`][irisLandmarks.lowerCenter]][2];\n const averageZ = (upperCenterZ + lowerCenterZ) / 2;\n // Iris indices: 0: center | 1: right | 2: above | 3: left | 4: below\n return irisCoords.map((coord, i) => {\n let z = averageZ;\n if (i === 2) {\n z = upperCenterZ;\n } else if (i === 4) {\n z = lowerCenterZ;\n }\n return [coord[0], coord[1], z];\n });\n }\n\n async predict(input, config) {\n let useFreshBox = false;\n // run new detector every skipFrames unless we only want box to start with\n let detector;\n if ((this.skipped === 0) || (this.skipped > config.face.detector.skipFrames) || !config.face.mesh.enabled || !config.videoOptimized) {\n detector = await this.boundingBoxDetector.getBoundingBoxes(input);\n this.skipped = 0;\n }\n if (config.videoOptimized) this.skipped++;\n\n // if detector result count doesn't match current working set, use it to reset current working set\n if (!config.videoOptimized || (detector && detector.boxes && (!config.face.mesh.enabled || (detector.boxes.length !== this.detectedFaces) && (this.detectedFaces !== config.face.detector.maxFaces)))) {\n this.storedBoxes = [];\n this.detectedFaces = 0;\n for (const possible of detector.boxes) {\n this.storedBoxes.push({ startPoint: possible.box.startPoint.dataSync(), endPoint: possible.box.endPoint.dataSync(), landmarks: possible.landmarks, confidence: possible.confidence });\n }\n if (this.storedBoxes.length > 0) useFreshBox = true;\n }\n\n if (config.face.detector.skipInitial && this.detectedFaces === 0) this.skipped = 0;\n\n if (useFreshBox) {\n if (!detector || !detector.boxes || (detector.boxes.length === 0)) {\n this.storedBoxes = [];\n this.detectedFaces = 0;\n return null;\n }\n for (let i = 0; i < this.storedBoxes.length; i++) {\n const scaledBox = bounding.scaleBoxCoordinates({ startPoint: this.storedBoxes[i].startPoint, endPoint: this.storedBoxes[i].endPoint }, detector.scaleFactor);\n const enlargedBox = bounding.enlargeBox(scaledBox);\n const squarifiedBox = bounding.squarifyBox(enlargedBox);\n const landmarks = this.storedBoxes[i].landmarks.arraySync();\n const confidence = this.storedBoxes[i].confidence;\n this.storedBoxes[i] = { ...squarifiedBox, confidence, landmarks };\n }\n }\n if (detector && detector.boxes) {\n detector.boxes.forEach((prediction) => {\n prediction.box.startPoint.dispose();\n prediction.box.endPoint.dispose();\n prediction.landmarks.dispose();\n });\n }\n\n let results = tf.tidy(() => this.storedBoxes.map((box, i) => {\n const boxConfidence = box.confidence;\n\n // The facial bounding box landmarks could come either from blazeface (if we are using a fresh box), or from the mesh model (if we are reusing an old box).\n let face;\n let angle = 0;\n let rotationMatrix;\n\n if (config.face.detector.rotation && config.face.mesh.enabled && tf.ENV.flags.IS_BROWSER) {\n const [indexOfMouth, indexOfForehead] = (box.landmarks.length >= meshLandmarks.count) ? meshLandmarks.symmetryLine : blazeFaceLandmarks.symmetryLine;\n angle = util.computeRotation(box.landmarks[indexOfMouth], box.landmarks[indexOfForehead]);\n const faceCenter = bounding.getBoxCenter({ startPoint: box.startPoint, endPoint: box.endPoint });\n const faceCenterNormalized = [faceCenter[0] / input.shape[2], faceCenter[1] / input.shape[1]];\n const rotatedImage = tf.image.rotateWithOffset(input, angle, 0, faceCenterNormalized); // rotateWithOffset is not defined for tfjs-node\n rotationMatrix = util.buildRotationMatrix(-angle, faceCenter);\n if (config.face.mesh.enabled) face = bounding.cutBoxFromImageAndResize({ startPoint: box.startPoint, endPoint: box.endPoint }, rotatedImage, [this.meshSize, this.meshSize]).div(255);\n else face = bounding.cutBoxFromImageAndResize({ startPoint: box.startPoint, endPoint: box.endPoint }, rotatedImage, [this.boxSize, this.boxSize]).div(255);\n } else {\n rotationMatrix = util.IDENTITY_MATRIX;\n const clonedImage = input.clone();\n if (config.face.mesh.enabled) face = bounding.cutBoxFromImageAndResize({ startPoint: box.startPoint, endPoint: box.endPoint }, clonedImage, [this.meshSize, this.meshSize]).div(255);\n else face = bounding.cutBoxFromImageAndResize({ startPoint: box.startPoint, endPoint: box.endPoint }, clonedImage, [this.boxSize, this.boxSize]).div(255);\n }\n\n // if we're not going to produce mesh, don't spend time with further processing\n if (!config.face.mesh.enabled) {\n const prediction = {\n coords: null,\n box,\n faceConfidence: null,\n boxConfidence,\n confidence: box.confidence,\n image: face,\n };\n return prediction;\n }\n\n const [, confidence, contourCoords] = this.meshDetector.predict(face); // The first returned tensor represents facial contours which are already included in the coordinates.\n const faceConfidence = confidence.dataSync()[0];\n if (faceConfidence < config.face.detector.minConfidence) return null; // if below confidence just exit\n const coordsReshaped = tf.reshape(contourCoords, [-1, 3]);\n let rawCoords = coordsReshaped.arraySync();\n\n if (config.face.iris.enabled) {\n const { box: leftEyeBox, boxSize: leftEyeBoxSize, crop: leftEyeCrop } = this.getEyeBox(rawCoords, face, eyeLandmarks.leftBounds[0], eyeLandmarks.leftBounds[1], true);\n const { box: rightEyeBox, boxSize: rightEyeBoxSize, crop: rightEyeCrop } = this.getEyeBox(rawCoords, face, eyeLandmarks.rightBounds[0], eyeLandmarks.rightBounds[1]);\n const eyePredictions = this.irisModel.predict(tf.concat([leftEyeCrop, rightEyeCrop]));\n const eyePredictionsData = eyePredictions.dataSync();\n const leftEyeData = eyePredictionsData.slice(0, irisLandmarks.numCoordinates * 3);\n const { rawCoords: leftEyeRawCoords, iris: leftIrisRawCoords } = this.getEyeCoords(leftEyeData, leftEyeBox, leftEyeBoxSize, true);\n const rightEyeData = eyePredictionsData.slice(irisLandmarks.numCoordinates * 3);\n const { rawCoords: rightEyeRawCoords, iris: rightIrisRawCoords } = this.getEyeCoords(rightEyeData, rightEyeBox, rightEyeBoxSize);\n const leftToRightEyeDepthDifference = this.getLeftToRightEyeDepthDifference(rawCoords);\n if (Math.abs(leftToRightEyeDepthDifference) < 30) { // User is looking straight ahead.\n replaceRawCoordinates(rawCoords, leftEyeRawCoords, 'left', null);\n replaceRawCoordinates(rawCoords, rightEyeRawCoords, 'right', null);\n // If the user is looking to the left or to the right, the iris coordinates tend to diverge too much from the mesh coordinates for them to be merged\n // So we only update a single contour line above and below the eye.\n } else if (leftToRightEyeDepthDifference < 1) { // User is looking towards the right.\n replaceRawCoordinates(rawCoords, leftEyeRawCoords, 'left', ['EyeUpper0', 'EyeLower0']);\n } else { // User is looking towards the left.\n replaceRawCoordinates(rawCoords, rightEyeRawCoords, 'right', ['EyeUpper0', 'EyeLower0']);\n }\n const adjustedLeftIrisCoords = this.getAdjustedIrisCoords(rawCoords, leftIrisRawCoords, 'left');\n const adjustedRightIrisCoords = this.getAdjustedIrisCoords(rawCoords, rightIrisRawCoords, 'right');\n rawCoords = rawCoords.concat(adjustedLeftIrisCoords).concat(adjustedRightIrisCoords);\n }\n\n // override box from detection with one calculated from mesh\n const transformedCoordsData = this.transformRawCoords(rawCoords, box, angle, rotationMatrix);\n box = bounding.enlargeBox(this.calculateLandmarksBoundingBox(transformedCoordsData), 1.5); // redefine box with mesh calculated one\n const transformedCoords = tf.tensor2d(transformedCoordsData);\n\n // do rotation one more time with mesh keypoints if we want to return perfect image\n if (config.face.detector.rotation && config.face.mesh.enabled && (config.face.description.enabled || config.face.embedding.enabled) && tf.ENV.flags.IS_BROWSER) {\n const [indexOfMouth, indexOfForehead] = (box.landmarks.length >= meshLandmarks.count) ? meshLandmarks.symmetryLine : blazeFaceLandmarks.symmetryLine;\n angle = util.computeRotation(box.landmarks[indexOfMouth], box.landmarks[indexOfForehead]);\n const faceCenter = bounding.getBoxCenter({ startPoint: box.startPoint, endPoint: box.endPoint });\n const faceCenterNormalized = [faceCenter[0] / input.shape[2], faceCenter[1] / input.shape[1]];\n const rotatedImage = tf.image.rotateWithOffset(input, angle, 0, faceCenterNormalized); // rotateWithOffset is not defined for tfjs-node\n rotationMatrix = util.buildRotationMatrix(-angle, faceCenter);\n face = bounding.cutBoxFromImageAndResize({ startPoint: box.startPoint, endPoint: box.endPoint }, rotatedImage, [this.meshSize, this.meshSize]).div(255);\n }\n\n const prediction = {\n coords: transformedCoords,\n box,\n faceConfidence,\n boxConfidence,\n image: face,\n rawCoords,\n };\n\n // updated stored cache values\n const squarifiedLandmarksBox = bounding.squarifyBox(box);\n this.storedBoxes[i] = { ...squarifiedLandmarksBox, landmarks: transformedCoordsData, confidence: box.confidence, faceConfidence };\n\n return prediction;\n }));\n\n results = results.filter((a) => a !== null);\n // remove cache entries for detected boxes on low confidence\n if (config.face.mesh.enabled) this.storedBoxes = this.storedBoxes.filter((a) => a.faceConfidence > config.face.detector.minConfidence);\n this.detectedFaces = results.length;\n\n return results;\n }\n\n calculateLandmarksBoundingBox(landmarks) {\n const xs = landmarks.map((d) => d[0]);\n const ys = landmarks.map((d) => d[1]);\n const startPoint = [Math.min(...xs), Math.min(...ys)];\n const endPoint = [Math.max(...xs), Math.max(...ys)];\n return { startPoint, endPoint, landmarks };\n }\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nexport function scaleBoxCoordinates(box, factor) {\n const startPoint = [box.startPoint[0] * factor[0], box.startPoint[1] * factor[1]];\n const endPoint = [box.endPoint[0] * factor[0], box.endPoint[1] * factor[1]];\n return { startPoint, endPoint };\n}\n\nexport function getBoxSize(box) {\n return [\n Math.abs(box.endPoint[0] - box.startPoint[0]),\n Math.abs(box.endPoint[1] - box.startPoint[1]),\n ];\n}\n\nexport function getBoxCenter(box) {\n return [\n box.startPoint[0] + (box.endPoint[0] - box.startPoint[0]) / 2,\n box.startPoint[1] + (box.endPoint[1] - box.startPoint[1]) / 2,\n ];\n}\n\nexport function cutBoxFromImageAndResize(box, image, cropSize) {\n const h = image.shape[1];\n const w = image.shape[2];\n const boxes = [[\n box.startPoint[1] / h,\n box.startPoint[0] / w,\n box.endPoint[1] / h,\n box.endPoint[0] / w,\n ]];\n return tf.image.cropAndResize(image, boxes, [0], cropSize);\n}\n\nexport function enlargeBox(box, factor = 1.5) {\n const center = getBoxCenter(box);\n const size = getBoxSize(box);\n const newHalfSize = [factor * size[0] / 2, factor * size[1] / 2];\n const startPoint = [center[0] - newHalfSize[0], center[1] - newHalfSize[1]];\n const endPoint = [center[0] + newHalfSize[0], center[1] + newHalfSize[1]];\n return { startPoint, endPoint, landmarks: box.landmarks };\n}\n\nexport function squarifyBox(box) {\n const centers = getBoxCenter(box);\n const size = getBoxSize(box);\n const maxEdge = Math.max(...size);\n const halfSize = maxEdge / 2;\n const startPoint = [centers[0] - halfSize, centers[1] - halfSize];\n const endPoint = [centers[0] + halfSize, centers[1] + halfSize];\n return { startPoint, endPoint, landmarks: box.landmarks };\n}\n", "export const IDENTITY_MATRIX = [[1, 0, 0], [0, 1, 0], [0, 0, 1]];\n/**\n * Normalizes the provided angle to the range -pi to pi.\n * @param angle The angle in radians to be normalized.\n */\nexport function normalizeRadians(angle) {\n return angle - 2 * Math.PI * Math.floor((angle + Math.PI) / (2 * Math.PI));\n}\n\n/**\n * Computes the angle of rotation between two anchor points.\n * @param point1 First anchor point\n * @param point2 Second anchor point\n */\nexport function computeRotation(point1, point2) {\n const radians = Math.PI / 2 - Math.atan2(-(point2[1] - point1[1]), point2[0] - point1[0]);\n return normalizeRadians(radians);\n}\n\nexport function radToDegrees(rad) {\n return rad * 180 / Math.PI;\n}\n\nexport function buildTranslationMatrix(x, y) {\n return [[1, 0, x], [0, 1, y], [0, 0, 1]];\n}\n\nexport function dot(v1, v2) {\n let product = 0;\n for (let i = 0; i < v1.length; i++) {\n product += v1[i] * v2[i];\n }\n return product;\n}\n\nexport function getColumnFrom2DArr(arr, columnIndex) {\n const column: Array = [];\n for (let i = 0; i < arr.length; i++) {\n column.push(arr[i][columnIndex]);\n }\n return column;\n}\n\nexport function multiplyTransformMatrices(mat1, mat2) {\n const product: Array = [];\n const size = mat1.length;\n for (let row = 0; row < size; row++) {\n product.push([]);\n for (let col = 0; col < size; col++) {\n product[row].push(dot(mat1[row], getColumnFrom2DArr(mat2, col)));\n }\n }\n return product;\n}\n\nexport function buildRotationMatrix(rotation, center) {\n const cosA = Math.cos(rotation);\n const sinA = Math.sin(rotation);\n const rotationMatrix = [[cosA, -sinA, 0], [sinA, cosA, 0], [0, 0, 1]];\n const translationMatrix = buildTranslationMatrix(center[0], center[1]);\n const translationTimesRotation = multiplyTransformMatrices(translationMatrix, rotationMatrix);\n const negativeTranslationMatrix = buildTranslationMatrix(-center[0], -center[1]);\n return multiplyTransformMatrices(translationTimesRotation, negativeTranslationMatrix);\n}\n\nexport function invertTransformMatrix(matrix) {\n const rotationComponent = [[matrix[0][0], matrix[1][0]], [matrix[0][1], matrix[1][1]]];\n const translationComponent = [matrix[0][2], matrix[1][2]];\n const invertedTranslation = [\n -dot(rotationComponent[0], translationComponent),\n -dot(rotationComponent[1], translationComponent),\n ];\n return [\n rotationComponent[0].concat(invertedTranslation[0]),\n rotationComponent[1].concat(invertedTranslation[1]),\n [0, 0, 1],\n ];\n}\n\nexport function rotatePoint(homogeneousCoordinate, rotationMatrix) {\n return [\n dot(homogeneousCoordinate, rotationMatrix[0]),\n dot(homogeneousCoordinate, rotationMatrix[1]),\n ];\n}\n\nexport function xyDistanceBetweenPoints(a, b) {\n return Math.sqrt(((a[0] - b[0]) ** 2) + ((a[1] - b[1]) ** 2));\n}\n", "export const MESH_ANNOTATIONS = {\n silhouette: [\n 10, 338, 297, 332, 284, 251, 389, 356, 454, 323, 361, 288,\n 397, 365, 379, 378, 400, 377, 152, 148, 176, 149, 150, 136,\n 172, 58, 132, 93, 234, 127, 162, 21, 54, 103, 67, 109,\n ],\n lipsUpperOuter: [61, 185, 40, 39, 37, 0, 267, 269, 270, 409, 291],\n lipsLowerOuter: [146, 91, 181, 84, 17, 314, 405, 321, 375, 291],\n lipsUpperInner: [78, 191, 80, 81, 82, 13, 312, 311, 310, 415, 308],\n lipsLowerInner: [78, 95, 88, 178, 87, 14, 317, 402, 318, 324, 308],\n rightEyeUpper0: [246, 161, 160, 159, 158, 157, 173],\n rightEyeLower0: [33, 7, 163, 144, 145, 153, 154, 155, 133],\n rightEyeUpper1: [247, 30, 29, 27, 28, 56, 190],\n rightEyeLower1: [130, 25, 110, 24, 23, 22, 26, 112, 243],\n rightEyeUpper2: [113, 225, 224, 223, 222, 221, 189],\n rightEyeLower2: [226, 31, 228, 229, 230, 231, 232, 233, 244],\n rightEyeLower3: [143, 111, 117, 118, 119, 120, 121, 128, 245],\n rightEyebrowUpper: [156, 70, 63, 105, 66, 107, 55, 193],\n rightEyebrowLower: [35, 124, 46, 53, 52, 65],\n rightEyeIris: [473, 474, 475, 476, 477],\n leftEyeUpper0: [466, 388, 387, 386, 385, 384, 398],\n leftEyeLower0: [263, 249, 390, 373, 374, 380, 381, 382, 362],\n leftEyeUpper1: [467, 260, 259, 257, 258, 286, 414],\n leftEyeLower1: [359, 255, 339, 254, 253, 252, 256, 341, 463],\n leftEyeUpper2: [342, 445, 444, 443, 442, 441, 413],\n leftEyeLower2: [446, 261, 448, 449, 450, 451, 452, 453, 464],\n leftEyeLower3: [372, 340, 346, 347, 348, 349, 350, 357, 465],\n leftEyebrowUpper: [383, 300, 293, 334, 296, 336, 285, 417],\n leftEyebrowLower: [265, 353, 276, 283, 282, 295],\n leftEyeIris: [468, 469, 470, 471, 472],\n midwayBetweenEyes: [168],\n noseTip: [1],\n noseBottom: [2],\n noseRightCorner: [98],\n noseLeftCorner: [327],\n rightCheek: [205],\n leftCheek: [425],\n};\n\nexport const MESH_TO_IRIS_INDICES_MAP = [ // A mapping from facemesh model keypoints to iris model keypoints.\n { key: 'EyeUpper0', indices: [9, 10, 11, 12, 13, 14, 15] },\n { key: 'EyeUpper1', indices: [25, 26, 27, 28, 29, 30, 31] },\n { key: 'EyeUpper2', indices: [41, 42, 43, 44, 45, 46, 47] },\n { key: 'EyeLower0', indices: [0, 1, 2, 3, 4, 5, 6, 7, 8] },\n { key: 'EyeLower1', indices: [16, 17, 18, 19, 20, 21, 22, 23, 24] },\n { key: 'EyeLower2', indices: [32, 33, 34, 35, 36, 37, 38, 39, 40] },\n { key: 'EyeLower3', indices: [54, 55, 56, 57, 58, 59, 60, 61, 62] },\n // { key: 'EyebrowUpper', indices: [63, 64, 65, 66, 67, 68, 69, 70] },\n // { key: 'EyebrowLower', indices: [48, 49, 50, 51, 52, 53] },\n];\n\nexport const UV468 = [\n [0.499976992607117, 0.652534008026123],\n [0.500025987625122, 0.547487020492554],\n [0.499974012374878, 0.602371990680695],\n [0.482113003730774, 0.471979022026062],\n [0.500150978565216, 0.527155995368958],\n [0.499909996986389, 0.498252987861633],\n [0.499523013830185, 0.40106201171875],\n [0.289712011814117, 0.380764007568359],\n [0.499954998493195, 0.312398016452789],\n [0.499987006187439, 0.269918978214264],\n [0.500023007392883, 0.107050001621246],\n [0.500023007392883, 0.666234016418457],\n [0.5000159740448, 0.679224014282227],\n [0.500023007392883, 0.692348003387451],\n [0.499976992607117, 0.695277988910675],\n [0.499976992607117, 0.70593398809433],\n [0.499976992607117, 0.719385027885437],\n [0.499976992607117, 0.737019002437592],\n [0.499967992305756, 0.781370997428894],\n [0.499816000461578, 0.562981009483337],\n [0.473773002624512, 0.573909997940063],\n [0.104906998574734, 0.254140973091125],\n [0.365929991006851, 0.409575998783112],\n [0.338757991790771, 0.41302502155304],\n [0.311120003461838, 0.409460008144379],\n [0.274657994508743, 0.389131009578705],\n [0.393361985683441, 0.403706014156342],\n [0.345234006643295, 0.344011008739471],\n [0.370094001293182, 0.346076011657715],\n [0.319321990013123, 0.347265005111694],\n [0.297903001308441, 0.353591024875641],\n [0.24779200553894, 0.410809993743896],\n [0.396889001131058, 0.842755019664764],\n [0.280097991228104, 0.375599980354309],\n [0.106310002505779, 0.399955987930298],\n [0.2099249958992, 0.391353011131287],\n [0.355807989835739, 0.534406006336212],\n [0.471751004457474, 0.65040397644043],\n [0.474155008792877, 0.680191993713379],\n [0.439785003662109, 0.657229006290436],\n [0.414617002010345, 0.66654098033905],\n [0.450374007225037, 0.680860996246338],\n [0.428770989179611, 0.682690978050232],\n [0.374971002340317, 0.727805018424988],\n [0.486716985702515, 0.547628998756409],\n [0.485300987958908, 0.527395009994507],\n [0.257764995098114, 0.314490020275116],\n [0.401223003864288, 0.455172002315521],\n [0.429818987846375, 0.548614978790283],\n [0.421351999044418, 0.533740997314453],\n [0.276895999908447, 0.532056987285614],\n [0.483370006084442, 0.499586999416351],\n [0.33721199631691, 0.282882988452911],\n [0.296391993761063, 0.293242990970612],\n [0.169294998049736, 0.193813979625702],\n [0.447580009698868, 0.302609980106354],\n [0.392390012741089, 0.353887975215912],\n [0.354490011930466, 0.696784019470215],\n [0.067304998636246, 0.730105042457581],\n [0.442739009857178, 0.572826027870178],\n [0.457098007202148, 0.584792017936707],\n [0.381974011659622, 0.694710969924927],\n [0.392388999462128, 0.694203019142151],\n [0.277076005935669, 0.271932005882263],\n [0.422551989555359, 0.563233017921448],\n [0.385919004678726, 0.281364023685455],\n [0.383103013038635, 0.255840003490448],\n [0.331431001424789, 0.119714021682739],\n [0.229923993349075, 0.232002973556519],\n [0.364500999450684, 0.189113974571228],\n [0.229622006416321, 0.299540996551514],\n [0.173287004232407, 0.278747975826263],\n [0.472878992557526, 0.666198015213013],\n [0.446828007698059, 0.668527007102966],\n [0.422762006521225, 0.673889994621277],\n [0.445307999849319, 0.580065965652466],\n [0.388103008270264, 0.693961024284363],\n [0.403039008378983, 0.706539988517761],\n [0.403629004955292, 0.693953037261963],\n [0.460041999816895, 0.557139039039612],\n [0.431158006191254, 0.692366003990173],\n [0.452181994915009, 0.692366003990173],\n [0.475387006998062, 0.692366003990173],\n [0.465828001499176, 0.779190003871918],\n [0.472328990697861, 0.736225962638855],\n [0.473087012767792, 0.717857003211975],\n [0.473122000694275, 0.704625964164734],\n [0.473033010959625, 0.695277988910675],\n [0.427942007780075, 0.695277988910675],\n [0.426479011774063, 0.703539967536926],\n [0.423162013292313, 0.711845993995667],\n [0.4183090031147, 0.720062971115112],\n [0.390094995498657, 0.639572978019714],\n [0.013953999616206, 0.560034036636353],\n [0.499913990497589, 0.58014702796936],\n [0.413199990987778, 0.69539999961853],\n [0.409626007080078, 0.701822996139526],\n [0.468080013990402, 0.601534962654114],\n [0.422728985548019, 0.585985004901886],\n [0.463079988956451, 0.593783974647522],\n [0.37211999297142, 0.47341400384903],\n [0.334562003612518, 0.496073007583618],\n [0.411671012639999, 0.546965003013611],\n [0.242175996303558, 0.14767599105835],\n [0.290776997804642, 0.201445996761322],\n [0.327338010072708, 0.256527006626129],\n [0.399509996175766, 0.748921036720276],\n [0.441727995872498, 0.261676013469696],\n [0.429764986038208, 0.187834024429321],\n [0.412198007106781, 0.108901023864746],\n [0.288955003023148, 0.398952007293701],\n [0.218936994671822, 0.435410976409912],\n [0.41278201341629, 0.398970007896423],\n [0.257135003805161, 0.355440020561218],\n [0.427684992551804, 0.437960982322693],\n [0.448339998722076, 0.536936044692993],\n [0.178560003638268, 0.45755398273468],\n [0.247308000922203, 0.457193970680237],\n [0.286267012357712, 0.467674970626831],\n [0.332827985286713, 0.460712015628815],\n [0.368755996227264, 0.447206974029541],\n [0.398963987827301, 0.432654976844788],\n [0.476410001516342, 0.405806005001068],\n [0.189241006970406, 0.523923993110657],\n [0.228962004184723, 0.348950982093811],\n [0.490725994110107, 0.562400996685028],\n [0.404670000076294, 0.485132992267609],\n [0.019469000399113, 0.401564002037048],\n [0.426243007183075, 0.420431017875671],\n [0.396993011236191, 0.548797011375427],\n [0.266469985246658, 0.376977026462555],\n [0.439121007919312, 0.51895797252655],\n [0.032313998788595, 0.644356966018677],\n [0.419054001569748, 0.387154996395111],\n [0.462783008813858, 0.505746960639954],\n [0.238978996872902, 0.779744982719421],\n [0.198220998048782, 0.831938028335571],\n [0.107550002634525, 0.540755033493042],\n [0.183610007166862, 0.740257024765015],\n [0.134409993886948, 0.333683013916016],\n [0.385764002799988, 0.883153975009918],\n [0.490967005491257, 0.579378008842468],\n [0.382384985685349, 0.508572995662689],\n [0.174399003386497, 0.397670984268188],\n [0.318785011768341, 0.39623498916626],\n [0.343364000320435, 0.400596976280212],\n [0.396100014448166, 0.710216999053955],\n [0.187885001301765, 0.588537991046906],\n [0.430987000465393, 0.944064974784851],\n [0.318993002176285, 0.898285031318665],\n [0.266247987747192, 0.869701027870178],\n [0.500023007392883, 0.190576016902924],\n [0.499976992607117, 0.954452991485596],\n [0.366169989109039, 0.398822009563446],\n [0.393207013607025, 0.39553701877594],\n [0.410373002290726, 0.391080021858215],\n [0.194993004202843, 0.342101991176605],\n [0.388664990663528, 0.362284004688263],\n [0.365961998701096, 0.355970978736877],\n [0.343364000320435, 0.355356991291046],\n [0.318785011768341, 0.35834002494812],\n [0.301414996385574, 0.363156020641327],\n [0.058132998645306, 0.319076001644135],\n [0.301414996385574, 0.387449026107788],\n [0.499987989664078, 0.618434011936188],\n [0.415838003158569, 0.624195992946625],\n [0.445681989192963, 0.566076993942261],\n [0.465844005346298, 0.620640993118286],\n [0.49992299079895, 0.351523995399475],\n [0.288718998432159, 0.819945991039276],\n [0.335278987884521, 0.852819979190826],\n [0.440512001514435, 0.902418971061707],\n [0.128294005990028, 0.791940987110138],\n [0.408771991729736, 0.373893976211548],\n [0.455606997013092, 0.451801002025604],\n [0.499877005815506, 0.908990025520325],\n [0.375436991453171, 0.924192011356354],\n [0.11421000212431, 0.615022003650665],\n [0.448662012815475, 0.695277988910675],\n [0.4480200111866, 0.704632043838501],\n [0.447111994028091, 0.715808033943176],\n [0.444831997156143, 0.730794012546539],\n [0.430011987686157, 0.766808986663818],\n [0.406787008047104, 0.685672998428345],\n [0.400738000869751, 0.681069016456604],\n [0.392399996519089, 0.677703022956848],\n [0.367855995893478, 0.663918972015381],\n [0.247923001646996, 0.601333022117615],\n [0.452769994735718, 0.420849978923798],\n [0.43639200925827, 0.359887003898621],\n [0.416164010763168, 0.368713974952698],\n [0.413385987281799, 0.692366003990173],\n [0.228018000721931, 0.683571994304657],\n [0.468268007040024, 0.352671027183533],\n [0.411361992359161, 0.804327011108398],\n [0.499989002943039, 0.469825029373169],\n [0.479153990745544, 0.442654013633728],\n [0.499974012374878, 0.439637005329132],\n [0.432112008333206, 0.493588984012604],\n [0.499886006116867, 0.866917014122009],\n [0.49991300702095, 0.821729004383087],\n [0.456548988819122, 0.819200992584229],\n [0.344549000263214, 0.745438992977142],\n [0.37890899181366, 0.574010014533997],\n [0.374292999505997, 0.780184984207153],\n [0.319687992334366, 0.570737957954407],\n [0.357154995203018, 0.604269981384277],\n [0.295284003019333, 0.621580958366394],\n [0.447750002145767, 0.862477004528046],\n [0.410986006259918, 0.508723020553589],\n [0.31395098567009, 0.775308012962341],\n [0.354128003120422, 0.812552988529205],\n [0.324548006057739, 0.703992962837219],\n [0.189096003770828, 0.646299958229065],\n [0.279776990413666, 0.71465802192688],\n [0.1338230073452, 0.682700991630554],\n [0.336768001317978, 0.644733011722565],\n [0.429883986711502, 0.466521978378296],\n [0.455527991056442, 0.548622965812683],\n [0.437114000320435, 0.558896005153656],\n [0.467287987470627, 0.529924988746643],\n [0.414712011814117, 0.335219979286194],\n [0.37704598903656, 0.322777986526489],\n [0.344107985496521, 0.320150971412659],\n [0.312875986099243, 0.32233202457428],\n [0.283526003360748, 0.333190023899078],\n [0.241245999932289, 0.382785975933075],\n [0.102986000478268, 0.468762993812561],\n [0.267612010240555, 0.424560010433197],\n [0.297879010438919, 0.433175981044769],\n [0.333433985710144, 0.433878004550934],\n [0.366427004337311, 0.426115989685059],\n [0.396012008190155, 0.416696012020111],\n [0.420121014118195, 0.41022801399231],\n [0.007561000064015, 0.480777025222778],\n [0.432949006557465, 0.569517970085144],\n [0.458638995885849, 0.479089021682739],\n [0.473466008901596, 0.545744001865387],\n [0.476087987422943, 0.563830018043518],\n [0.468472003936768, 0.555056989192963],\n [0.433990985155106, 0.582361996173859],\n [0.483518004417419, 0.562983989715576],\n [0.482482999563217, 0.57784903049469],\n [0.42645001411438, 0.389798998832703],\n [0.438998997211456, 0.39649498462677],\n [0.450067013502121, 0.400434017181396],\n [0.289712011814117, 0.368252992630005],\n [0.276670008897781, 0.363372981548309],\n [0.517862021923065, 0.471948027610779],\n [0.710287988185883, 0.380764007568359],\n [0.526226997375488, 0.573909997940063],\n [0.895093023777008, 0.254140973091125],\n [0.634069979190826, 0.409575998783112],\n [0.661242008209229, 0.41302502155304],\n [0.688880026340485, 0.409460008144379],\n [0.725341975688934, 0.389131009578705],\n [0.606630027294159, 0.40370500087738],\n [0.654766023159027, 0.344011008739471],\n [0.629905998706818, 0.346076011657715],\n [0.680678009986877, 0.347265005111694],\n [0.702096998691559, 0.353591024875641],\n [0.75221198797226, 0.410804986953735],\n [0.602918028831482, 0.842862963676453],\n [0.719901978969574, 0.375599980354309],\n [0.893692970275879, 0.399959981441498],\n [0.790081977844238, 0.391354024410248],\n [0.643998026847839, 0.534487962722778],\n [0.528249025344849, 0.65040397644043],\n [0.525849997997284, 0.680191040039062],\n [0.560214996337891, 0.657229006290436],\n [0.585384011268616, 0.66654098033905],\n [0.549625992774963, 0.680860996246338],\n [0.57122802734375, 0.682691991329193],\n [0.624852001667023, 0.72809898853302],\n [0.513050019741058, 0.547281980514526],\n [0.51509702205658, 0.527251958847046],\n [0.742246985435486, 0.314507007598877],\n [0.598631024360657, 0.454979002475739],\n [0.570338010787964, 0.548575043678284],\n [0.578631997108459, 0.533622980117798],\n [0.723087012767792, 0.532054007053375],\n [0.516445994377136, 0.499638974666595],\n [0.662801027297974, 0.282917976379395],\n [0.70362401008606, 0.293271005153656],\n [0.830704987049103, 0.193813979625702],\n [0.552385985851288, 0.302568018436432],\n [0.607609987258911, 0.353887975215912],\n [0.645429015159607, 0.696707010269165],\n [0.932694971561432, 0.730105042457581],\n [0.557260990142822, 0.572826027870178],\n [0.542901992797852, 0.584792017936707],\n [0.6180260181427, 0.694710969924927],\n [0.607590973377228, 0.694203019142151],\n [0.722943007946014, 0.271963000297546],\n [0.577413976192474, 0.563166975975037],\n [0.614082992076874, 0.281386971473694],\n [0.616907000541687, 0.255886018276215],\n [0.668509006500244, 0.119913995265961],\n [0.770092010498047, 0.232020974159241],\n [0.635536015033722, 0.189248979091644],\n [0.77039098739624, 0.299556016921997],\n [0.826722025871277, 0.278755009174347],\n [0.527121007442474, 0.666198015213013],\n [0.553171992301941, 0.668527007102966],\n [0.577238023281097, 0.673889994621277],\n [0.554691970348358, 0.580065965652466],\n [0.611896991729736, 0.693961024284363],\n [0.59696102142334, 0.706539988517761],\n [0.596370995044708, 0.693953037261963],\n [0.539958000183105, 0.557139039039612],\n [0.568841993808746, 0.692366003990173],\n [0.547818005084991, 0.692366003990173],\n [0.52461302280426, 0.692366003990173],\n [0.534089982509613, 0.779141008853912],\n [0.527670979499817, 0.736225962638855],\n [0.526912987232208, 0.717857003211975],\n [0.526877999305725, 0.704625964164734],\n [0.526966989040375, 0.695277988910675],\n [0.572058022022247, 0.695277988910675],\n [0.573521018028259, 0.703539967536926],\n [0.57683801651001, 0.711845993995667],\n [0.581691026687622, 0.720062971115112],\n [0.609944999217987, 0.639909982681274],\n [0.986046016216278, 0.560034036636353],\n [0.5867999792099, 0.69539999961853],\n [0.590372025966644, 0.701822996139526],\n [0.531915009021759, 0.601536989212036],\n [0.577268004417419, 0.585934996604919],\n [0.536915004253387, 0.593786001205444],\n [0.627542972564697, 0.473352015018463],\n [0.665585994720459, 0.495950996875763],\n [0.588353991508484, 0.546862006187439],\n [0.757824003696442, 0.14767599105835],\n [0.709249973297119, 0.201507985591888],\n [0.672684013843536, 0.256581008434296],\n [0.600408971309662, 0.74900496006012],\n [0.55826598405838, 0.261672019958496],\n [0.570303976535797, 0.187870979309082],\n [0.588165998458862, 0.109044015407562],\n [0.711045026779175, 0.398952007293701],\n [0.781069993972778, 0.435405015945435],\n [0.587247014045715, 0.398931980133057],\n [0.742869973182678, 0.355445981025696],\n [0.572156012058258, 0.437651991844177],\n [0.55186802148819, 0.536570012569427],\n [0.821442008018494, 0.457556009292603],\n [0.752701997756958, 0.457181990146637],\n [0.71375697851181, 0.467626988887787],\n [0.66711300611496, 0.460672974586487],\n [0.631101012229919, 0.447153985500336],\n [0.6008620262146, 0.432473003864288],\n [0.523481011390686, 0.405627012252808],\n [0.810747981071472, 0.523926019668579],\n [0.771045982837677, 0.348959028720856],\n [0.509127020835876, 0.562718033790588],\n [0.595292985439301, 0.485023975372314],\n [0.980530977249146, 0.401564002037048],\n [0.573499977588654, 0.420000016689301],\n [0.602994978427887, 0.548687994480133],\n [0.733529984951019, 0.376977026462555],\n [0.560611009597778, 0.519016981124878],\n [0.967685997486115, 0.644356966018677],\n [0.580985009670258, 0.387160003185272],\n [0.537728011608124, 0.505385041236877],\n [0.760966002941132, 0.779752969741821],\n [0.801778972148895, 0.831938028335571],\n [0.892440974712372, 0.54076099395752],\n [0.816350996494293, 0.740260004997253],\n [0.865594983100891, 0.333687007427216],\n [0.614073991775513, 0.883246004581451],\n [0.508952975273132, 0.579437971115112],\n [0.617941975593567, 0.508316040039062],\n [0.825608015060425, 0.397674977779388],\n [0.681214988231659, 0.39623498916626],\n [0.656635999679565, 0.400596976280212],\n [0.603900015354156, 0.710216999053955],\n [0.81208598613739, 0.588539004325867],\n [0.56801301240921, 0.944564998149872],\n [0.681007981300354, 0.898285031318665],\n [0.733752012252808, 0.869701027870178],\n [0.633830010890961, 0.398822009563446],\n [0.606792986392975, 0.39553701877594],\n [0.589659988880157, 0.391062021255493],\n [0.805015981197357, 0.342108011245728],\n [0.611334979534149, 0.362284004688263],\n [0.634037971496582, 0.355970978736877],\n [0.656635999679565, 0.355356991291046],\n [0.681214988231659, 0.35834002494812],\n [0.698584973812103, 0.363156020641327],\n [0.941866993904114, 0.319076001644135],\n [0.698584973812103, 0.387449026107788],\n [0.584177017211914, 0.624107003211975],\n [0.554318010807037, 0.566076993942261],\n [0.534153997898102, 0.62064003944397],\n [0.711217999458313, 0.819975018501282],\n [0.664629995822906, 0.852871000766754],\n [0.559099972248077, 0.902631998062134],\n [0.871706008911133, 0.791940987110138],\n [0.591234028339386, 0.373893976211548],\n [0.544341027736664, 0.451583981513977],\n [0.624562978744507, 0.924192011356354],\n [0.88577002286911, 0.615028977394104],\n [0.551338016986847, 0.695277988910675],\n [0.551980018615723, 0.704632043838501],\n [0.552887976169586, 0.715808033943176],\n [0.555167973041534, 0.730794012546539],\n [0.569944024085999, 0.767035007476807],\n [0.593203008174896, 0.685675978660583],\n [0.599261999130249, 0.681069016456604],\n [0.607599973678589, 0.677703022956848],\n [0.631937980651855, 0.663500010967255],\n [0.752032995223999, 0.601315021514893],\n [0.547226011753082, 0.420395016670227],\n [0.563543975353241, 0.359827995300293],\n [0.583841025829315, 0.368713974952698],\n [0.586614012718201, 0.692366003990173],\n [0.771915018558502, 0.683578014373779],\n [0.531597018241882, 0.352482974529266],\n [0.588370978832245, 0.804440975189209],\n [0.52079701423645, 0.442565023899078],\n [0.567984998226166, 0.493479013442993],\n [0.543282985687256, 0.819254994392395],\n [0.655317008495331, 0.745514988899231],\n [0.621008992195129, 0.574018001556396],\n [0.625559985637665, 0.78031200170517],\n [0.680198013782501, 0.570719003677368],\n [0.64276397228241, 0.604337990283966],\n [0.704662978649139, 0.621529996395111],\n [0.552012026309967, 0.862591981887817],\n [0.589071989059448, 0.508637011051178],\n [0.685944974422455, 0.775357007980347],\n [0.645735025405884, 0.812640011310577],\n [0.675342977046967, 0.703978002071381],\n [0.810858011245728, 0.646304965019226],\n [0.72012197971344, 0.714666962623596],\n [0.866151988506317, 0.682704985141754],\n [0.663187026977539, 0.644596993923187],\n [0.570082008838654, 0.466325998306274],\n [0.544561982154846, 0.548375964164734],\n [0.562758982181549, 0.558784961700439],\n [0.531987011432648, 0.530140042304993],\n [0.585271000862122, 0.335177004337311],\n [0.622952997684479, 0.32277899980545],\n [0.655896008014679, 0.320163011550903],\n [0.687132000923157, 0.322345972061157],\n [0.716481983661652, 0.333200991153717],\n [0.758756995201111, 0.382786989212036],\n [0.897013008594513, 0.468769013881683],\n [0.732392013072968, 0.424547016620636],\n [0.70211398601532, 0.433162987232208],\n [0.66652500629425, 0.433866024017334],\n [0.633504986763, 0.426087975502014],\n [0.603875994682312, 0.416586995124817],\n [0.579657971858978, 0.409945011138916],\n [0.992439985275269, 0.480777025222778],\n [0.567192018032074, 0.569419980049133],\n [0.54136598110199, 0.478899002075195],\n [0.526564002037048, 0.546118021011353],\n [0.523913025856018, 0.563830018043518],\n [0.531529009342194, 0.555056989192963],\n [0.566035985946655, 0.582329034805298],\n [0.51631098985672, 0.563053965568542],\n [0.5174720287323, 0.577877044677734],\n [0.573594987392426, 0.389806985855103],\n [0.560697972774506, 0.395331978797913],\n [0.549755990505219, 0.399751007556915],\n [0.710287988185883, 0.368252992630005],\n [0.723330020904541, 0.363372981548309],\n];\n\nexport const TRI468 = [\n 127, 34, 139, 11, 0, 37, 232, 231, 120, 72, 37, 39, 128, 121, 47, 232, 121, 128, 104, 69, 67, 175, 171, 148, 157, 154, 155, 118, 50, 101, 73, 39, 40, 9,\n 151, 108, 48, 115, 131, 194, 204, 211, 74, 40, 185, 80, 42, 183, 40, 92, 186, 230, 229, 118, 202, 212, 214, 83, 18, 17, 76, 61, 146, 160, 29, 30, 56,\n 157, 173, 106, 204, 194, 135, 214, 192, 203, 165, 98, 21, 71, 68, 51, 45, 4, 144, 24, 23, 77, 146, 91, 205, 50, 187, 201, 200, 18, 91, 106, 182, 90, 91,\n 181, 85, 84, 17, 206, 203, 36, 148, 171, 140, 92, 40, 39, 193, 189, 244, 159, 158, 28, 247, 246, 161, 236, 3, 196, 54, 68, 104, 193, 168, 8, 117,\n 228, 31, 189, 193, 55, 98, 97, 99, 126, 47, 100, 166, 79, 218, 155, 154, 26, 209, 49, 131, 135, 136, 150, 47, 126, 217, 223, 52, 53, 45, 51, 134, 211,\n 170, 140, 67, 69, 108, 43, 106, 91, 230, 119, 120, 226, 130, 247, 63, 53, 52, 238, 20, 242, 46, 70, 156, 78, 62, 96, 46, 53, 63, 143, 34, 227, 173,\n 155, 133, 123, 117, 111, 44, 125, 19, 236, 134, 51, 216, 206, 205, 154, 153, 22, 39, 37, 167, 200, 201, 208, 36, 142, 100, 57, 212, 202, 20, 60, 99, 28,\n 158, 157, 35, 226, 113, 160, 159, 27, 204, 202, 210, 113, 225, 46, 43, 202, 204, 62, 76, 77, 137, 123, 116, 41, 38, 72, 203, 129, 142, 64, 98, 240, 49,\n 102, 64, 41, 73, 74, 212, 216, 207, 42, 74, 184, 169, 170, 211, 170, 149, 176, 105, 66, 69, 122, 6, 168, 123, 147, 187, 96, 77, 90, 65, 55, 107, 89,\n 90, 180, 101, 100, 120, 63, 105, 104, 93, 137, 227, 15, 86, 85, 129, 102, 49, 14, 87, 86, 55, 8, 9, 100, 47, 121, 145, 23, 22, 88, 89, 179, 6, 122,\n 196, 88, 95, 96, 138, 172, 136, 215, 58, 172, 115, 48, 219, 42, 80, 81, 195, 3, 51, 43, 146, 61, 171, 175, 199, 81, 82, 38, 53, 46, 225, 144, 163, 110,\n 246, 33, 7, 52, 65, 66, 229, 228, 117, 34, 127, 234, 107, 108, 69, 109, 108, 151, 48, 64, 235, 62, 78, 191, 129, 209, 126, 111, 35, 143, 163, 161, 246,\n 117, 123, 50, 222, 65, 52, 19, 125, 141, 221, 55, 65, 3, 195, 197, 25, 7, 33, 220, 237, 44, 70, 71, 139, 122, 193, 245, 247, 130, 33, 71, 21, 162,\n 153, 158, 159, 170, 169, 150, 188, 174, 196, 216, 186, 92, 144, 160, 161, 2, 97, 167, 141, 125, 241, 164, 167, 37, 72, 38, 12, 145, 159, 160, 38, 82, 13,\n 63, 68, 71, 226, 35, 111, 158, 153, 154, 101, 50, 205, 206, 92, 165, 209, 198, 217, 165, 167, 97, 220, 115, 218, 133, 112, 243, 239, 238, 241, 214,\n 135, 169, 190, 173, 133, 171, 208, 32, 125, 44, 237, 86, 87, 178, 85, 86, 179, 84, 85, 180, 83, 84, 181, 201, 83, 182, 137, 93, 132, 76, 62, 183, 61,\n 76, 184, 57, 61, 185, 212, 57, 186, 214, 207, 187, 34, 143, 156, 79, 239, 237, 123, 137, 177, 44, 1, 4, 201, 194, 32, 64, 102, 129, 213, 215, 138, 59,\n 166, 219, 242, 99, 97, 2, 94, 141, 75, 59, 235, 24, 110, 228, 25, 130, 226, 23, 24, 229, 22, 23, 230, 26, 22, 231, 112, 26, 232, 189, 190, 243, 221, 56,\n 190, 28, 56, 221, 27, 28, 222, 29, 27, 223, 30, 29, 224, 247, 30, 225, 238, 79, 20, 166, 59, 75, 60, 75, 240, 147, 177, 215, 20, 79, 166, 187, 147, 213,\n 112, 233, 244, 233, 128, 245, 128, 114, 188, 114, 217, 174, 131, 115, 220, 217, 198, 236, 198, 131, 134, 177, 132, 58, 143, 35, 124, 110, 163, 7, 228,\n 110, 25, 356, 389, 368, 11, 302, 267, 452, 350, 349, 302, 303, 269, 357, 343, 277, 452, 453, 357, 333, 332, 297, 175, 152, 377, 384, 398, 382, 347,\n 348, 330, 303, 304, 270, 9, 336, 337, 278, 279, 360, 418, 262, 431, 304, 408, 409, 310, 415, 407, 270, 409, 410, 450, 348, 347, 422, 430, 434, 313,\n 314, 17, 306, 307, 375, 387, 388, 260, 286, 414, 398, 335, 406, 418, 364, 367, 416, 423, 358, 327, 251, 284, 298, 281, 5, 4, 373, 374, 253, 307, 320,\n 321, 425, 427, 411, 421, 313, 18, 321, 405, 406, 320, 404, 405, 315, 16, 17, 426, 425, 266, 377, 400, 369, 322, 391, 269, 417, 465, 464, 386, 257, 258,\n 466, 260, 388, 456, 399, 419, 284, 332, 333, 417, 285, 8, 346, 340, 261, 413, 441, 285, 327, 460, 328, 355, 371, 329, 392, 439, 438, 382, 341, 256,\n 429, 420, 360, 364, 394, 379, 277, 343, 437, 443, 444, 283, 275, 440, 363, 431, 262, 369, 297, 338, 337, 273, 375, 321, 450, 451, 349, 446, 342, 467,\n 293, 334, 282, 458, 461, 462, 276, 353, 383, 308, 324, 325, 276, 300, 293, 372, 345, 447, 382, 398, 362, 352, 345, 340, 274, 1, 19, 456, 248, 281, 436,\n 427, 425, 381, 256, 252, 269, 391, 393, 200, 199, 428, 266, 330, 329, 287, 273, 422, 250, 462, 328, 258, 286, 384, 265, 353, 342, 387, 259, 257, 424,\n 431, 430, 342, 353, 276, 273, 335, 424, 292, 325, 307, 366, 447, 345, 271, 303, 302, 423, 266, 371, 294, 455, 460, 279, 278, 294, 271, 272, 304, 432,\n 434, 427, 272, 407, 408, 394, 430, 431, 395, 369, 400, 334, 333, 299, 351, 417, 168, 352, 280, 411, 325, 319, 320, 295, 296, 336, 319, 403, 404, 330,\n 348, 349, 293, 298, 333, 323, 454, 447, 15, 16, 315, 358, 429, 279, 14, 15, 316, 285, 336, 9, 329, 349, 350, 374, 380, 252, 318, 402, 403, 6, 197, 419,\n 318, 319, 325, 367, 364, 365, 435, 367, 397, 344, 438, 439, 272, 271, 311, 195, 5, 281, 273, 287, 291, 396, 428, 199, 311, 271, 268, 283, 444, 445,\n 373, 254, 339, 263, 466, 249, 282, 334, 296, 449, 347, 346, 264, 447, 454, 336, 296, 299, 338, 10, 151, 278, 439, 455, 292, 407, 415, 358, 371, 355,\n 340, 345, 372, 390, 249, 466, 346, 347, 280, 442, 443, 282, 19, 94, 370, 441, 442, 295, 248, 419, 197, 263, 255, 359, 440, 275, 274, 300, 383, 368,\n 351, 412, 465, 263, 467, 466, 301, 368, 389, 380, 374, 386, 395, 378, 379, 412, 351, 419, 436, 426, 322, 373, 390, 388, 2, 164, 393, 370, 462, 461,\n 164, 0, 267, 302, 11, 12, 374, 373, 387, 268, 12, 13, 293, 300, 301, 446, 261, 340, 385, 384, 381, 330, 266, 425, 426, 423, 391, 429, 355, 437, 391,\n 327, 326, 440, 457, 438, 341, 382, 362, 459, 457, 461, 434, 430, 394, 414, 463, 362, 396, 369, 262, 354, 461, 457, 316, 403, 402, 315, 404, 403, 314,\n 405, 404, 313, 406, 405, 421, 418, 406, 366, 401, 361, 306, 408, 407, 291, 409, 408, 287, 410, 409, 432, 436, 410, 434, 416, 411, 264, 368, 383, 309,\n 438, 457, 352, 376, 401, 274, 275, 4, 421, 428, 262, 294, 327, 358, 433, 416, 367, 289, 455, 439, 462, 370, 326, 2, 326, 370, 305, 460, 455, 254,\n 449, 448, 255, 261, 446, 253, 450, 449, 252, 451, 450, 256, 452, 451, 341, 453, 452, 413, 464, 463, 441, 413, 414, 258, 442, 441, 257, 443, 442, 259,\n 444, 443, 260, 445, 444, 467, 342, 445, 459, 458, 250, 289, 392, 290, 290, 328, 460, 376, 433, 435, 250, 290, 392, 411, 416, 433, 341, 463, 464, 453,\n 464, 465, 357, 465, 412, 343, 412, 399, 360, 363, 440, 437, 399, 456, 420, 456, 363, 401, 435, 288, 372, 383, 353, 339, 255, 249, 448, 261, 255, 133,\n 243, 190, 133, 155, 112, 33, 246, 247, 33, 130, 25, 398, 384, 286, 362, 398, 414, 362, 463, 341, 263, 359, 467, 263, 249, 255, 466, 467, 260, 75, 60,\n 166, 238, 239, 79, 162, 127, 139, 72, 11, 37, 121, 232, 120, 73, 72, 39, 114, 128, 47, 233, 232, 128, 103, 104, 67, 152, 175, 148, 173, 157, 155,\n 119, 118, 101, 74, 73, 40, 107, 9, 108, 49, 48, 131, 32, 194, 211, 184, 74, 185, 191, 80, 183, 185, 40, 186, 119, 230, 118, 210, 202, 214, 84, 83, 17,\n 77, 76, 146, 161, 160, 30, 190, 56, 173, 182, 106, 194, 138, 135, 192, 129, 203, 98, 54, 21, 68, 5, 51, 4, 145, 144, 23, 90, 77, 91, 207, 205, 187, 83,\n 201, 18, 181, 91, 182, 180, 90, 181, 16, 85, 17, 205, 206, 36, 176, 148, 140, 165, 92, 39, 245, 193, 244, 27, 159, 28, 30, 247, 161, 174, 236, 196,\n 103, 54, 104, 55, 193, 8, 111, 117, 31, 221, 189, 55, 240, 98, 99, 142, 126, 100, 219, 166, 218, 112, 155, 26, 198, 209, 131, 169, 135, 150, 114, 47,\n 217, 224, 223, 53, 220, 45, 134, 32, 211, 140, 109, 67, 108, 146, 43, 91, 231, 230, 120, 113, 226, 247, 105, 63, 52, 241, 238, 242, 124, 46, 156, 95,\n 78, 96, 70, 46, 63, 116, 143, 227, 116, 123, 111, 1, 44, 19, 3, 236, 51, 207, 216, 205, 26, 154, 22, 165, 39, 167, 199, 200, 208, 101, 36, 100, 43,\n 57, 202, 242, 20, 99, 56, 28, 157, 124, 35, 113, 29, 160, 27, 211, 204, 210, 124, 113, 46, 106, 43, 204, 96, 62, 77, 227, 137, 116, 73, 41, 72, 36, 203,\n 142, 235, 64, 240, 48, 49, 64, 42, 41, 74, 214, 212, 207, 183, 42, 184, 210, 169, 211, 140, 170, 176, 104, 105, 69, 193, 122, 168, 50, 123, 187, 89, 96,\n 90, 66, 65, 107, 179, 89, 180, 119, 101, 120, 68, 63, 104, 234, 93, 227, 16, 15, 85, 209, 129, 49, 15, 14, 86, 107, 55, 9, 120, 100, 121, 153, 145, 22,\n 178, 88, 179, 197, 6, 196, 89, 88, 96, 135, 138, 136, 138, 215, 172, 218, 115, 219, 41, 42, 81, 5, 195, 51, 57, 43, 61, 208, 171, 199, 41, 81, 38,\n 224, 53, 225, 24, 144, 110, 105, 52, 66, 118, 229, 117, 227, 34, 234, 66, 107, 69, 10, 109, 151, 219, 48, 235, 183, 62, 191, 142, 129, 126, 116, 111,\n 143, 7, 163, 246, 118, 117, 50, 223, 222, 52, 94, 19, 141, 222, 221, 65, 196, 3, 197, 45, 220, 44, 156, 70, 139, 188, 122, 245, 139, 71, 162, 145,\n 153, 159, 149, 170, 150, 122, 188, 196, 206, 216, 92, 163, 144, 161, 164, 2, 167, 242, 141, 241, 0, 164, 37, 11, 72, 12, 144, 145, 160, 12, 38, 13, 70,\n 63, 71, 31, 226, 111, 157, 158, 154, 36, 101, 205, 203, 206, 165, 126, 209, 217, 98, 165, 97, 237, 220, 218, 237, 239, 241, 210, 214, 169, 140, 171, 32,\n 241, 125, 237, 179, 86, 178, 180, 85, 179, 181, 84, 180, 182, 83, 181, 194, 201, 182, 177, 137, 132, 184, 76, 183, 185, 61, 184, 186, 57, 185, 216, 212,\n 186, 192, 214, 187, 139, 34, 156, 218, 79, 237, 147, 123, 177, 45, 44, 4, 208, 201, 32, 98, 64, 129, 192, 213, 138, 235, 59, 219, 141, 242, 97, 97, 2,\n 141, 240, 75, 235, 229, 24, 228, 31, 25, 226, 230, 23, 229, 231, 22, 230, 232, 26, 231, 233, 112, 232, 244, 189, 243, 189, 221, 190, 222, 28, 221,\n 223, 27, 222, 224, 29, 223, 225, 30, 224, 113, 247, 225, 99, 60, 240, 213, 147, 215, 60, 20, 166, 192, 187, 213, 243, 112, 244, 244, 233, 245, 245,\n 128, 188, 188, 114, 174, 134, 131, 220, 174, 217, 236, 236, 198, 134, 215, 177, 58, 156, 143, 124, 25, 110, 7, 31, 228, 25, 264, 356, 368, 0, 11, 267,\n 451, 452, 349, 267, 302, 269, 350, 357, 277, 350, 452, 357, 299, 333, 297, 396, 175, 377, 381, 384, 382, 280, 347, 330, 269, 303, 270, 151, 9, 337,\n 344, 278, 360, 424, 418, 431, 270, 304, 409, 272, 310, 407, 322, 270, 410, 449, 450, 347, 432, 422, 434, 18, 313, 17, 291, 306, 375, 259, 387, 260,\n 424, 335, 418, 434, 364, 416, 391, 423, 327, 301, 251, 298, 275, 281, 4, 254, 373, 253, 375, 307, 321, 280, 425, 411, 200, 421, 18, 335, 321, 406,\n 321, 320, 405, 314, 315, 17, 423, 426, 266, 396, 377, 369, 270, 322, 269, 413, 417, 464, 385, 386, 258, 248, 456, 419, 298, 284, 333, 168, 417, 8,\n 448, 346, 261, 417, 413, 285, 326, 327, 328, 277, 355, 329, 309, 392, 438, 381, 382, 256, 279, 429, 360, 365, 364, 379, 355, 277, 437, 282, 443, 283,\n 281, 275, 363, 395, 431, 369, 299, 297, 337, 335, 273, 321, 348, 450, 349, 359, 446, 467, 283, 293, 282, 250, 458, 462, 300, 276, 383, 292, 308, 325,\n 283, 276, 293, 264, 372, 447, 346, 352, 340, 354, 274, 19, 363, 456, 281, 426, 436, 425, 380, 381, 252, 267, 269, 393, 421, 200, 428, 371, 266, 329,\n 432, 287, 422, 290, 250, 328, 385, 258, 384, 446, 265, 342, 386, 387, 257, 422, 424, 430, 445, 342, 276, 422, 273, 424, 306, 292, 307, 352, 366, 345,\n 268, 271, 302, 358, 423, 371, 327, 294, 460, 331, 279, 294, 303, 271, 304, 436, 432, 427, 304, 272, 408, 395, 394, 431, 378, 395, 400, 296, 334, 299,\n 6, 351, 168, 376, 352, 411, 307, 325, 320, 285, 295, 336, 320, 319, 404, 329, 330, 349, 334, 293, 333, 366, 323, 447, 316, 15, 315, 331, 358, 279,\n 317, 14, 316, 8, 285, 9, 277, 329, 350, 253, 374, 252, 319, 318, 403, 351, 6, 419, 324, 318, 325, 397, 367, 365, 288, 435, 397, 278, 344, 439, 310,\n 272, 311, 248, 195, 281, 375, 273, 291, 175, 396, 199, 312, 311, 268, 276, 283, 445, 390, 373, 339, 295, 282, 296, 448, 449, 346, 356, 264, 454, 337,\n 336, 299, 337, 338, 151, 294, 278, 455, 308, 292, 415, 429, 358, 355, 265, 340, 372, 388, 390, 466, 352, 346, 280, 295, 442, 282, 354, 19, 370, 285,\n 441, 295, 195, 248, 197, 457, 440, 274, 301, 300, 368, 417, 351, 465, 251, 301, 389, 385, 380, 386, 394, 395, 379, 399, 412, 419, 410, 436, 322, 387,\n 373, 388, 326, 2, 393, 354, 370, 461, 393, 164, 267, 268, 302, 12, 386, 374, 387, 312, 268, 13, 298, 293, 301, 265, 446, 340, 380, 385, 381, 280, 330,\n 425, 322, 426, 391, 420, 429, 437, 393, 391, 326, 344, 440, 438, 458, 459, 461, 364, 434, 394, 428, 396, 262, 274, 354, 457, 317, 316, 402, 316, 315,\n 403, 315, 314, 404, 314, 313, 405, 313, 421, 406, 323, 366, 361, 292, 306, 407, 306, 291, 408, 291, 287, 409, 287, 432, 410, 427, 434, 411, 372, 264,\n 383, 459, 309, 457, 366, 352, 401, 1, 274, 4, 418, 421, 262, 331, 294, 358, 435, 433, 367, 392, 289, 439, 328, 462, 326, 94, 2, 370, 289, 305, 455, 339,\n 254, 448, 359, 255, 446, 254, 253, 449, 253, 252, 450, 252, 256, 451, 256, 341, 452, 414, 413, 463, 286, 441, 414, 286, 258, 441, 258, 257, 442, 257,\n 259, 443, 259, 260, 444, 260, 467, 445, 309, 459, 250, 305, 289, 290, 305, 290, 460, 401, 376, 435, 309, 250, 392, 376, 411, 433, 453, 341, 464, 357,\n 453, 465, 343, 357, 412, 437, 343, 399, 344, 360, 440, 420, 437, 456, 360, 420, 363, 361, 401, 288, 265, 372, 353, 390, 339, 249, 339, 448, 255];\n\nexport const TRI68 = [0, 1, 36, 0, 36, 17, 1, 2, 41, 1, 41, 36, 2, 3, 31, 2, 31, 41, 3, 4, 48, 3, 48, 31, 4, 5, 48, 5, 6, 48, 6, 7, 59, 6, 59, 48, 7, 8, 58, 7, 58, 59,\n 8, 9, 56, 8, 56, 57, 8, 57, 58, 9, 10, 55, 9, 55, 56, 10, 11, 54, 10, 54, 55, 11, 12, 54, 12, 13, 54, 13, 14, 35, 13, 35, 54, 14, 15, 46, 14, 46, 35, 15, 16,\n 45, 15, 45, 46, 16, 26, 45, 17, 36, 18, 18, 37, 19, 18, 36, 37, 19, 38, 20, 19, 37, 38, 20, 39, 21, 20, 38, 39, 21, 39, 27, 22, 42, 23, 22, 27, 42, 23, 43, 24,\n 23, 42, 43, 24, 44, 25, 24, 43, 44, 25, 45, 26, 25, 44, 45, 27, 39, 28, 27, 28, 42, 28, 39, 29, 28, 29, 42, 29, 31, 30, 29, 30, 35, 29, 40, 31, 29, 35, 47, 29,\n 39, 40, 29, 47, 42, 30, 31, 32, 30, 32, 33, 30, 33, 34, 30, 34, 35, 31, 50, 32, 31, 40, 41, 31, 48, 49, 31, 49, 50, 32, 51, 33, 32, 50, 51, 33, 51, 34, 34, 52,\n 35, 34, 51, 52, 35, 46, 47, 35, 52, 53, 35, 53, 54, 36, 41, 37, 37, 40, 38, 37, 41, 40, 38, 40, 39, 42, 47, 43, 43, 47, 44, 44, 46, 45, 44, 47, 46, 48, 60, 49,\n 48, 59, 60, 49, 61, 50, 49, 60, 61, 50, 62, 51, 50, 61, 62, 51, 62, 52, 52, 63, 53, 52, 62, 63, 53, 64, 54, 53, 63, 64, 54, 64, 55, 55, 65, 56, 55, 64, 65, 56,\n 66, 57, 56, 65, 66, 57, 66, 58, 58, 67, 59, 58, 66, 67, 59, 67, 60, 60, 67, 61, 61, 66, 62, 61, 67, 66, 62, 66, 63, 63, 65, 64, 63, 66, 65, 21, 27, 22];\n\nexport const TRI33 = [\n /* eyes */ 0, 8, 7, 7, 8, 1, 2, 10, 9, 9, 10, 3,\n /* brows */ 17, 0, 18, 18, 0, 7, 18, 7, 19, 19, 7, 1, 19, 1, 11, 19, 11, 20, 21, 3, 22, 21, 9, 3, 20, 9, 21, 20, 2, 9, 20, 11, 2,\n /* 4head */ 23, 17, 18, 25, 21, 22, 24, 19, 20, 24, 18, 19, 24, 20, 21, 24, 23, 18, 24, 21, 25,\n /* nose */ 11, 12, 4, 11, 4, 13, 1, 12, 11, 11, 13, 2, 12, 14, 4, 4, 14, 13,\n /* up-lip */ 14, 5, 15, 14, 15, 6, 12, 5, 14, 14, 6, 13,\n /* cheeks */ 8, 12, 1, 2, 13, 10, 8, 26, 12, 10, 13, 27, 26, 5, 12, 13, 6, 27, 0, 26, 8, 10, 27, 3,\n /* chin */ 5, 32, 16, 16, 32, 6, 5, 30, 32, 6, 32, 31,\n /* cont */ 26, 30, 5, 27, 6, 31, 0, 28, 26, 3, 27, 29, 17, 28, 0, 3, 29, 22, 23, 28, 17, 22, 29, 25, 28, 30, 26, 27, 31, 29,\n];\n\nexport const TRI7 = [0, 4, 1, 2, 4, 3, 4, 5, 6];\n\nexport const VTX68 = [\n /* cont */ 127, 234, 132, 58, 172, 150, 149, 148, 152, 377, 378, 379, 397, 288, 361, 454, 356,\n /* brows */ 70, 63, 105, 66, 107, 336, 296, 334, 293, 300,\n /* nose */ 168, 6, 195, 4, 98, 97, 2, 326, 327,\n /* eyes */ 33, 160, 158, 133, 153, 144, 362, 385, 387, 263, 373, 380,\n /* lip */ 57, 40, 37, 0, 267, 270, 287, 321, 314, 17, 84, 91,\n /* mouth */ 78, 81, 13, 311, 308, 402, 14, 178,\n];\n\nexport const VTX33 = [33, 133, 362, 263, 1, 62, 308, 159, 145, 386, 374, 6, 102, 331, 2, 13, 14, 70, 105, 107, 336, 334, 300, 54, 10, 284, 50, 280, 234, 454, 58, 288, 152];\n\nexport const VTX7 = [33, 133, 362, 263, 1, 78, 308];\n\nexport const UV68 = VTX68.map((x) => UV468[x]);\n\nexport const UV33 = VTX33.map((x) => UV468[x]);\n\nexport const UV7 = VTX7.map((x) => UV468[x]);\n", "import { log } from '../helpers';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as modelBase from './modelBase';\nimport * as decodeMultiple from './decodeMultiple';\nimport * as decodePose from './decodePose';\nimport * as util from './util';\n\nasync function estimateMultiple(input, res, config, inputSize) {\n return new Promise(async (resolve) => {\n const allTensorBuffers = await util.toTensorBuffers3D([res.heatmapScores, res.offsets, res.displacementFwd, res.displacementBwd]);\n const scoresBuffer = allTensorBuffers[0];\n const offsetsBuffer = allTensorBuffers[1];\n const displacementsFwdBuffer = allTensorBuffers[2];\n const displacementsBwdBuffer = allTensorBuffers[3];\n const poses = await decodeMultiple.decodeMultiplePoses(scoresBuffer, offsetsBuffer, displacementsFwdBuffer, displacementsBwdBuffer, config.body.nmsRadius, config.body.maxDetections, config.body.scoreThreshold);\n const scaled = util.scaleAndFlipPoses(poses, [input.shape[1], input.shape[2]], [inputSize, inputSize]);\n resolve(scaled);\n });\n}\n\nasync function estimateSingle(input, res, config, inputSize) {\n return new Promise(async (resolve) => {\n const pose = await decodePose.decodeSinglePose(res.heatmapScores, res.offsets, config.body.scoreThreshold);\n const scaled = util.scaleAndFlipPoses([pose], [input.shape[1], input.shape[2]], [inputSize, inputSize]);\n resolve(scaled);\n });\n}\n\nexport class PoseNet {\n baseModel: any;\n inputSize: number\n constructor(model) {\n this.baseModel = model;\n this.inputSize = model.model.inputs[0].shape[1];\n if (this.inputSize < 128) this.inputSize = 257;\n }\n\n async estimatePoses(input, config) {\n const resized = util.resizeTo(input, [this.inputSize, this.inputSize]);\n const res = this.baseModel.predict(resized, config);\n\n const poses = (config.body.maxDetections < 2)\n ? await estimateSingle(input, res, config, this.inputSize)\n : await estimateMultiple(input, res, config, this.inputSize);\n\n res.heatmapScores.dispose();\n res.offsets.dispose();\n res.displacementFwd.dispose();\n res.displacementBwd.dispose();\n resized.dispose();\n\n return poses;\n }\n\n dispose() {\n this.baseModel.dispose();\n }\n}\n\nexport async function load(config) {\n const model = await tf.loadGraphModel(config.body.modelPath);\n const mobilenet = new modelBase.BaseModel(model);\n if (config.debug) log(`load model: ${config.body.modelPath.match(/\\/(.*)\\./)[1]}`);\n return new PoseNet(mobilenet);\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nfunction nameOutputResultsMobileNet(results) {\n const [offsets, heatmap, displacementFwd, displacementBwd] = results;\n return { offsets, heatmap, displacementFwd, displacementBwd };\n}\n\nexport class BaseModel {\n model: any;\n constructor(model) {\n this.model = model;\n }\n\n predict(input) {\n return tf.tidy(() => {\n const asFloat = input.toFloat().div(127.5).sub(1.0);\n const asBatch = asFloat.expandDims(0);\n const results = this.model.predict(asBatch);\n const results3d = results.map((y) => y.squeeze([0]));\n const namedResults = nameOutputResultsMobileNet(results3d);\n return {\n heatmapScores: namedResults.heatmap.sigmoid(),\n offsets: namedResults.offsets,\n displacementFwd: namedResults.displacementFwd,\n displacementBwd: namedResults.displacementBwd,\n };\n });\n }\n\n dispose() {\n this.model.dispose();\n }\n}\n", "// algorithm based on Coursera Lecture from Algorithms, Part 1: https://www.coursera.org/learn/algorithms-part1/lecture/ZjoSM/heapsort\nfunction half(k) {\n return Math.floor(k / 2);\n}\nexport class MaxHeap {\n priorityQueue: any;\n numberOfElements: number;\n getElementValue: any;\n\n constructor(maxSize, getElementValue) {\n this.priorityQueue = new Array(maxSize);\n this.numberOfElements = -1;\n this.getElementValue = getElementValue;\n }\n\n enqueue(x) {\n this.priorityQueue[++this.numberOfElements] = x;\n this.swim(this.numberOfElements);\n }\n\n dequeue() {\n const max = this.priorityQueue[0];\n this.exchange(0, this.numberOfElements--);\n this.sink(0);\n this.priorityQueue[this.numberOfElements + 1] = null;\n return max;\n }\n\n empty() {\n return this.numberOfElements === -1;\n }\n\n size() {\n return this.numberOfElements + 1;\n }\n\n all() {\n return this.priorityQueue.slice(0, this.numberOfElements + 1);\n }\n\n max() {\n return this.priorityQueue[0];\n }\n\n swim(k) {\n while (k > 0 && this.less(half(k), k)) {\n this.exchange(k, half(k));\n k = half(k);\n }\n }\n\n sink(k) {\n while (2 * k <= this.numberOfElements) {\n let j = 2 * k;\n if (j < this.numberOfElements && this.less(j, j + 1)) j++;\n if (!this.less(k, j)) break;\n this.exchange(k, j);\n k = j;\n }\n }\n\n getValueAt(i) {\n return this.getElementValue(this.priorityQueue[i]);\n }\n\n less(i, j) {\n return this.getValueAt(i) < this.getValueAt(j);\n }\n\n exchange(i, j) {\n const t = this.priorityQueue[i];\n this.priorityQueue[i] = this.priorityQueue[j];\n this.priorityQueue[j] = t;\n }\n}\n", "import * as heapSort from './heapSort';\n\nfunction scoreIsMaximumInLocalWindow(keypointId, score, heatmapY, heatmapX, localMaximumRadius, scores) {\n const [height, width] = scores.shape;\n let localMaximum = true;\n const yStart = Math.max(heatmapY - localMaximumRadius, 0);\n const yEnd = Math.min(heatmapY + localMaximumRadius + 1, height);\n for (let yCurrent = yStart; yCurrent < yEnd; ++yCurrent) {\n const xStart = Math.max(heatmapX - localMaximumRadius, 0);\n const xEnd = Math.min(heatmapX + localMaximumRadius + 1, width);\n for (let xCurrent = xStart; xCurrent < xEnd; ++xCurrent) {\n if (scores.get(yCurrent, xCurrent, keypointId) > score) {\n localMaximum = false;\n break;\n }\n }\n if (!localMaximum) break;\n }\n return localMaximum;\n}\n\nexport function buildPartWithScoreQueue(scoreThreshold, localMaximumRadius, scores) {\n const [height, width, numKeypoints] = scores.shape;\n const queue = new heapSort.MaxHeap(height * width * numKeypoints, ({ score }) => score);\n for (let heatmapY = 0; heatmapY < height; ++heatmapY) {\n for (let heatmapX = 0; heatmapX < width; ++heatmapX) {\n for (let keypointId = 0; keypointId < numKeypoints; ++keypointId) {\n const score = scores.get(heatmapY, heatmapX, keypointId);\n // Only consider parts with score greater or equal to threshold as root candidates.\n if (score < scoreThreshold) continue;\n // Only consider keypoints whose score is maximum in a local window.\n if (scoreIsMaximumInLocalWindow(keypointId, score, heatmapY, heatmapX, localMaximumRadius, scores)) {\n queue.enqueue({ score, part: { heatmapY, heatmapX, id: keypointId } });\n }\n }\n }\n }\n return queue;\n}\n", "import * as keypoints from './keypoints';\nimport * as vectors from './vectors';\nimport * as decoders from './decoders';\n\nconst parentChildrenTuples = keypoints.poseChain.map(([parentJoinName, childJoinName]) => ([keypoints.partIds[parentJoinName], keypoints.partIds[childJoinName]]));\nconst parentToChildEdges = parentChildrenTuples.map(([, childJointId]) => childJointId);\nconst childToParentEdges = parentChildrenTuples.map(([parentJointId]) => parentJointId);\n\nconst defaultOutputStride = 16;\n\nfunction getDisplacement(edgeId, point, displacements) {\n const numEdges = displacements.shape[2] / 2;\n return {\n y: displacements.get(point.y, point.x, edgeId),\n x: displacements.get(point.y, point.x, numEdges + edgeId),\n };\n}\n\nfunction getStridedIndexNearPoint(point, outputStride, height, width) {\n return {\n y: vectors.clamp(Math.round(point.y / outputStride), 0, height - 1),\n x: vectors.clamp(Math.round(point.x / outputStride), 0, width - 1),\n };\n}\n\nfunction traverseToTargetKeypoint(edgeId, sourceKeypoint, targetKeypointId, scoresBuffer, offsets, outputStride, displacements, offsetRefineStep = 2) {\n const [height, width] = scoresBuffer.shape;\n // Nearest neighbor interpolation for the source->target displacements.\n const sourceKeypointIndices = getStridedIndexNearPoint(sourceKeypoint.position, outputStride, height, width);\n const displacement = getDisplacement(edgeId, sourceKeypointIndices, displacements);\n const displacedPoint = vectors.addVectors(sourceKeypoint.position, displacement);\n let targetKeypoint = displacedPoint;\n for (let i = 0; i < offsetRefineStep; i++) {\n const targetKeypointIndices = getStridedIndexNearPoint(targetKeypoint, outputStride, height, width);\n const offsetPoint = vectors.getOffsetPoint(targetKeypointIndices.y, targetKeypointIndices.x, targetKeypointId, offsets);\n targetKeypoint = vectors.addVectors({\n x: targetKeypointIndices.x * outputStride,\n y: targetKeypointIndices.y * outputStride,\n }, { x: offsetPoint.x, y: offsetPoint.y });\n }\n const targetKeyPointIndices = getStridedIndexNearPoint(targetKeypoint, outputStride, height, width);\n const score = scoresBuffer.get(targetKeyPointIndices.y, targetKeyPointIndices.x, targetKeypointId);\n return { position: targetKeypoint, part: keypoints.partNames[targetKeypointId], score };\n}\n\nexport function decodePose(root, scores, offsets, outputStride, displacementsFwd, displacementsBwd) {\n const numParts = scores.shape[2];\n const numEdges = parentToChildEdges.length;\n const instanceKeypoints = new Array(numParts);\n // Start a new detection instance at the position of the root.\n const { part: rootPart, score: rootScore } = root;\n const rootPoint = vectors.getImageCoords(rootPart, outputStride, offsets);\n instanceKeypoints[rootPart.id] = {\n score: rootScore,\n part: keypoints.partNames[rootPart.id],\n position: rootPoint,\n };\n // Decode the part positions upwards in the tree, following the backward displacements.\n for (let edge = numEdges - 1; edge >= 0; --edge) {\n const sourceKeypointId = parentToChildEdges[edge];\n const targetKeypointId = childToParentEdges[edge];\n if (instanceKeypoints[sourceKeypointId] && !instanceKeypoints[targetKeypointId]) {\n instanceKeypoints[targetKeypointId] = traverseToTargetKeypoint(edge, instanceKeypoints[sourceKeypointId], targetKeypointId, scores, offsets, outputStride, displacementsBwd);\n }\n }\n // Decode the part positions downwards in the tree, following the forward displacements.\n for (let edge = 0; edge < numEdges; ++edge) {\n const sourceKeypointId = childToParentEdges[edge];\n const targetKeypointId = parentToChildEdges[edge];\n if (instanceKeypoints[sourceKeypointId] && !instanceKeypoints[targetKeypointId]) {\n instanceKeypoints[targetKeypointId] = traverseToTargetKeypoint(edge, instanceKeypoints[sourceKeypointId], targetKeypointId, scores, offsets, outputStride, displacementsFwd);\n }\n }\n return instanceKeypoints;\n}\n\nexport async function decodeSinglePose(heatmapScores, offsets, minScore) {\n let totalScore = 0.0;\n const heatmapValues = decoders.argmax2d(heatmapScores);\n const allTensorBuffers = await Promise.all([heatmapScores.buffer(), offsets.buffer(), heatmapValues.buffer()]);\n const scoresBuffer = allTensorBuffers[0];\n const offsetsBuffer = allTensorBuffers[1];\n const heatmapValuesBuffer = allTensorBuffers[2];\n const offsetPoints = decoders.getOffsetPoints(heatmapValuesBuffer, defaultOutputStride, offsetsBuffer);\n const offsetPointsBuffer = await offsetPoints.buffer();\n const keypointConfidence = Array.from(decoders.getPointsConfidence(scoresBuffer, heatmapValuesBuffer));\n const instanceKeypoints = keypointConfidence.map((score, i) => {\n totalScore += score;\n return {\n position: {\n y: offsetPointsBuffer.get(i, 0),\n x: offsetPointsBuffer.get(i, 1),\n },\n part: keypoints.partNames[i],\n score,\n };\n });\n const filteredKeypoints = instanceKeypoints.filter((kpt) => kpt.score > minScore);\n heatmapValues.dispose();\n offsetPoints.dispose();\n return { keypoints: filteredKeypoints, score: totalScore / instanceKeypoints.length };\n}\n", "import * as kpt from './keypoints';\n\nexport function getOffsetPoint(y, x, keypoint, offsets) {\n return {\n y: offsets.get(y, x, keypoint),\n x: offsets.get(y, x, keypoint + kpt.NUM_KEYPOINTS),\n };\n}\n\nexport function getImageCoords(part, outputStride, offsets) {\n const { heatmapY, heatmapX, id: keypoint } = part;\n const { y, x } = getOffsetPoint(heatmapY, heatmapX, keypoint, offsets);\n return {\n x: part.heatmapX * outputStride + x,\n y: part.heatmapY * outputStride + y,\n };\n}\n\nexport function fillArray(element, size) {\n const result = new Array(size);\n for (let i = 0; i < size; i++) {\n result[i] = element;\n }\n return result;\n}\n\nexport function clamp(a, min, max) {\n if (a < min) return min;\n if (a > max) return max;\n return a;\n}\n\nexport function squaredDistance(y1, x1, y2, x2) {\n const dy = y2 - y1;\n const dx = x2 - x1;\n return dy * dy + dx * dx;\n}\n\nexport function addVectors(a, b) {\n return { x: a.x + b.x, y: a.y + b.y };\n}\n\nexport function clampVector(a, min, max) {\n return { y: clamp(a.y, min, max), x: clamp(a.x, min, max) };\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\nimport * as kpt from './keypoints';\n\nexport function getPointsConfidence(heatmapScores, heatMapCoords) {\n const numKeypoints = heatMapCoords.shape[0];\n const result = new Float32Array(numKeypoints);\n for (let keypoint = 0; keypoint < numKeypoints; keypoint++) {\n const y = heatMapCoords.get(keypoint, 0);\n const x = heatMapCoords.get(keypoint, 1);\n result[keypoint] = heatmapScores.get(y, x, keypoint);\n }\n return result;\n}\n\nfunction getOffsetPoint(y, x, keypoint, offsetsBuffer) {\n return {\n y: offsetsBuffer.get(y, x, keypoint),\n x: offsetsBuffer.get(y, x, keypoint + kpt.NUM_KEYPOINTS),\n };\n}\n\nexport function getOffsetVectors(heatMapCoordsBuffer, offsetsBuffer) {\n const result: Array = [];\n for (let keypoint = 0; keypoint < kpt.NUM_KEYPOINTS; keypoint++) {\n const heatmapY = heatMapCoordsBuffer.get(keypoint, 0).valueOf();\n const heatmapX = heatMapCoordsBuffer.get(keypoint, 1).valueOf();\n const { x, y } = getOffsetPoint(heatmapY, heatmapX, keypoint, offsetsBuffer);\n result.push(y);\n result.push(x);\n }\n return tf.tensor2d(result, [kpt.NUM_KEYPOINTS, 2]);\n}\n\nexport function getOffsetPoints(heatMapCoordsBuffer, outputStride, offsetsBuffer) {\n return tf.tidy(() => heatMapCoordsBuffer.toTensor().mul(tf.scalar(outputStride, 'int32')).toFloat().add(getOffsetVectors(heatMapCoordsBuffer, offsetsBuffer)));\n}\n\nfunction mod(a, b) {\n return tf.tidy(() => {\n const floored = a.div(tf.scalar(b, 'int32'));\n return a.sub(floored.mul(tf.scalar(b, 'int32')));\n });\n}\n\nexport function argmax2d(inputs) {\n const [height, width, depth] = inputs.shape;\n return tf.tidy(() => {\n const reshaped = inputs.reshape([height * width, depth]);\n const coords = reshaped.argMax(0);\n const yCoords = coords.div(tf.scalar(width, 'int32')).expandDims(1);\n const xCoords = mod(coords, width).expandDims(1);\n return tf.concat([yCoords, xCoords], 1);\n });\n}\n", "import * as buildParts from './buildParts';\nimport * as decodePose from './decodePose';\nimport * as vectors from './vectors';\n\nconst kLocalMaximumRadius = 1;\nconst defaultOutputStride = 16;\n\nfunction withinNmsRadiusOfCorrespondingPoint(poses, squaredNmsRadius, { x, y }, keypointId) {\n return poses.some(({ keypoints }) => {\n const correspondingKeypoint = keypoints[keypointId].position;\n return vectors.squaredDistance(y, x, correspondingKeypoint.y, correspondingKeypoint.x) <= squaredNmsRadius;\n });\n}\n\nfunction getInstanceScore(existingPoses, squaredNmsRadius, instanceKeypoints) {\n const notOverlappedKeypointScores = instanceKeypoints.reduce((result, { position, score }, keypointId) => {\n if (!withinNmsRadiusOfCorrespondingPoint(existingPoses, squaredNmsRadius, position, keypointId)) result += score;\n return result;\n }, 0.0);\n return notOverlappedKeypointScores / instanceKeypoints.length;\n}\n\nexport function decodeMultiplePoses(scoresBuffer, offsetsBuffer, displacementsFwdBuffer, displacementsBwdBuffer, nmsRadius, maxDetections, scoreThreshold) {\n const poses: Array<{ keypoints: any, score: number }> = [];\n const queue = buildParts.buildPartWithScoreQueue(scoreThreshold, kLocalMaximumRadius, scoresBuffer);\n const squaredNmsRadius = nmsRadius ^ 2;\n // Generate at most maxDetections object instances per image in decreasing root part score order.\n while (poses.length < maxDetections && !queue.empty()) {\n // The top element in the queue is the next root candidate.\n const root = queue.dequeue();\n // Part-based non-maximum suppression: We reject a root candidate if it is within a disk of `nmsRadius` pixels from the corresponding part of a previously detected instance.\n const rootImageCoords = vectors.getImageCoords(root.part, defaultOutputStride, offsetsBuffer);\n if (withinNmsRadiusOfCorrespondingPoint(poses, squaredNmsRadius, rootImageCoords, root.part.id)) continue;\n // Else start a new detection instance at the position of the root.\n const keypoints = decodePose.decodePose(root, scoresBuffer, offsetsBuffer, defaultOutputStride, displacementsFwdBuffer, displacementsBwdBuffer);\n const score = getInstanceScore(poses, squaredNmsRadius, keypoints);\n if (score > scoreThreshold) poses.push({ keypoints, score });\n }\n return poses;\n}\n", "import * as kpt from './keypoints';\n\nexport function eitherPointDoesntMeetConfidence(a, b, minConfidence) {\n return (a < minConfidence || b < minConfidence);\n}\n\nexport function getAdjacentKeyPoints(keypoints, minConfidence) {\n return kpt.connectedPartIndices.reduce((result, [leftJoint, rightJoint]) => {\n if (eitherPointDoesntMeetConfidence(keypoints[leftJoint].score, keypoints[rightJoint].score, minConfidence)) {\n return result;\n }\n result.push([keypoints[leftJoint], keypoints[rightJoint]]);\n return result;\n }, []);\n}\n\nconst { NEGATIVE_INFINITY, POSITIVE_INFINITY } = Number;\nexport function getBoundingBox(keypoints) {\n return keypoints.reduce(({ maxX, maxY, minX, minY }, { position: { x, y } }) => ({\n maxX: Math.max(maxX, x),\n maxY: Math.max(maxY, y),\n minX: Math.min(minX, x),\n minY: Math.min(minY, y),\n }), {\n maxX: NEGATIVE_INFINITY,\n maxY: NEGATIVE_INFINITY,\n minX: POSITIVE_INFINITY,\n minY: POSITIVE_INFINITY,\n });\n}\n\nexport function getBoundingBoxPoints(keypoints) {\n const { minX, minY, maxX, maxY } = getBoundingBox(keypoints);\n return [{ x: minX, y: minY }, { x: maxX, y: minY }, { x: maxX, y: maxY }, { x: minX, y: maxY }];\n}\n\nexport async function toTensorBuffers3D(tensors) {\n return Promise.all(tensors.map((tensor) => tensor.buffer()));\n}\n\nexport function scalePose(pose, scaleY, scaleX) {\n return {\n score: pose.score,\n keypoints: pose.keypoints.map(({ score, part, position }) => ({\n score,\n part,\n position: { x: Math.trunc(position.x * scaleX), y: Math.trunc(position.y * scaleY) },\n })),\n };\n}\n\nexport function resizeTo(image, [targetH, targetW]) {\n const input = image.squeeze(0);\n const resized = input.resizeBilinear([targetH, targetW]);\n input.dispose();\n return resized;\n}\n\nexport function scaleAndFlipPoses(poses, [height, width], [inputResolutionHeight, inputResolutionWidth]) {\n const scaledPoses = poses.map((pose) => scalePose(pose, height / inputResolutionHeight, width / inputResolutionWidth));\n return scaledPoses;\n}\n", "// https://storage.googleapis.com/tfjs-models/demos/handpose/index.html\n\nimport { log } from '../helpers';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as handdetector from './handdetector';\nimport * as handpipeline from './handpipeline';\nimport * as anchors from './anchors';\n\nconst MESH_ANNOTATIONS = {\n thumb: [1, 2, 3, 4],\n indexFinger: [5, 6, 7, 8],\n middleFinger: [9, 10, 11, 12],\n ringFinger: [13, 14, 15, 16],\n pinky: [17, 18, 19, 20],\n palmBase: [0],\n};\n\nexport class HandPose {\n handPipeline: any;\n\n constructor(handPipeline) {\n this.handPipeline = handPipeline;\n }\n\n static getAnnotations() {\n return MESH_ANNOTATIONS;\n }\n\n async estimateHands(input, config) {\n const predictions = await this.handPipeline.estimateHands(input, config);\n if (!predictions) return [];\n const hands: Array<{ confidence: number, box: any, boxRaw: any, landmarks: any, annotations: any }> = [];\n for (const prediction of predictions) {\n const annotations = {};\n if (prediction.landmarks) {\n for (const key of Object.keys(MESH_ANNOTATIONS)) {\n annotations[key] = MESH_ANNOTATIONS[key].map((index) => prediction.landmarks[index]);\n }\n }\n const box = prediction.box ? [\n Math.max(0, prediction.box.topLeft[0]),\n Math.max(0, prediction.box.topLeft[1]),\n Math.min(input.shape[2], prediction.box.bottomRight[0]) - Math.max(0, prediction.box.topLeft[0]),\n Math.min(input.shape[1], prediction.box.bottomRight[1]) - Math.max(0, prediction.box.topLeft[1]),\n ] : [];\n const boxRaw = [\n (prediction.box.topLeft[0]) / input.shape[2],\n (prediction.box.topLeft[1]) / input.shape[1],\n (prediction.box.bottomRight[0] - prediction.box.topLeft[0]) / input.shape[2],\n (prediction.box.bottomRight[1] - prediction.box.topLeft[1]) / input.shape[1],\n ];\n hands.push({ confidence: prediction.confidence, box, boxRaw, landmarks: prediction.landmarks, annotations });\n }\n return hands;\n }\n}\n\nexport async function load(config) {\n const [handDetectorModel, handPoseModel] = await Promise.all([\n config.hand.enabled ? tf.loadGraphModel(config.hand.detector.modelPath, { fromTFHub: config.hand.detector.modelPath.includes('tfhub.dev') }) : null,\n config.hand.landmarks ? tf.loadGraphModel(config.hand.skeleton.modelPath, { fromTFHub: config.hand.skeleton.modelPath.includes('tfhub.dev') }) : null,\n ]);\n const handDetector = new handdetector.HandDetector(handDetectorModel, handDetectorModel?.inputs[0].shape[2], anchors.anchors);\n const handPipeline = new handpipeline.HandPipeline(handDetector, handPoseModel, handPoseModel?.inputs[0].shape[2]);\n const handPose = new HandPose(handPipeline);\n if (config.hand.enabled && config.debug) log(`load model: ${config.hand.detector.modelPath.match(/\\/(.*)\\./)[1]}`);\n if (config.hand.landmarks && config.debug) log(`load model: ${config.hand.skeleton.modelPath.match(/\\/(.*)\\./)[1]}`);\n return handPose;\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\nimport * as box from './box';\n\nexport class HandDetector {\n model: any;\n anchors: any;\n anchorsTensor: any;\n inputSize: number;\n inputSizeTensor: any;\n doubleInputSizeTensor: any;\n\n constructor(model, inputSize, anchorsAnnotated) {\n this.model = model;\n this.anchors = anchorsAnnotated.map((anchor) => [anchor.x_center, anchor.y_center]);\n this.anchorsTensor = tf.tensor2d(this.anchors);\n this.inputSize = inputSize;\n this.inputSizeTensor = tf.tensor1d([inputSize, inputSize]);\n this.doubleInputSizeTensor = tf.tensor1d([inputSize * 2, inputSize * 2]);\n }\n\n normalizeBoxes(boxes) {\n return tf.tidy(() => {\n const boxOffsets = tf.slice(boxes, [0, 0], [-1, 2]);\n const boxSizes = tf.slice(boxes, [0, 2], [-1, 2]);\n const boxCenterPoints = tf.add(tf.div(boxOffsets, this.inputSizeTensor), this.anchorsTensor);\n const halfBoxSizes = tf.div(boxSizes, this.doubleInputSizeTensor);\n const startPoints = tf.mul(tf.sub(boxCenterPoints, halfBoxSizes), this.inputSizeTensor);\n const endPoints = tf.mul(tf.add(boxCenterPoints, halfBoxSizes), this.inputSizeTensor);\n return tf.concat2d([startPoints, endPoints], 1);\n });\n }\n\n normalizeLandmarks(rawPalmLandmarks, index) {\n return tf.tidy(() => {\n const landmarks = tf.add(tf.div(rawPalmLandmarks.reshape([-1, 7, 2]), this.inputSizeTensor), this.anchors[index]);\n return tf.mul(landmarks, this.inputSizeTensor);\n });\n }\n\n async getBoxes(input, config) {\n const batched = this.model.predict(input);\n const predictions = batched.squeeze();\n batched.dispose();\n const scoresT = tf.tidy(() => tf.sigmoid(tf.slice(predictions, [0, 0], [-1, 1])).squeeze());\n const scores = scoresT.dataSync();\n const rawBoxes = tf.slice(predictions, [0, 1], [-1, 4]);\n const boxes = this.normalizeBoxes(rawBoxes);\n rawBoxes.dispose();\n const filteredT = await tf.image.nonMaxSuppressionAsync(boxes, scores, config.hand.maxHands, config.hand.iouThreshold, config.hand.scoreThreshold);\n const filtered = filteredT.arraySync();\n\n scoresT.dispose();\n filteredT.dispose();\n const hands: Array<{ box: any, palmLandmarks: any, confidence: number }> = [];\n for (const index of filtered) {\n if (scores[index] >= config.hand.minConfidence) {\n const matchingBox = tf.slice(boxes, [index, 0], [1, -1]);\n const rawPalmLandmarks = tf.slice(predictions, [index, 5], [1, 14]);\n const palmLandmarks = tf.tidy(() => this.normalizeLandmarks(rawPalmLandmarks, index).reshape([-1, 2]));\n rawPalmLandmarks.dispose();\n hands.push({ box: matchingBox, palmLandmarks, confidence: scores[index] });\n }\n }\n predictions.dispose();\n boxes.dispose();\n return hands;\n }\n\n async estimateHandBounds(input, config) {\n const inputHeight = input.shape[1];\n const inputWidth = input.shape[2];\n const image = tf.tidy(() => input.resizeBilinear([this.inputSize, this.inputSize]).div(127.5).sub(1));\n const predictions = await this.getBoxes(image, config);\n image.dispose();\n const hands: Array<{}> = [];\n if (!predictions || predictions.length === 0) return hands;\n for (const prediction of predictions) {\n const boxes = prediction.box.dataSync();\n const startPoint = boxes.slice(0, 2);\n const endPoint = boxes.slice(2, 4);\n const palmLandmarks = prediction.palmLandmarks.arraySync();\n prediction.box.dispose();\n prediction.palmLandmarks.dispose();\n hands.push(box.scaleBoxCoordinates({ startPoint, endPoint, palmLandmarks, confidence: prediction.confidence }, [inputWidth / this.inputSize, inputHeight / this.inputSize]));\n }\n return hands;\n }\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nexport function getBoxSize(box) {\n return [\n Math.abs(box.endPoint[0] - box.startPoint[0]),\n Math.abs(box.endPoint[1] - box.startPoint[1]),\n ];\n}\n\nexport function getBoxCenter(box) {\n return [\n box.startPoint[0] + (box.endPoint[0] - box.startPoint[0]) / 2,\n box.startPoint[1] + (box.endPoint[1] - box.startPoint[1]) / 2,\n ];\n}\n\nexport function cutBoxFromImageAndResize(box, image, cropSize) {\n const h = image.shape[1];\n const w = image.shape[2];\n const boxes = [[\n box.startPoint[1] / h,\n box.startPoint[0] / w,\n box.endPoint[1] / h,\n box.endPoint[0] / w,\n ]];\n return tf.image.cropAndResize(image, boxes, [0], cropSize);\n}\n\nexport function scaleBoxCoordinates(box, factor) {\n const startPoint = [box.startPoint[0] * factor[0], box.startPoint[1] * factor[1]];\n const endPoint = [box.endPoint[0] * factor[0], box.endPoint[1] * factor[1]];\n const palmLandmarks = box.palmLandmarks.map((coord) => {\n const scaledCoord = [coord[0] * factor[0], coord[1] * factor[1]];\n return scaledCoord;\n });\n return { startPoint, endPoint, palmLandmarks, confidence: box.confidence };\n}\n\nexport function enlargeBox(box, factor = 1.5) {\n const center = getBoxCenter(box);\n const size = getBoxSize(box);\n const newHalfSize = [factor * size[0] / 2, factor * size[1] / 2];\n const startPoint = [center[0] - newHalfSize[0], center[1] - newHalfSize[1]];\n const endPoint = [center[0] + newHalfSize[0], center[1] + newHalfSize[1]];\n return { startPoint, endPoint, palmLandmarks: box.palmLandmarks };\n}\n\nexport function squarifyBox(box) {\n const centers = getBoxCenter(box);\n const size = getBoxSize(box);\n const maxEdge = Math.max(...size);\n const halfSize = maxEdge / 2;\n const startPoint = [centers[0] - halfSize, centers[1] - halfSize];\n const endPoint = [centers[0] + halfSize, centers[1] + halfSize];\n return { startPoint, endPoint, palmLandmarks: box.palmLandmarks };\n}\n\nexport function shiftBox(box, shiftFactor) {\n const boxSize = [\n box.endPoint[0] - box.startPoint[0],\n box.endPoint[1] - box.startPoint[1],\n ];\n const shiftVector = [boxSize[0] * shiftFactor[0], boxSize[1] * shiftFactor[1]];\n const startPoint = [box.startPoint[0] + shiftVector[0], box.startPoint[1] + shiftVector[1]];\n const endPoint = [box.endPoint[0] + shiftVector[0], box.endPoint[1] + shiftVector[1]];\n return { startPoint, endPoint, palmLandmarks: box.palmLandmarks };\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\nimport * as box from './box';\nimport * as util from './util';\n\n// const PALM_BOX_SHIFT_VECTOR = [0, -0.4];\nconst PALM_BOX_ENLARGE_FACTOR = 5; // default 3\n// const HAND_BOX_SHIFT_VECTOR = [0, -0.1]; // move detected hand box by x,y to ease landmark detection\nconst HAND_BOX_ENLARGE_FACTOR = 1.65; // default 1.65\nconst PALM_LANDMARK_IDS = [0, 5, 9, 13, 17, 1, 2];\nconst PALM_LANDMARKS_INDEX_OF_PALM_BASE = 0;\nconst PALM_LANDMARKS_INDEX_OF_MIDDLE_FINGER_BASE = 2;\n\nexport class HandPipeline {\n handDetector: any;\n landmarkDetector: any;\n inputSize: number;\n storedBoxes: any;\n skipped: number;\n detectedHands: number;\n\n constructor(handDetector, landmarkDetector, inputSize) {\n this.handDetector = handDetector;\n this.landmarkDetector = landmarkDetector;\n this.inputSize = inputSize;\n this.storedBoxes = [];\n this.skipped = 0;\n this.detectedHands = 0;\n }\n\n getBoxForPalmLandmarks(palmLandmarks, rotationMatrix) {\n const rotatedPalmLandmarks = palmLandmarks.map((coord) => util.rotatePoint([...coord, 1], rotationMatrix));\n const boxAroundPalm = this.calculateLandmarksBoundingBox(rotatedPalmLandmarks);\n // return box.enlargeBox(box.squarifyBox(box.shiftBox(boxAroundPalm, PALM_BOX_SHIFT_VECTOR)), PALM_BOX_ENLARGE_FACTOR);\n return box.enlargeBox(box.squarifyBox(boxAroundPalm), PALM_BOX_ENLARGE_FACTOR);\n }\n\n getBoxForHandLandmarks(landmarks) {\n const boundingBox = this.calculateLandmarksBoundingBox(landmarks);\n // const boxAroundHand = box.enlargeBox(box.squarifyBox(box.shiftBox(boundingBox, HAND_BOX_SHIFT_VECTOR)), HAND_BOX_ENLARGE_FACTOR);\n const boxAroundHand = box.enlargeBox(box.squarifyBox(boundingBox), HAND_BOX_ENLARGE_FACTOR);\n boxAroundHand.palmLandmarks = [];\n for (let i = 0; i < PALM_LANDMARK_IDS.length; i++) {\n boxAroundHand.palmLandmarks.push(landmarks[PALM_LANDMARK_IDS[i]].slice(0, 2));\n }\n return boxAroundHand;\n }\n\n transformRawCoords(rawCoords, box2, angle, rotationMatrix) {\n const boxSize = box.getBoxSize(box2);\n const scaleFactor = [boxSize[0] / this.inputSize, boxSize[1] / this.inputSize, (boxSize[0] + boxSize[1]) / this.inputSize / 2];\n const coordsScaled = rawCoords.map((coord) => [\n scaleFactor[0] * (coord[0] - this.inputSize / 2),\n scaleFactor[1] * (coord[1] - this.inputSize / 2),\n scaleFactor[2] * coord[2],\n ]);\n const coordsRotationMatrix = util.buildRotationMatrix(angle, [0, 0]);\n const coordsRotated = coordsScaled.map((coord) => {\n const rotated = util.rotatePoint(coord, coordsRotationMatrix);\n return [...rotated, coord[2]];\n });\n const inverseRotationMatrix = util.invertTransformMatrix(rotationMatrix);\n const boxCenter = [...box.getBoxCenter(box2), 1];\n const originalBoxCenter = [\n util.dot(boxCenter, inverseRotationMatrix[0]),\n util.dot(boxCenter, inverseRotationMatrix[1]),\n ];\n return coordsRotated.map((coord) => [\n coord[0] + originalBoxCenter[0],\n coord[1] + originalBoxCenter[1],\n coord[2],\n ]);\n }\n\n async estimateHands(image, config) {\n let useFreshBox = false;\n\n // run new detector every skipFrames unless we only want box to start with\n let boxes;\n if ((this.skipped === 0) || (this.skipped > config.hand.skipFrames) || !config.hand.landmarks || !config.videoOptimized) {\n boxes = await this.handDetector.estimateHandBounds(image, config);\n this.skipped = 0;\n }\n if (config.videoOptimized) this.skipped++;\n\n // if detector result count doesn't match current working set, use it to reset current working set\n if (boxes && (boxes.length > 0) && ((boxes.length !== this.detectedHands) && (this.detectedHands !== config.hand.maxHands) || !config.hand.landmarks)) {\n this.detectedHands = 0;\n this.storedBoxes = [...boxes];\n // for (const possible of boxes) this.storedBoxes.push(possible);\n if (this.storedBoxes.length > 0) useFreshBox = true;\n }\n const hands: Array<{}> = [];\n\n if (config.hand.skipInitial && this.detectedHands === 0) this.skipped = 0;\n\n // go through working set of boxes\n for (let i = 0; i < this.storedBoxes.length; i++) {\n const currentBox = this.storedBoxes[i];\n if (!currentBox) continue;\n if (config.hand.landmarks) {\n const angle = config.hand.rotation ? util.computeRotation(currentBox.palmLandmarks[PALM_LANDMARKS_INDEX_OF_PALM_BASE], currentBox.palmLandmarks[PALM_LANDMARKS_INDEX_OF_MIDDLE_FINGER_BASE]) : 0;\n const palmCenter = box.getBoxCenter(currentBox);\n const palmCenterNormalized = [palmCenter[0] / image.shape[2], palmCenter[1] / image.shape[1]];\n const rotatedImage = config.hand.rotation ? tf.image.rotateWithOffset(image, angle, 0, palmCenterNormalized) : image.clone();\n const rotationMatrix = util.buildRotationMatrix(-angle, palmCenter);\n const newBox = useFreshBox ? this.getBoxForPalmLandmarks(currentBox.palmLandmarks, rotationMatrix) : currentBox;\n const croppedInput = box.cutBoxFromImageAndResize(newBox, rotatedImage, [this.inputSize, this.inputSize]);\n const handImage = croppedInput.div(255);\n croppedInput.dispose();\n rotatedImage.dispose();\n const [confidenceT, keypoints] = await this.landmarkDetector.predict(handImage);\n handImage.dispose();\n const confidence = confidenceT.dataSync()[0];\n confidenceT.dispose();\n if (confidence >= config.hand.minConfidence) {\n const keypointsReshaped = tf.reshape(keypoints, [-1, 3]);\n const rawCoords = keypointsReshaped.arraySync();\n keypoints.dispose();\n keypointsReshaped.dispose();\n const coords = this.transformRawCoords(rawCoords, newBox, angle, rotationMatrix);\n const nextBoundingBox = this.getBoxForHandLandmarks(coords);\n this.storedBoxes[i] = nextBoundingBox;\n const result = {\n landmarks: coords,\n confidence,\n box: { topLeft: nextBoundingBox.startPoint, bottomRight: nextBoundingBox.endPoint },\n };\n hands.push(result);\n } else {\n this.storedBoxes[i] = null;\n }\n keypoints.dispose();\n } else {\n // const enlarged = box.enlargeBox(box.squarifyBox(box.shiftBox(currentBox, HAND_BOX_SHIFT_VECTOR)), HAND_BOX_ENLARGE_FACTOR);\n const enlarged = box.enlargeBox(box.squarifyBox(currentBox), HAND_BOX_ENLARGE_FACTOR);\n const result = {\n confidence: currentBox.confidence,\n box: { topLeft: enlarged.startPoint, bottomRight: enlarged.endPoint },\n };\n hands.push(result);\n }\n }\n this.storedBoxes = this.storedBoxes.filter((a) => a !== null);\n this.detectedHands = hands.length;\n return hands;\n }\n\n // eslint-disable-next-line class-methods-use-this\n calculateLandmarksBoundingBox(landmarks) {\n const xs = landmarks.map((d) => d[0]);\n const ys = landmarks.map((d) => d[1]);\n const startPoint = [Math.min(...xs), Math.min(...ys)];\n const endPoint = [Math.max(...xs), Math.max(...ys)];\n return { startPoint, endPoint };\n }\n}\n", "export function normalizeRadians(angle) {\n return angle - 2 * Math.PI * Math.floor((angle + Math.PI) / (2 * Math.PI));\n}\n\nexport function computeRotation(point1, point2) {\n const radians = Math.PI / 2 - Math.atan2(-(point2[1] - point1[1]), point2[0] - point1[0]);\n return normalizeRadians(radians);\n}\n\nexport const buildTranslationMatrix = (x, y) => [[1, 0, x], [0, 1, y], [0, 0, 1]];\n\nexport function dot(v1, v2) {\n let product = 0;\n for (let i = 0; i < v1.length; i++) {\n product += v1[i] * v2[i];\n }\n return product;\n}\n\nexport function getColumnFrom2DArr(arr, columnIndex) {\n const column: Array = [];\n for (let i = 0; i < arr.length; i++) {\n column.push(arr[i][columnIndex]);\n }\n return column;\n}\n\nexport function multiplyTransformMatrices(mat1, mat2) {\n const product: Array = [];\n const size = mat1.length;\n for (let row = 0; row < size; row++) {\n product.push([]);\n for (let col = 0; col < size; col++) {\n product[row].push(dot(mat1[row], getColumnFrom2DArr(mat2, col)));\n }\n }\n return product;\n}\n\nexport function buildRotationMatrix(rotation, center) {\n const cosA = Math.cos(rotation);\n const sinA = Math.sin(rotation);\n const rotationMatrix = [[cosA, -sinA, 0], [sinA, cosA, 0], [0, 0, 1]];\n const translationMatrix = buildTranslationMatrix(center[0], center[1]);\n const translationTimesRotation = multiplyTransformMatrices(translationMatrix, rotationMatrix);\n const negativeTranslationMatrix = buildTranslationMatrix(-center[0], -center[1]);\n return multiplyTransformMatrices(translationTimesRotation, negativeTranslationMatrix);\n}\n\nexport function invertTransformMatrix(matrix) {\n const rotationComponent = [[matrix[0][0], matrix[1][0]], [matrix[0][1], matrix[1][1]]];\n const translationComponent = [matrix[0][2], matrix[1][2]];\n const invertedTranslation = [\n -dot(rotationComponent[0], translationComponent),\n -dot(rotationComponent[1], translationComponent),\n ];\n return [\n rotationComponent[0].concat(invertedTranslation[0]),\n rotationComponent[1].concat(invertedTranslation[1]),\n [0, 0, 1],\n ];\n}\n\nexport function rotatePoint(homogeneousCoordinate, rotationMatrix) {\n return [\n dot(homogeneousCoordinate, rotationMatrix[0]),\n dot(homogeneousCoordinate, rotationMatrix[1]),\n ];\n}\n", "export const anchors = [\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n];\n", "import { log } from '../helpers';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile';\nimport * as annotations from './annotations';\n\nlet model;\n\nexport async function load(config) {\n if (!model) {\n model = await tf.loadGraphModel(config.body.modelPath);\n model.width = parseInt(model.signature.inputs['input_1:0'].tensorShape.dim[2].size);\n model.height = parseInt(model.signature.inputs['input_1:0'].tensorShape.dim[1].size);\n if (config.debug) log(`load model: ${config.body.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return model;\n}\n\nexport async function predict(image, config) {\n if (!model) return null;\n if (!config.body.enabled) return null;\n const imgSize = { width: image.shape[2], height: image.shape[1] };\n const resize = tf.image.resizeBilinear(image, [model.width, model.height], false);\n const normalize = tf.div(resize, [255.0]);\n resize.dispose();\n let points;\n if (!config.profile) { // run through profiler or just execute\n const resT = await model.predict(normalize);\n // const segmentationT = resT.find((t) => (t.size === 16384))?.squeeze();\n // const segmentation = segmentationT.arraySync(); // array 128 x 128\n // segmentationT.dispose();\n points = resT.find((t) => (t.size === 195 || t.size === 155)).dataSync(); // order of output tensors may change between models, full has 195 and upper has 155 items\n resT.forEach((t) => t.dispose());\n } else {\n const profileData = await tf.profile(() => model.predict(normalize));\n points = profileData.result.find((t) => (t.size === 195 || t.size === 155)).dataSync();\n profileData.result.forEach((t) => t.dispose());\n profile.run('blazepose', profileData);\n }\n normalize.dispose();\n const keypoints: Array<{ id, part, position: { x, y, z }, score, presence }> = [];\n const labels = points.length === 195 ? annotations.full : annotations.upper; // full model has 39 keypoints, upper has 31 keypoints\n const depth = 5; // each points has x,y,z,visibility,presence\n for (let i = 0; i < points.length / depth; i++) {\n keypoints.push({\n id: i,\n part: labels[i],\n position: {\n x: Math.trunc(imgSize.width * points[depth * i + 0] / 255), // return normalized x value istead of 0..255\n y: Math.trunc(imgSize.height * points[depth * i + 1] / 255), // return normalized y value istead of 0..255\n z: Math.trunc(points[depth * i + 2]) + 0, // fix negative zero\n },\n score: (100 - Math.trunc(100 / (1 + Math.exp(points[depth * i + 3])))) / 100, // reverse sigmoid value\n presence: (100 - Math.trunc(100 / (1 + Math.exp(points[depth * i + 4])))) / 100, // reverse sigmoid value\n });\n }\n return [{ keypoints }];\n}\n", "export const full = [\n 'nose',\n 'leftEyeInside',\n 'leftEye',\n 'leftEyeOutside',\n 'rightEyeInside',\n 'rightEye',\n 'rightEyeOutside',\n 'leftEar',\n 'rightEar',\n 'leftMouth',\n 'rightMouth',\n 'leftShoulder',\n 'rightShoulder',\n 'leftElbow',\n 'rightElbow',\n 'leftWrist',\n 'rightWrist',\n 'leftPalm',\n 'rightPalm',\n 'leftIndex',\n 'rightIndex',\n 'leftPinky',\n 'rightPinky',\n 'leftHip',\n 'rightHip',\n 'leftKnee',\n 'rightKnee',\n 'leftAnkle',\n 'rightAnkle',\n 'leftHeel',\n 'rightHeel',\n 'leftFoot',\n 'rightFoot',\n 'midHip',\n 'forehead',\n 'leftThumb',\n 'leftHand',\n 'rightThumb',\n 'rightHand',\n];\n\nexport const upper = [\n 'nose',\n 'leftEyeInside',\n 'leftEye',\n 'leftEyeOutside',\n 'rightEyeInside',\n 'rightEye',\n 'rightEyeOutside',\n 'leftEar',\n 'rightEar',\n 'leftMouth',\n 'rightMouth',\n 'leftShoulder',\n 'rightShoulder',\n 'leftElbow',\n 'rightElbow',\n 'left:15',\n 'right:16',\n 'left:17',\n 'right:18',\n 'left:19',\n 'right:20',\n 'left:21',\n 'right:22',\n 'leftChest',\n 'rightChest',\n 'neck',\n 'forehead',\n 'left:27',\n 'right:28',\n 'left:29',\n 'right:30',\n];\n", "import { log } from '../helpers';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile';\nimport { labels } from './labels';\n\nlet model;\nlet last: Array<{}> = [];\nlet skipped = Number.MAX_SAFE_INTEGER;\n\nconst scaleBox = 2.5; // increase box size\nconst activateScore = false;\n\nexport async function load(config) {\n if (!model) {\n model = await tf.loadGraphModel(config.object.modelPath);\n // @ts-ignore\n model.inputSize = parseInt(Object.values(model.modelSignature['inputs'])[0].tensorShape.dim[2].size);\n if (config.debug) log(`load model: ${config.object.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return model;\n}\n\nasync function process(res, inputSize, outputShape, config) {\n let id = 0;\n let results: Array<{ score: number, strideSize: number, class: number, label: string, center: number[], centerRaw: number[], box: number[], boxRaw: number[] }> = [];\n for (const strideSize of [1, 2, 4]) { // try each stride size as it detects large/medium/small objects\n // find scores, boxes, classes\n tf.tidy(() => { // wrap in tidy to automatically deallocate temp tensors\n const baseSize = strideSize * 13; // 13x13=169, 26x26=676, 52x52=2704\n // find boxes and scores output depending on stride\n const scoresT = res.find((a) => (a.shape[1] === (baseSize ** 2) && a.shape[2] === 80))?.squeeze();\n const featuresT = res.find((a) => (a.shape[1] === (baseSize ** 2) && a.shape[2] < 80))?.squeeze();\n const boxesMax = featuresT.reshape([-1, 4, featuresT.shape[1] / 4]); // reshape [output] to [4, output / 4] where number is number of different features inside each stride\n const boxIdx = boxesMax.argMax(2).arraySync(); // what we need is indexes of features with highest scores, not values itself\n const scores = activateScore ? scoresT.exp(1).arraySync() : scoresT.arraySync(); // optionally use exponential scores or just as-is\n for (let i = 0; i < scoresT.shape[0]; i++) { // total strides (x * y matrix)\n for (let j = 0; j < scoresT.shape[1]; j++) { // one score for each class\n const score = scores[i][j] - (activateScore ? 1 : 0); // get score for current position\n if (score > config.object.minConfidence) {\n const cx = (0.5 + Math.trunc(i % baseSize)) / baseSize; // center.x normalized to range 0..1\n const cy = (0.5 + Math.trunc(i / baseSize)) / baseSize; // center.y normalized to range 0..1\n const boxOffset = boxIdx[i].map((a) => a * (baseSize / strideSize / inputSize)); // just grab indexes of features with highest scores\n let boxRaw = [ // results normalized to range 0..1\n cx - (scaleBox / strideSize * boxOffset[0]),\n cy - (scaleBox / strideSize * boxOffset[1]),\n cx + (scaleBox / strideSize * boxOffset[2]),\n cy + (scaleBox / strideSize * boxOffset[3]),\n ];\n boxRaw = boxRaw.map((a) => Math.max(0, Math.min(a, 1))); // fix out-of-bounds coords\n const box = [ // results normalized to input image pixels\n boxRaw[0] * outputShape[0],\n boxRaw[1] * outputShape[1],\n boxRaw[2] * outputShape[0],\n boxRaw[3] * outputShape[1],\n ];\n const result = {\n id: id++,\n strideSize,\n score,\n class: j + 1,\n label: labels[j].label,\n center: [Math.trunc(outputShape[0] * cx), Math.trunc(outputShape[1] * cy)],\n centerRaw: [cx, cy],\n box: box.map((a) => Math.trunc(a)),\n boxRaw,\n };\n results.push(result);\n }\n }\n }\n });\n }\n // deallocate tensors\n res.forEach((t) => tf.dispose(t));\n\n // normally nms is run on raw results, but since boxes need to be calculated this way we skip calulcation of\n // unnecessary boxes and run nms only on good candidates (basically it just does IOU analysis as scores are already filtered)\n const nmsBoxes = results.map((a) => a.boxRaw);\n const nmsScores = results.map((a) => a.score);\n const nms = await tf.image.nonMaxSuppressionAsync(nmsBoxes, nmsScores, config.object.maxResults, config.object.iouThreshold, config.object.minConfidence);\n const nmsIdx = nms.dataSync();\n tf.dispose(nms);\n\n // filter & sort results\n results = results\n .filter((a, idx) => nmsIdx.includes(idx))\n // @ts-ignore\n .sort((a, b) => (b.score - a.score));\n\n return results;\n}\n\nexport async function predict(image, config) {\n if (!model) return null;\n // console.log(skipped, config.object.skipFrames, config.videoOptimized, ((skipped < config.object.skipFrames) && config.videoOptimized && (last.length > 0)));\n if ((skipped < config.object.skipFrames) && config.videoOptimized && (last.length > 0)) {\n skipped++;\n return last;\n }\n if (config.videoOptimized) skipped = 0;\n else skipped = Number.MAX_SAFE_INTEGER;\n return new Promise(async (resolve) => {\n const outputSize = [image.shape[2], image.shape[1]];\n const resize = tf.image.resizeBilinear(image, [model.inputSize, model.inputSize], false);\n const norm = resize.div(255);\n resize.dispose();\n const transpose = norm.transpose([0, 3, 1, 2]);\n norm.dispose();\n\n let objectT;\n if (!config.profile) {\n if (config.object.enabled) objectT = await model.predict(transpose);\n } else {\n const profileObject = config.object.enabled ? await tf.profile(() => model.predict(transpose)) : {};\n objectT = profileObject.result.clone();\n profileObject.result.dispose();\n profile.run('object', profileObject);\n }\n transpose.dispose();\n\n const obj = await process(objectT, model.inputSize, outputSize, config);\n last = obj;\n resolve(obj);\n });\n}\n", "export const labels = [\n { class: 1, label: 'person' },\n { class: 2, label: 'bicycle' },\n { class: 3, label: 'car' },\n { class: 4, label: 'motorcycle' },\n { class: 5, label: 'airplane' },\n { class: 6, label: 'bus' },\n { class: 7, label: 'train' },\n { class: 8, label: 'truck' },\n { class: 9, label: 'boat' },\n { class: 10, label: 'traffic light' },\n { class: 11, label: 'fire hydrant' },\n { class: 12, label: 'stop sign' },\n { class: 13, label: 'parking meter' },\n { class: 14, label: 'bench' },\n { class: 15, label: 'bird' },\n { class: 16, label: 'cat' },\n { class: 17, label: 'dog' },\n { class: 18, label: 'horse' },\n { class: 19, label: 'sheep' },\n { class: 20, label: 'cow' },\n { class: 21, label: 'elephant' },\n { class: 22, label: 'bear' },\n { class: 23, label: 'zebra' },\n { class: 24, label: 'giraffe' },\n { class: 25, label: 'backpack' },\n { class: 26, label: 'umbrella' },\n { class: 27, label: 'handbag' },\n { class: 28, label: 'tie' },\n { class: 29, label: 'suitcase' },\n { class: 30, label: 'frisbee' },\n { class: 31, label: 'skis' },\n { class: 32, label: 'snowboard' },\n { class: 33, label: 'sports ball' },\n { class: 34, label: 'kite' },\n { class: 35, label: 'baseball bat' },\n { class: 36, label: 'baseball glove' },\n { class: 37, label: 'skateboard' },\n { class: 38, label: 'surfboard' },\n { class: 39, label: 'tennis racket' },\n { class: 40, label: 'bottle' },\n { class: 41, label: 'wine glass' },\n { class: 42, label: 'cup' },\n { class: 43, label: 'fork' },\n { class: 44, label: 'knife' },\n { class: 45, label: 'spoon' },\n { class: 46, label: 'bowl' },\n { class: 47, label: 'banana' },\n { class: 48, label: 'apple' },\n { class: 49, label: 'sandwich' },\n { class: 50, label: 'orange' },\n { class: 51, label: 'broccoli' },\n { class: 52, label: 'carrot' },\n { class: 53, label: 'hot dog' },\n { class: 54, label: 'pizza' },\n { class: 55, label: 'donut' },\n { class: 56, label: 'cake' },\n { class: 57, label: 'chair' },\n { class: 58, label: 'couch' },\n { class: 59, label: 'potted plant' },\n { class: 60, label: 'bed' },\n { class: 61, label: 'dining table' },\n { class: 62, label: 'toilet' },\n { class: 63, label: 'tv' },\n { class: 64, label: 'laptop' },\n { class: 65, label: 'mouse' },\n { class: 66, label: 'remote' },\n { class: 67, label: 'keyboard' },\n { class: 68, label: 'cell phone' },\n { class: 69, label: 'microwave' },\n { class: 70, label: 'oven' },\n { class: 71, label: 'toaster' },\n { class: 72, label: 'sink' },\n { class: 73, label: 'refrigerator' },\n { class: 74, label: 'book' },\n { class: 75, label: 'clock' },\n { class: 76, label: 'vase' },\n { class: 77, label: 'scissors' },\n { class: 78, label: 'teddy bear' },\n { class: 79, label: 'hair drier' },\n { class: 80, label: 'toothbrush' },\n];\n", "export const body = (res) => {\n if (!res) return [];\n const gestures: Array<{ body: number, gesture: string }> = [];\n for (let i = 0; i < res.length; i++) {\n // raising hands\n const leftWrist = res[i].keypoints.find((a) => (a.part === 'leftWrist'));\n const rightWrist = res[i].keypoints.find((a) => (a.part === 'rightWrist'));\n const nose = res[i].keypoints.find((a) => (a.part === 'nose'));\n if (nose && leftWrist && rightWrist && (leftWrist.position.y < nose.position.y) && (rightWrist.position.y < nose.position.y)) gestures.push({ body: i, gesture: 'i give up' });\n else if (nose && leftWrist && (leftWrist.position.y < nose.position.y)) gestures.push({ body: i, gesture: 'raise left hand' });\n else if (nose && rightWrist && (rightWrist.position.y < nose.position.y)) gestures.push({ body: i, gesture: 'raise right hand' });\n\n // leaning\n const leftShoulder = res[i].keypoints.find((a) => (a.part === 'leftShoulder'));\n const rightShoulder = res[i].keypoints.find((a) => (a.part === 'rightShoulder'));\n if (leftShoulder && rightShoulder) gestures.push({ body: i, gesture: `leaning ${(leftShoulder.position.y > rightShoulder.position.y) ? 'left' : 'right'}` });\n }\n return gestures;\n};\n\nexport const face = (res) => {\n if (!res) return [];\n const gestures: Array<{ face: number, gesture: string }> = [];\n for (let i = 0; i < res.length; i++) {\n if (res[i].mesh && res[i].mesh.length > 0) {\n const eyeFacing = res[i].mesh[33][2] - res[i].mesh[263][2];\n if (Math.abs(eyeFacing) < 10) gestures.push({ face: i, gesture: 'facing camera' });\n else gestures.push({ face: i, gesture: `facing ${eyeFacing < 0 ? 'right' : 'left'}` });\n const openLeft = Math.abs(res[i].mesh[374][1] - res[i].mesh[386][1]) / Math.abs(res[i].mesh[443][1] - res[i].mesh[450][1]); // center of eye inner lid y coord div center of wider eye border y coord\n if (openLeft < 0.2) gestures.push({ face: i, gesture: 'blink left eye' });\n const openRight = Math.abs(res[i].mesh[145][1] - res[i].mesh[159][1]) / Math.abs(res[i].mesh[223][1] - res[i].mesh[230][1]); // center of eye inner lid y coord div center of wider eye border y coord\n if (openRight < 0.2) gestures.push({ face: i, gesture: 'blink right eye' });\n const mouthOpen = Math.min(100, 500 * Math.abs(res[i].mesh[13][1] - res[i].mesh[14][1]) / Math.abs(res[i].mesh[10][1] - res[i].mesh[152][1]));\n if (mouthOpen > 10) gestures.push({ face: i, gesture: `mouth ${Math.trunc(mouthOpen)}% open` });\n const chinDepth = res[i].mesh[152][2];\n if (Math.abs(chinDepth) > 10) gestures.push({ face: i, gesture: `head ${chinDepth < 0 ? 'up' : 'down'}` });\n }\n }\n return gestures;\n};\n\nexport const iris = (res) => {\n if (!res) return [];\n const gestures: Array<{ iris: number, gesture: string }> = [];\n for (let i = 0; i < res.length; i++) {\n if (!res[i].annotations || !res[i].annotations.leftEyeIris || !res[i].annotations.rightEyeIris) continue;\n const sizeXLeft = res[i].annotations.leftEyeIris[3][0] - res[i].annotations.leftEyeIris[1][0];\n const sizeYLeft = res[i].annotations.leftEyeIris[4][1] - res[i].annotations.leftEyeIris[2][1];\n const areaLeft = Math.abs(sizeXLeft * sizeYLeft);\n\n const sizeXRight = res[i].annotations.rightEyeIris[3][0] - res[i].annotations.rightEyeIris[1][0];\n const sizeYRight = res[i].annotations.rightEyeIris[4][1] - res[i].annotations.rightEyeIris[2][1];\n const areaRight = Math.abs(sizeXRight * sizeYRight);\n\n const difference = Math.abs(areaLeft - areaRight) / Math.max(areaLeft, areaRight);\n if (difference < 0.25) gestures.push({ iris: i, gesture: 'looking at camera' });\n }\n return gestures;\n};\n\nexport const hand = (res) => {\n if (!res) return [];\n const gestures: Array<{ hand: number, gesture: string }> = [];\n for (let i = 0; i < res.length; i++) {\n const fingers: Array<{ name: string, position: number }> = [];\n for (const [finger, pos] of Object.entries(res[i]['annotations'])) {\n // @ts-ignore\n if (finger !== 'palmBase') fingers.push({ name: finger.toLowerCase(), position: pos[0] }); // get tip of each finger\n }\n if (fingers && fingers.length > 0) {\n const closest = fingers.reduce((best, a) => (best.position[2] < a.position[2] ? best : a));\n const highest = fingers.reduce((best, a) => (best.position[1] < a.position[1] ? best : a));\n gestures.push({ hand: i, gesture: `${closest.name} forward ${highest.name} up` });\n }\n }\n return gestures;\n};\n", "// @ts-nocheck\n\nimport { log } from '../helpers';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as fxImage from './imagefx';\n\nconst maxSize = 2048;\n// internal temp canvases\nlet inCanvas = null;\nlet outCanvas = null;\n// instance of fximage\nlet fx = null;\n\n// process input image and return tensor\n// input can be tensor, imagedata, htmlimageelement, htmlvideoelement\n// input is resized and run through imagefx filter\nexport function process(input, config): { tensor: tf.Tensor, canvas: OffscreenCanvas | HTMLCanvasElement } {\n let tensor;\n if (input instanceof tf.Tensor) {\n tensor = tf.clone(input);\n } else {\n const originalWidth = input.naturalWidth || input.videoWidth || input.width || (input.shape && (input.shape[1] > 0));\n const originalHeight = input.naturalHeight || input.videoHeight || input.height || (input.shape && (input.shape[2] > 0));\n let targetWidth = originalWidth;\n let targetHeight = originalHeight;\n if (targetWidth > maxSize) {\n targetWidth = maxSize;\n targetHeight = targetWidth * originalHeight / originalWidth;\n }\n if (targetHeight > maxSize) {\n targetHeight = maxSize;\n targetWidth = targetHeight * originalWidth / originalHeight;\n }\n if (config.filter.width > 0) targetWidth = config.filter.width;\n else if (config.filter.height > 0) targetWidth = originalWidth * (config.filter.height / originalHeight);\n if (config.filter.height > 0) targetHeight = config.filter.height;\n else if (config.filter.width > 0) targetHeight = originalHeight * (config.filter.width / originalWidth);\n if (!targetWidth || !targetHeight) {\n log('Human: invalid input', input);\n return { tensor: null, canvas: null };\n }\n if (!inCanvas || (inCanvas.width !== targetWidth) || (inCanvas.height !== targetHeight)) {\n inCanvas = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(targetWidth, targetHeight) : document.createElement('canvas');\n if (inCanvas.width !== targetWidth) inCanvas.width = targetWidth;\n if (inCanvas.height !== targetHeight) inCanvas.height = targetHeight;\n }\n const ctx = inCanvas.getContext('2d');\n if (input instanceof ImageData) ctx.putImageData(input, 0, 0);\n else ctx.drawImage(input, 0, 0, originalWidth, originalHeight, 0, 0, inCanvas.width, inCanvas.height);\n if (config.filter.enabled) {\n if (!fx || !outCanvas || (inCanvas.width !== outCanvas.width) || (inCanvas.height !== outCanvas.height)) {\n outCanvas = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(inCanvas.width, inCanvas.height) : document.createElement('canvas');\n if (outCanvas.width !== inCanvas.width) outCanvas.width = inCanvas.width;\n if (outCanvas.height !== inCanvas.height) outCanvas.height = inCanvas.height;\n // log('created FX filter');\n fx = tf.ENV.flags.IS_BROWSER ? new fxImage.GLImageFilter({ canvas: outCanvas }) : null; // && (typeof document !== 'undefined')\n }\n if (!fx) return { tensor: null, canvas: inCanvas };\n fx.reset();\n fx.addFilter('brightness', config.filter.brightness); // must have at least one filter enabled\n if (config.filter.contrast !== 0) fx.addFilter('contrast', config.filter.contrast);\n if (config.filter.sharpness !== 0) fx.addFilter('sharpen', config.filter.sharpness);\n if (config.filter.blur !== 0) fx.addFilter('blur', config.filter.blur);\n if (config.filter.saturation !== 0) fx.addFilter('saturation', config.filter.saturation);\n if (config.filter.hue !== 0) fx.addFilter('hue', config.filter.hue);\n if (config.filter.negative) fx.addFilter('negative');\n if (config.filter.sepia) fx.addFilter('sepia');\n if (config.filter.vintage) fx.addFilter('brownie');\n if (config.filter.sepia) fx.addFilter('sepia');\n if (config.filter.kodachrome) fx.addFilter('kodachrome');\n if (config.filter.technicolor) fx.addFilter('technicolor');\n if (config.filter.polaroid) fx.addFilter('polaroid');\n if (config.filter.pixelate !== 0) fx.addFilter('pixelate', config.filter.pixelate);\n fx.apply(inCanvas);\n // read pixel data\n /*\n const gl = outCanvas.getContext('webgl');\n if (gl) {\n const glBuffer = new Uint8Array(outCanvas.width * outCanvas.height * 4);\n const pixBuffer = new Uint8Array(outCanvas.width * outCanvas.height * 3);\n gl.readPixels(0, 0, outCanvas.width, outCanvas.height, gl.RGBA, gl.UNSIGNED_BYTE, glBuffer);\n // gl returns rbga while we only need rgb, so discarding alpha channel\n // gl returns starting point as lower left, so need to invert vertical\n let i = 0;\n for (let y = outCanvas.height - 1; y >= 0; y--) {\n for (let x = 0; x < outCanvas.width; x++) {\n const index = (x + y * outCanvas.width) * 4;\n pixBuffer[i++] = glBuffer[index + 0];\n pixBuffer[i++] = glBuffer[index + 1];\n pixBuffer[i++] = glBuffer[index + 2];\n }\n }\n outCanvas.data = pixBuffer;\n }\n */\n } else {\n outCanvas = inCanvas;\n if (fx) fx = null;\n }\n let pixels;\n if (outCanvas.data) {\n const shape = [outCanvas.height, outCanvas.width, 3];\n pixels = tf.tensor3d(outCanvas.data, shape, 'int32');\n } else if ((config.backend === 'webgl') || (outCanvas instanceof ImageData)) {\n // tf kernel-optimized method to get imagedata, also if input is imagedata, just use it\n pixels = tf.browser.fromPixels(outCanvas);\n } else {\n // cpu and wasm kernel does not implement efficient fromPixels method nor we can use canvas as-is, so we do a silly one more canvas\n const tempCanvas = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(targetWidth, targetHeight) : document.createElement('canvas');\n tempCanvas.width = targetWidth;\n tempCanvas.height = targetHeight;\n const tempCtx = tempCanvas.getContext('2d');\n tempCtx?.drawImage(outCanvas, 0, 0);\n const data = tempCtx?.getImageData(0, 0, targetWidth, targetHeight);\n pixels = tf.browser.fromPixels(data);\n }\n const casted = pixels.toFloat();\n tensor = casted.expandDims(0);\n pixels.dispose();\n casted.dispose();\n }\n const canvas = config.filter.return ? outCanvas : null;\n return { tensor, canvas };\n}\n", "/*\nWebGLImageFilter - MIT Licensed\n2013, Dominic Szablewski - phoboslab.org\n\n*/\n\nfunction GLProgram(gl, vertexSource, fragmentSource) {\n const _collect = function (source, prefix, collection) {\n const r = new RegExp('\\\\b' + prefix + ' \\\\w+ (\\\\w+)', 'ig');\n source.replace(r, (match, name) => {\n collection[name] = 0;\n return match;\n });\n };\n\n const _compile = function (source, type) {\n const shader = gl.createShader(type);\n gl.shaderSource(shader, source);\n gl.compileShader(shader);\n if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {\n // @ts-ignore\n throw new Error('Filter: GL compile failed', gl.getShaderInfoLog(shader));\n }\n return shader;\n };\n\n this.uniform = {};\n this.attribute = {};\n const _vsh = _compile(vertexSource, gl.VERTEX_SHADER);\n const _fsh = _compile(fragmentSource, gl.FRAGMENT_SHADER);\n this.id = gl.createProgram();\n gl.attachShader(this.id, _vsh);\n gl.attachShader(this.id, _fsh);\n gl.linkProgram(this.id);\n\n if (!gl.getProgramParameter(this.id, gl.LINK_STATUS)) {\n // @ts-ignore\n throw new Error('Filter: GL link failed', gl.getProgramInfoLog(this.id));\n }\n\n gl.useProgram(this.id);\n // Collect attributes\n _collect(vertexSource, 'attribute', this.attribute);\n for (const a in this.attribute) this.attribute[a] = gl.getAttribLocation(this.id, a);\n // Collect uniforms\n _collect(vertexSource, 'uniform', this.uniform);\n _collect(fragmentSource, 'uniform', this.uniform);\n for (const u in this.uniform) this.uniform[u] = gl.getUniformLocation(this.id, u);\n}\n\n// export const GLImageFilter = function (params) {\nexport function GLImageFilter(params) {\n if (!params) params = { };\n let _drawCount = 0;\n let _sourceTexture = null;\n let _lastInChain = false;\n let _currentFramebufferIndex = -1;\n let _tempFramebuffers = [null, null];\n let _filterChain = [];\n let _width = -1;\n let _height = -1;\n let _vertexBuffer = null;\n let _currentProgram = null;\n const _filter = {};\n const _canvas = params.canvas || document.createElement('canvas');\n // key is the shader program source, value is the compiled program\n const _shaderProgramCache = { };\n const DRAW = { INTERMEDIATE: 1 };\n const gl = _canvas.getContext('webgl');\n if (!gl) throw new Error('Filter: getContext() failed');\n\n this.addFilter = function (name) {\n // eslint-disable-next-line prefer-rest-params\n const args = Array.prototype.slice.call(arguments, 1);\n const filter = _filter[name];\n _filterChain.push({ func: filter, args });\n };\n\n this.reset = function () {\n _filterChain = [];\n };\n\n const _resize = function (width, height) {\n // Same width/height? Nothing to do here\n if (width === _width && height === _height) { return; }\n _canvas.width = width;\n _width = width;\n _canvas.height = height;\n _height = height;\n // Create the context if we don't have it yet\n if (!_vertexBuffer) {\n // Create the vertex buffer for the two triangles [x, y, u, v] * 6\n const vertices = new Float32Array([\n -1, -1, 0, 1, 1, -1, 1, 1, -1, 1, 0, 0,\n -1, 1, 0, 0, 1, -1, 1, 1, 1, 1, 1, 0,\n ]);\n // eslint-disable-next-line no-unused-expressions\n (_vertexBuffer = gl.createBuffer(), gl.bindBuffer(gl.ARRAY_BUFFER, _vertexBuffer));\n gl.bufferData(gl.ARRAY_BUFFER, vertices, gl.STATIC_DRAW);\n gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, true);\n }\n gl.viewport(0, 0, _width, _height);\n // Delete old temp framebuffers\n _tempFramebuffers = [null, null];\n };\n\n const _createFramebufferTexture = function (width, height) {\n const fbo = gl.createFramebuffer();\n gl.bindFramebuffer(gl.FRAMEBUFFER, fbo);\n const renderbuffer = gl.createRenderbuffer();\n gl.bindRenderbuffer(gl.RENDERBUFFER, renderbuffer);\n const texture = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, texture);\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, width, height, 0, gl.RGBA, gl.UNSIGNED_BYTE, null);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, texture, 0);\n gl.bindTexture(gl.TEXTURE_2D, null);\n gl.bindFramebuffer(gl.FRAMEBUFFER, null);\n return { fbo, texture };\n };\n\n const _getTempFramebuffer = function (index) {\n // @ts-ignore\n _tempFramebuffers[index] = _tempFramebuffers[index] || _createFramebufferTexture(_width, _height);\n return _tempFramebuffers[index];\n };\n\n const _draw = function (flags = null) {\n let source = null;\n let target = null;\n let flipY = false;\n // Set up the source\n if (_drawCount === 0) {\n // First draw call - use the source texture\n source = _sourceTexture;\n } else {\n // All following draw calls use the temp buffer last drawn to\n // @ts-ignore\n source = _getTempFramebuffer(_currentFramebufferIndex)?.texture;\n }\n _drawCount++;\n // Set up the target\n if (_lastInChain && !(flags & DRAW.INTERMEDIATE)) {\n // Last filter in our chain - draw directly to the WebGL Canvas. We may\n // also have to flip the image vertically now\n target = null;\n flipY = _drawCount % 2 === 0;\n } else {\n // Intermediate draw call - get a temp buffer to draw to\n _currentFramebufferIndex = (_currentFramebufferIndex + 1) % 2;\n // @ts-ignore\n target = _getTempFramebuffer(_currentFramebufferIndex)?.fbo;\n }\n // Bind the source and target and draw the two triangles\n gl.bindTexture(gl.TEXTURE_2D, source);\n gl.bindFramebuffer(gl.FRAMEBUFFER, target);\n gl.uniform1f(_currentProgram.uniform.flipY, (flipY ? -1 : 1));\n gl.drawArrays(gl.TRIANGLES, 0, 6);\n };\n\n this.apply = function (image) {\n _resize(image.width, image.height);\n _drawCount = 0;\n // Create the texture for the input image if we haven't yet\n if (!_sourceTexture) _sourceTexture = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, _sourceTexture);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, image);\n // No filters? Just draw\n if (_filterChain.length === 0) {\n // const program = _compileShader(SHADER.FRAGMENT_IDENTITY);\n _draw();\n return _canvas;\n }\n for (let i = 0; i < _filterChain.length; i++) {\n _lastInChain = (i === _filterChain.length - 1);\n const f = _filterChain[i];\n f.func.apply(this, f.args || []);\n }\n return _canvas;\n };\n\n const _compileShader = function (fragmentSource) {\n if (_shaderProgramCache[fragmentSource]) {\n _currentProgram = _shaderProgramCache[fragmentSource];\n gl.useProgram(_currentProgram.id);\n return _currentProgram;\n }\n // Compile shaders\n const SHADER = {};\n SHADER.VERTEX_IDENTITY = [\n 'precision highp float;',\n 'attribute vec2 pos;',\n 'attribute vec2 uv;',\n 'varying vec2 vUv;',\n 'uniform float flipY;',\n 'void main(void) {',\n 'vUv = uv;',\n 'gl_Position = vec4(pos.x, pos.y*flipY, 0.0, 1.);',\n '}',\n ].join('\\n');\n SHADER.FRAGMENT_IDENTITY = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n 'void main(void) {',\n 'gl_FragColor = texture2D(texture, vUv);',\n '}',\n ].join('\\n');\n _currentProgram = new GLProgram(gl, SHADER.VERTEX_IDENTITY, fragmentSource);\n const floatSize = Float32Array.BYTES_PER_ELEMENT;\n const vertSize = 4 * floatSize;\n gl.enableVertexAttribArray(_currentProgram.attribute.pos);\n gl.vertexAttribPointer(_currentProgram.attribute.pos, 2, gl.FLOAT, false, vertSize, 0 * floatSize);\n gl.enableVertexAttribArray(_currentProgram.attribute.uv);\n gl.vertexAttribPointer(_currentProgram.attribute.uv, 2, gl.FLOAT, false, vertSize, 2 * floatSize);\n _shaderProgramCache[fragmentSource] = _currentProgram;\n return _currentProgram;\n };\n\n // -------------------------------------------------------------------------\n // Color Matrix Filter\n _filter.colorMatrix = function (matrix) {\n // Create a Float32 Array and normalize the offset component to 0-1\n const m = new Float32Array(matrix);\n m[4] /= 255;\n m[9] /= 255;\n m[14] /= 255;\n m[19] /= 255;\n // Can we ignore the alpha value? Makes things a bit faster.\n const shader = (m[18] === 1 && m[3] === 0 && m[8] === 0 && m[13] === 0 && m[15] === 0 && m[16] === 0 && m[17] === 0 && m[19] === 0)\n ? _filter.colorMatrix.SHADER.WITHOUT_ALPHA\n : _filter.colorMatrix.SHADER.WITH_ALPHA;\n const program = _compileShader(shader);\n gl.uniform1fv(program.uniform.m, m);\n _draw();\n };\n _filter.colorMatrix.SHADER = {};\n _filter.colorMatrix.SHADER.WITH_ALPHA = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n 'uniform float m[20];',\n 'void main(void) {',\n 'vec4 c = texture2D(texture, vUv);',\n 'gl_FragColor.r = m[0] * c.r + m[1] * c.g + m[2] * c.b + m[3] * c.a + m[4];',\n 'gl_FragColor.g = m[5] * c.r + m[6] * c.g + m[7] * c.b + m[8] * c.a + m[9];',\n 'gl_FragColor.b = m[10] * c.r + m[11] * c.g + m[12] * c.b + m[13] * c.a + m[14];',\n 'gl_FragColor.a = m[15] * c.r + m[16] * c.g + m[17] * c.b + m[18] * c.a + m[19];',\n '}',\n ].join('\\n');\n _filter.colorMatrix.SHADER.WITHOUT_ALPHA = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n 'uniform float m[20];',\n 'void main(void) {',\n 'vec4 c = texture2D(texture, vUv);',\n 'gl_FragColor.r = m[0] * c.r + m[1] * c.g + m[2] * c.b + m[4];',\n 'gl_FragColor.g = m[5] * c.r + m[6] * c.g + m[7] * c.b + m[9];',\n 'gl_FragColor.b = m[10] * c.r + m[11] * c.g + m[12] * c.b + m[14];',\n 'gl_FragColor.a = c.a;',\n '}',\n ].join('\\n');\n\n _filter.brightness = function (brightness) {\n const b = (brightness || 0) + 1;\n _filter.colorMatrix([\n b, 0, 0, 0, 0,\n 0, b, 0, 0, 0,\n 0, 0, b, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.saturation = function (amount) {\n const x = (amount || 0) * 2 / 3 + 1;\n const y = ((x - 1) * -0.5);\n _filter.colorMatrix([\n x, y, y, 0, 0,\n y, x, y, 0, 0,\n y, y, x, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.desaturate = function () {\n _filter.saturation(-1);\n };\n\n _filter.contrast = function (amount) {\n const v = (amount || 0) + 1;\n const o = -128 * (v - 1);\n\n _filter.colorMatrix([\n v, 0, 0, 0, o,\n 0, v, 0, 0, o,\n 0, 0, v, 0, o,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.negative = function () {\n _filter.contrast(-2);\n };\n\n _filter.hue = function (rotation) {\n rotation = (rotation || 0) / 180 * Math.PI;\n const cos = Math.cos(rotation);\n const sin = Math.sin(rotation);\n const lumR = 0.213;\n const lumG = 0.715;\n const lumB = 0.072;\n\n _filter.colorMatrix([\n lumR + cos * (1 - lumR) + sin * (-lumR), lumG + cos * (-lumG) + sin * (-lumG), lumB + cos * (-lumB) + sin * (1 - lumB), 0, 0,\n lumR + cos * (-lumR) + sin * (0.143), lumG + cos * (1 - lumG) + sin * (0.140), lumB + cos * (-lumB) + sin * (-0.283), 0, 0,\n lumR + cos * (-lumR) + sin * (-(1 - lumR)), lumG + cos * (-lumG) + sin * (lumG), lumB + cos * (1 - lumB) + sin * (lumB), 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.desaturateLuminance = function () {\n _filter.colorMatrix([\n 0.2764723, 0.9297080, 0.0938197, 0, -37.1,\n 0.2764723, 0.9297080, 0.0938197, 0, -37.1,\n 0.2764723, 0.9297080, 0.0938197, 0, -37.1,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.sepia = function () {\n _filter.colorMatrix([\n 0.393, 0.7689999, 0.18899999, 0, 0,\n 0.349, 0.6859999, 0.16799999, 0, 0,\n 0.272, 0.5339999, 0.13099999, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.brownie = function () {\n _filter.colorMatrix([\n 0.5997023498159715, 0.34553243048391263, -0.2708298674538042, 0, 47.43192855600873,\n -0.037703249837783157, 0.8609577587992641, 0.15059552388459913, 0, -36.96841498319127,\n 0.24113635128153335, -0.07441037908422492, 0.44972182064877153, 0, -7.562075277591283,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.vintagePinhole = function () {\n _filter.colorMatrix([\n 0.6279345635605994, 0.3202183420819367, -0.03965408211312453, 0, 9.651285835294123,\n 0.02578397704808868, 0.6441188644374771, 0.03259127616149294, 0, 7.462829176470591,\n 0.0466055556782719, -0.0851232987247891, 0.5241648018700465, 0, 5.159190588235296,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.kodachrome = function () {\n _filter.colorMatrix([\n 1.1285582396593525, -0.3967382283601348, -0.03992559172921793, 0, 63.72958762196502,\n -0.16404339962244616, 1.0835251566291304, -0.05498805115633132, 0, 24.732407896706203,\n -0.16786010706155763, -0.5603416277695248, 1.6014850761964943, 0, 35.62982807460946,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.technicolor = function () {\n _filter.colorMatrix([\n 1.9125277891456083, -0.8545344976951645, -0.09155508482755585, 0, 11.793603434377337,\n -0.3087833385928097, 1.7658908555458428, -0.10601743074722245, 0, -70.35205161461398,\n -0.231103377548616, -0.7501899197440212, 1.847597816108189, 0, 30.950940869491138,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.polaroid = function () {\n _filter.colorMatrix([\n 1.438, -0.062, -0.062, 0, 0,\n -0.122, 1.378, -0.122, 0, 0,\n -0.016, -0.016, 1.483, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.shiftToBGR = function () {\n _filter.colorMatrix([\n 0, 0, 1, 0, 0,\n 0, 1, 0, 0, 0,\n 1, 0, 0, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n // -------------------------------------------------------------------------\n // Convolution Filter\n _filter.convolution = function (matrix) {\n const m = new Float32Array(matrix);\n const pixelSizeX = 1 / _width;\n const pixelSizeY = 1 / _height;\n const program = _compileShader(_filter.convolution.SHADER);\n gl.uniform1fv(program.uniform.m, m);\n gl.uniform2f(program.uniform.px, pixelSizeX, pixelSizeY);\n _draw();\n };\n\n _filter.convolution.SHADER = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n 'uniform vec2 px;',\n 'uniform float m[9];',\n 'void main(void) {',\n 'vec4 c11 = texture2D(texture, vUv - px);', // top left\n 'vec4 c12 = texture2D(texture, vec2(vUv.x, vUv.y - px.y));', // top center\n 'vec4 c13 = texture2D(texture, vec2(vUv.x + px.x, vUv.y - px.y));', // top right\n 'vec4 c21 = texture2D(texture, vec2(vUv.x - px.x, vUv.y) );', // mid left\n 'vec4 c22 = texture2D(texture, vUv);', // mid center\n 'vec4 c23 = texture2D(texture, vec2(vUv.x + px.x, vUv.y) );', // mid right\n 'vec4 c31 = texture2D(texture, vec2(vUv.x - px.x, vUv.y + px.y) );', // bottom left\n 'vec4 c32 = texture2D(texture, vec2(vUv.x, vUv.y + px.y) );', // bottom center\n 'vec4 c33 = texture2D(texture, vUv + px );', // bottom right\n 'gl_FragColor = ',\n 'c11 * m[0] + c12 * m[1] + c22 * m[2] +',\n 'c21 * m[3] + c22 * m[4] + c23 * m[5] +',\n 'c31 * m[6] + c32 * m[7] + c33 * m[8];',\n 'gl_FragColor.a = c22.a;',\n '}',\n ].join('\\n');\n\n _filter.detectEdges = function () {\n _filter.convolution.call(this, [\n 0, 1, 0,\n 1, -4, 1,\n 0, 1, 0,\n ]);\n };\n\n _filter.sobelX = function () {\n _filter.convolution.call(this, [\n -1, 0, 1,\n -2, 0, 2,\n -1, 0, 1,\n ]);\n };\n\n _filter.sobelY = function () {\n _filter.convolution.call(this, [\n -1, -2, -1,\n 0, 0, 0,\n 1, 2, 1,\n ]);\n };\n\n _filter.sharpen = function (amount) {\n const a = amount || 1;\n _filter.convolution.call(this, [\n 0, -1 * a, 0,\n -1 * a, 1 + 4 * a, -1 * a,\n 0, -1 * a, 0,\n ]);\n };\n\n _filter.emboss = function (size) {\n const s = size || 1;\n _filter.convolution.call(this, [\n -2 * s, -1 * s, 0,\n -1 * s, 1, 1 * s,\n 0, 1 * s, 2 * s,\n ]);\n };\n\n // -------------------------------------------------------------------------\n // Blur Filter\n _filter.blur = function (size) {\n const blurSizeX = (size / 7) / _width;\n const blurSizeY = (size / 7) / _height;\n const program = _compileShader(_filter.blur.SHADER);\n // Vertical\n gl.uniform2f(program.uniform.px, 0, blurSizeY);\n _draw(DRAW.INTERMEDIATE);\n // Horizontal\n gl.uniform2f(program.uniform.px, blurSizeX, 0);\n _draw();\n };\n\n _filter.blur.SHADER = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n 'uniform vec2 px;',\n 'void main(void) {',\n 'gl_FragColor = vec4(0.0);',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-7.0*px.x, -7.0*px.y))*0.0044299121055113265;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-6.0*px.x, -6.0*px.y))*0.00895781211794;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-5.0*px.x, -5.0*px.y))*0.0215963866053;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-4.0*px.x, -4.0*px.y))*0.0443683338718;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-3.0*px.x, -3.0*px.y))*0.0776744219933;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-2.0*px.x, -2.0*px.y))*0.115876621105;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-1.0*px.x, -1.0*px.y))*0.147308056121;',\n 'gl_FragColor += texture2D(texture, vUv )*0.159576912161;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 1.0*px.x, 1.0*px.y))*0.147308056121;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 2.0*px.x, 2.0*px.y))*0.115876621105;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 3.0*px.x, 3.0*px.y))*0.0776744219933;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 4.0*px.x, 4.0*px.y))*0.0443683338718;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 5.0*px.x, 5.0*px.y))*0.0215963866053;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 6.0*px.x, 6.0*px.y))*0.00895781211794;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 7.0*px.x, 7.0*px.y))*0.0044299121055113265;',\n '}',\n ].join('\\n');\n\n // -------------------------------------------------------------------------\n // Pixelate Filter\n _filter.pixelate = function (size) {\n const blurSizeX = (size) / _width;\n const blurSizeY = (size) / _height;\n const program = _compileShader(_filter.pixelate.SHADER);\n // Horizontal\n gl.uniform2f(program.uniform.size, blurSizeX, blurSizeY);\n _draw();\n };\n\n _filter.pixelate.SHADER = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform vec2 size;',\n 'uniform sampler2D texture;',\n 'vec2 pixelate(vec2 coord, vec2 size) {',\n 'return floor( coord / size ) * size;',\n '}',\n 'void main(void) {',\n 'gl_FragColor = vec4(0.0);',\n 'vec2 coord = pixelate(vUv, size);',\n 'gl_FragColor += texture2D(texture, coord);',\n '}',\n ].join('\\n');\n}\n", "import { defaults } from '../config';\nimport { TRI468 as triangulation } from '../blazeface/coords';\n\nexport const drawOptions = {\n color: 'rgba(173, 216, 230, 0.3)', // 'lightblue' with light alpha channel\n labelColor: 'rgba(173, 216, 230, 1)', // 'lightblue' with dark alpha channel\n shadowColor: 'black',\n font: 'small-caps 16px \"Segoe UI\"',\n lineHeight: 20,\n lineWidth: 6,\n pointSize: 2,\n roundRect: 28,\n drawPoints: false,\n drawLabels: true,\n drawBoxes: true,\n drawPolygons: true,\n fillPolygons: false,\n useDepth: true,\n useCurves: false,\n bufferedOutput: false,\n useRawBoxes: false,\n};\n\nfunction point(ctx, x, y, z = null) {\n ctx.fillStyle = drawOptions.useDepth && z ? `rgba(${127.5 + (2 * (z || 0))}, ${127.5 - (2 * (z || 0))}, 255, 0.3)` : drawOptions.color;\n ctx.beginPath();\n ctx.arc(x, y, drawOptions.pointSize, 0, 2 * Math.PI);\n ctx.fill();\n}\n\nfunction rect(ctx, x, y, width, height) {\n ctx.beginPath();\n if (drawOptions.useCurves) {\n const cx = (x + x + width) / 2;\n const cy = (y + y + height) / 2;\n ctx.ellipse(cx, cy, width / 2, height / 2, 0, 0, 2 * Math.PI);\n } else {\n ctx.lineWidth = drawOptions.lineWidth;\n ctx.moveTo(x + drawOptions.roundRect, y);\n ctx.lineTo(x + width - drawOptions.roundRect, y);\n ctx.quadraticCurveTo(x + width, y, x + width, y + drawOptions.roundRect);\n ctx.lineTo(x + width, y + height - drawOptions.roundRect);\n ctx.quadraticCurveTo(x + width, y + height, x + width - drawOptions.roundRect, y + height);\n ctx.lineTo(x + drawOptions.roundRect, y + height);\n ctx.quadraticCurveTo(x, y + height, x, y + height - drawOptions.roundRect);\n ctx.lineTo(x, y + drawOptions.roundRect);\n ctx.quadraticCurveTo(x, y, x + drawOptions.roundRect, y);\n ctx.closePath();\n }\n ctx.stroke();\n}\n\nfunction lines(ctx, points: number[] = []) {\n if (points === undefined || points.length === 0) return;\n ctx.beginPath();\n ctx.moveTo(points[0][0], points[0][1]);\n for (const pt of points) {\n ctx.strokeStyle = drawOptions.useDepth && pt[2] ? `rgba(${127.5 + (2 * pt[2])}, ${127.5 - (2 * pt[2])}, 255, 0.3)` : drawOptions.color;\n ctx.fillStyle = drawOptions.useDepth && pt[2] ? `rgba(${127.5 + (2 * pt[2])}, ${127.5 - (2 * pt[2])}, 255, 0.3)` : drawOptions.color;\n ctx.lineTo(pt[0], parseInt(pt[1]));\n }\n ctx.stroke();\n if (drawOptions.fillPolygons) {\n ctx.closePath();\n ctx.fill();\n }\n}\n\nfunction curves(ctx, points: number[] = []) {\n if (points === undefined || points.length === 0) return;\n if (!drawOptions.useCurves || points.length <= 2) {\n lines(ctx, points);\n return;\n }\n ctx.moveTo(points[0][0], points[0][1]);\n for (let i = 0; i < points.length - 2; i++) {\n const xc = (points[i][0] + points[i + 1][0]) / 2;\n const yc = (points[i][1] + points[i + 1][1]) / 2;\n ctx.quadraticCurveTo(points[i][0], points[i][1], xc, yc);\n }\n ctx.quadraticCurveTo(points[points.length - 2][0], points[points.length - 2][1], points[points.length - 1][0], points[points.length - 1][1]);\n ctx.stroke();\n if (drawOptions.fillPolygons) {\n ctx.closePath();\n ctx.fill();\n }\n}\n\nexport async function gesture(inCanvas: HTMLCanvasElement, result: Array) {\n if (!result || !inCanvas) return;\n if (!(inCanvas instanceof HTMLCanvasElement)) return;\n const ctx = inCanvas.getContext('2d');\n if (!ctx) return;\n ctx.font = drawOptions.font;\n ctx.fillStyle = drawOptions.color;\n let i = 1;\n for (let j = 0; j < result.length; j++) {\n let where:any[] = [];\n let what:any[] = [];\n [where, what] = Object.entries(result[j]);\n if ((what.length > 1) && (what[1].length > 0)) {\n const person = where[1] > 0 ? `#${where[1]}` : '';\n const label = `${where[0]} ${person}: ${what[1]}`;\n if (drawOptions.shadowColor && drawOptions.shadowColor !== '') {\n ctx.fillStyle = drawOptions.shadowColor;\n ctx.fillText(label, 8, 2 + (i * drawOptions.lineHeight));\n }\n ctx.fillStyle = drawOptions.labelColor;\n ctx.fillText(label, 6, 0 + (i * drawOptions.lineHeight));\n i += 1;\n }\n }\n}\n\nexport async function face(inCanvas: HTMLCanvasElement, result: Array) {\n if (!result || !inCanvas) return;\n if (!(inCanvas instanceof HTMLCanvasElement)) return;\n const ctx = inCanvas.getContext('2d');\n if (!ctx) return;\n for (const f of result) {\n ctx.font = drawOptions.font;\n ctx.strokeStyle = drawOptions.color;\n ctx.fillStyle = drawOptions.color;\n if (drawOptions.drawBoxes) {\n if (drawOptions.useRawBoxes) rect(ctx, inCanvas.width * f.boxRaw[0], inCanvas.height * f.boxRaw[1], inCanvas.width * f.boxRaw[2], inCanvas.height * f.boxRaw[3]);\n else rect(ctx, f.box[0], f.box[1], f.box[2], f.box[3]);\n }\n // silly hack since fillText does not suport new line\n const labels:string[] = [];\n labels.push(`face confidence: ${Math.trunc(100 * f.confidence)}%`);\n if (f.genderConfidence) labels.push(`${f.gender || ''} ${Math.trunc(100 * f.genderConfidence)}% confident`);\n // if (f.genderConfidence) labels.push(f.gender);\n if (f.age) labels.push(`age: ${f.age || ''}`);\n if (f.iris) labels.push(`iris distance: ${f.iris}`);\n if (f.emotion && f.emotion.length > 0) {\n const emotion = f.emotion.map((a) => `${Math.trunc(100 * a.score)}% ${a.emotion}`);\n labels.push(emotion.join(' '));\n }\n if (f.angle && f.angle.roll) labels.push(`roll: ${Math.trunc(100 * f.angle.roll) / 100} yaw:${Math.trunc(100 * f.angle.yaw) / 100} pitch:${Math.trunc(100 * f.angle.pitch) / 100}`);\n if (labels.length === 0) labels.push('face');\n ctx.fillStyle = drawOptions.color;\n for (let i = labels.length - 1; i >= 0; i--) {\n const x = Math.max(f.box[0], 0);\n const y = i * drawOptions.lineHeight + f.box[1];\n if (drawOptions.shadowColor && drawOptions.shadowColor !== '') {\n ctx.fillStyle = drawOptions.shadowColor;\n ctx.fillText(labels[i], x + 5, y + 16);\n }\n ctx.fillStyle = drawOptions.labelColor;\n ctx.fillText(labels[i], x + 4, y + 15);\n }\n ctx.lineWidth = 1;\n if (f.mesh && f.mesh.length > 0) {\n if (drawOptions.drawPoints) {\n for (const pt of f.mesh) point(ctx, pt[0], pt[1], pt[2]);\n // for (const pt of f.meshRaw) point(ctx, pt[0] * inCanvas.offsetWidth, pt[1] * inCanvas.offsetHeight, pt[2]);\n }\n if (drawOptions.drawPolygons) {\n ctx.lineWidth = 1;\n for (let i = 0; i < triangulation.length / 3; i++) {\n const points = [\n triangulation[i * 3 + 0],\n triangulation[i * 3 + 1],\n triangulation[i * 3 + 2],\n ].map((index) => f.mesh[index]);\n lines(ctx, points);\n }\n // iris: array[center, left, top, right, bottom]\n if (f.annotations && f.annotations.leftEyeIris) {\n ctx.strokeStyle = drawOptions.useDepth ? 'rgba(255, 200, 255, 0.3)' : drawOptions.color;\n ctx.beginPath();\n const sizeX = Math.abs(f.annotations.leftEyeIris[3][0] - f.annotations.leftEyeIris[1][0]) / 2;\n const sizeY = Math.abs(f.annotations.leftEyeIris[4][1] - f.annotations.leftEyeIris[2][1]) / 2;\n ctx.ellipse(f.annotations.leftEyeIris[0][0], f.annotations.leftEyeIris[0][1], sizeX, sizeY, 0, 0, 2 * Math.PI);\n ctx.stroke();\n if (drawOptions.fillPolygons) {\n ctx.fillStyle = drawOptions.useDepth ? 'rgba(255, 255, 200, 0.3)' : drawOptions.color;\n ctx.fill();\n }\n }\n if (f.annotations && f.annotations.rightEyeIris) {\n ctx.strokeStyle = drawOptions.useDepth ? 'rgba(255, 200, 255, 0.3)' : drawOptions.color;\n ctx.beginPath();\n const sizeX = Math.abs(f.annotations.rightEyeIris[3][0] - f.annotations.rightEyeIris[1][0]) / 2;\n const sizeY = Math.abs(f.annotations.rightEyeIris[4][1] - f.annotations.rightEyeIris[2][1]) / 2;\n ctx.ellipse(f.annotations.rightEyeIris[0][0], f.annotations.rightEyeIris[0][1], sizeX, sizeY, 0, 0, 2 * Math.PI);\n ctx.stroke();\n if (drawOptions.fillPolygons) {\n ctx.fillStyle = drawOptions.useDepth ? 'rgba(255, 255, 200, 0.3)' : drawOptions.color;\n ctx.fill();\n }\n }\n }\n }\n }\n}\n\nconst lastDrawnPose:any[] = [];\nexport async function body(inCanvas: HTMLCanvasElement, result: Array) {\n if (!result || !inCanvas) return;\n if (!(inCanvas instanceof HTMLCanvasElement)) return;\n const ctx = inCanvas.getContext('2d');\n if (!ctx) return;\n ctx.lineJoin = 'round';\n for (let i = 0; i < result.length; i++) {\n // result[i].keypoints = result[i].keypoints.filter((a) => a.score > 0.5);\n if (!lastDrawnPose[i] && drawOptions.bufferedOutput) lastDrawnPose[i] = { ...result[i] };\n ctx.strokeStyle = drawOptions.color;\n ctx.lineWidth = drawOptions.lineWidth;\n if (drawOptions.drawPoints) {\n for (let pt = 0; pt < result[i].keypoints.length; pt++) {\n ctx.fillStyle = drawOptions.useDepth && result[i].keypoints[pt].position.z ? `rgba(${127.5 + (2 * result[i].keypoints[pt].position.z)}, ${127.5 - (2 * result[i].keypoints[pt].position.z)}, 255, 0.5)` : drawOptions.color;\n if (drawOptions.bufferedOutput) {\n lastDrawnPose[i].keypoints[pt][0] = (lastDrawnPose[i].keypoints[pt][0] + result[i].keypoints[pt].position.x) / 2;\n lastDrawnPose[i].keypoints[pt][1] = (lastDrawnPose[i].keypoints[pt][1] + result[i].keypoints[pt].position.y) / 2;\n point(ctx, lastDrawnPose[i].keypoints[pt][0], lastDrawnPose[i].keypoints[pt][1]);\n } else {\n point(ctx, result[i].keypoints[pt].position.x, result[i].keypoints[pt].position.y);\n }\n }\n }\n if (drawOptions.drawLabels) {\n ctx.font = drawOptions.font;\n for (const pt of result[i].keypoints) {\n ctx.fillStyle = drawOptions.useDepth && pt.position.z ? `rgba(${127.5 + (2 * pt.position.z)}, ${127.5 - (2 * pt.position.z)}, 255, 0.5)` : drawOptions.color;\n ctx.fillText(`${pt.part}`, pt.position.x + 4, pt.position.y + 4);\n }\n }\n if (drawOptions.drawPolygons) {\n let part;\n const points: any[] = [];\n // torso\n points.length = 0;\n part = result[i].keypoints.find((a) => a.part === 'leftShoulder');\n if (part && part.score > defaults.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightShoulder');\n if (part && part.score > defaults.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightHip');\n if (part && part.score > defaults.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftHip');\n if (part && part.score > defaults.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftShoulder');\n if (part && part.score > defaults.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n if (points.length === 5) lines(ctx, points); // only draw if we have complete torso\n // leg left\n points.length = 0;\n part = result[i].keypoints.find((a) => a.part === 'leftHip');\n if (part && part.score > defaults.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftKnee');\n if (part && part.score > defaults.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftAnkle');\n if (part && part.score > defaults.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftHeel');\n if (part && part.score > defaults.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftFoot');\n if (part && part.score > defaults.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n curves(ctx, points);\n // leg right\n points.length = 0;\n part = result[i].keypoints.find((a) => a.part === 'rightHip');\n if (part && part.score > defaults.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightKnee');\n if (part && part.score > defaults.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightAnkle');\n if (part && part.score > defaults.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightHeel');\n if (part && part.score > defaults.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightFoot');\n if (part && part.score > defaults.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n curves(ctx, points);\n // arm left\n points.length = 0;\n part = result[i].keypoints.find((a) => a.part === 'leftShoulder');\n if (part && part.score > defaults.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftElbow');\n if (part && part.score > defaults.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftWrist');\n if (part && part.score > defaults.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftPalm');\n if (part && part.score > defaults.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n curves(ctx, points);\n // arm right\n points.length = 0;\n part = result[i].keypoints.find((a) => a.part === 'rightShoulder');\n if (part && part.score > defaults.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightElbow');\n if (part && part.score > defaults.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightWrist');\n if (part && part.score > defaults.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightPalm');\n if (part && part.score > defaults.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n curves(ctx, points);\n // draw all\n }\n }\n}\n\nexport async function hand(inCanvas: HTMLCanvasElement, result: Array) {\n if (!result || !inCanvas) return;\n if (!(inCanvas instanceof HTMLCanvasElement)) return;\n const ctx = inCanvas.getContext('2d');\n if (!ctx) return;\n ctx.lineJoin = 'round';\n ctx.font = drawOptions.font;\n for (const h of result) {\n if (drawOptions.drawBoxes) {\n ctx.strokeStyle = drawOptions.color;\n ctx.fillStyle = drawOptions.color;\n if (drawOptions.useRawBoxes) rect(ctx, inCanvas.width * h.boxRaw[0], inCanvas.height * h.boxRaw[1], inCanvas.width * h.boxRaw[2], inCanvas.height * h.boxRaw[3]);\n else rect(ctx, h.box[0], h.box[1], h.box[2], h.box[3]);\n if (drawOptions.drawLabels) {\n if (drawOptions.shadowColor && drawOptions.shadowColor !== '') {\n ctx.fillStyle = drawOptions.shadowColor;\n ctx.fillText('hand', h.box[0] + 3, 1 + h.box[1] + drawOptions.lineHeight, h.box[2]);\n }\n ctx.fillStyle = drawOptions.labelColor;\n ctx.fillText('hand', h.box[0] + 2, 0 + h.box[1] + drawOptions.lineHeight, h.box[2]);\n }\n ctx.stroke();\n }\n if (drawOptions.drawPoints) {\n if (h.landmarks && h.landmarks.length > 0) {\n for (const pt of h.landmarks) {\n ctx.fillStyle = drawOptions.useDepth ? `rgba(${127.5 + (2 * pt[2])}, ${127.5 - (2 * pt[2])}, 255, 0.5)` : drawOptions.color;\n point(ctx, pt[0], pt[1]);\n }\n }\n }\n if (drawOptions.drawPolygons) {\n const addPart = (part) => {\n if (!part) return;\n for (let i = 0; i < part.length; i++) {\n ctx.lineWidth = drawOptions.lineWidth;\n ctx.beginPath();\n ctx.strokeStyle = drawOptions.useDepth ? `rgba(${127.5 + (2 * part[i][2])}, ${127.5 - (2 * part[i][2])}, 255, 0.5)` : drawOptions.color;\n ctx.moveTo(part[i > 0 ? i - 1 : 0][0], part[i > 0 ? i - 1 : 0][1]);\n ctx.lineTo(part[i][0], part[i][1]);\n ctx.stroke();\n }\n };\n addPart(h.annotations.indexFinger);\n addPart(h.annotations.middleFinger);\n addPart(h.annotations.ringFinger);\n addPart(h.annotations.pinky);\n addPart(h.annotations.thumb);\n // addPart(hand.annotations.palmBase);\n }\n }\n}\n\nexport async function object(inCanvas: HTMLCanvasElement, result: Array) {\n if (!result || !inCanvas) return;\n if (!(inCanvas instanceof HTMLCanvasElement)) return;\n const ctx = inCanvas.getContext('2d');\n if (!ctx) return;\n ctx.lineJoin = 'round';\n ctx.font = drawOptions.font;\n for (const h of result) {\n if (drawOptions.drawBoxes) {\n ctx.strokeStyle = drawOptions.color;\n ctx.fillStyle = drawOptions.color;\n if (drawOptions.useRawBoxes) rect(ctx, inCanvas.width * h.boxRaw[0], inCanvas.height * h.boxRaw[1], inCanvas.width * h.boxRaw[2], inCanvas.height * h.boxRaw[3]);\n else rect(ctx, h.box[0], h.box[1], h.box[2], h.box[3]);\n if (drawOptions.drawLabels) {\n const label = `${Math.round(100 * h.score)}% ${h.label}`;\n if (drawOptions.shadowColor && drawOptions.shadowColor !== '') {\n ctx.fillStyle = drawOptions.shadowColor;\n ctx.fillText(label, h.box[0] + 3, 1 + h.box[1] + drawOptions.lineHeight, h.box[2]);\n }\n ctx.fillStyle = drawOptions.labelColor;\n ctx.fillText(label, h.box[0] + 2, 0 + h.box[1] + drawOptions.lineHeight, h.box[2]);\n }\n ctx.stroke();\n }\n }\n}\n\nexport async function canvas(inCanvas: HTMLCanvasElement, outCanvas: HTMLCanvasElement) {\n if (!inCanvas || !outCanvas) return;\n if (!(inCanvas instanceof HTMLCanvasElement) || !(outCanvas instanceof HTMLCanvasElement)) return;\n const outCtx = inCanvas.getContext('2d');\n outCtx?.drawImage(inCanvas, 0, 0);\n}\n\nexport async function all(inCanvas: HTMLCanvasElement, result:any) {\n if (!result || !inCanvas) return;\n if (!(inCanvas instanceof HTMLCanvasElement)) return;\n face(inCanvas, result.face);\n body(inCanvas, result.body);\n hand(inCanvas, result.hand);\n gesture(inCanvas, result.gesture);\n object(inCanvas, result.object);\n}\n", "/* eslint-disable indent */\n/* eslint-disable no-multi-spaces */\n\n/**\n * Configuration interface definition for **Human** library\n *\n * Contains all configurable parameters\n */\nexport interface Config {\n backend: string,\n wasmPath: string,\n debug: boolean,\n async: boolean,\n profile: boolean,\n deallocate: boolean,\n scoped: boolean,\n videoOptimized: boolean,\n warmup: string,\n filter: {\n enabled: boolean,\n width: number,\n height: number,\n return: boolean,\n brightness: number,\n contrast: number,\n sharpness: number,\n blur: number\n saturation: number,\n hue: number,\n negative: boolean,\n sepia: boolean,\n vintage: boolean,\n kodachrome: boolean,\n technicolor: boolean,\n polaroid: boolean,\n pixelate: number,\n },\n gesture: {\n enabled: boolean,\n },\n face: {\n enabled: boolean,\n detector: {\n modelPath: string,\n rotation: boolean,\n maxFaces: number,\n skipFrames: number,\n skipInitial: boolean,\n minConfidence: number,\n iouThreshold: number,\n scoreThreshold: number,\n return: boolean,\n },\n mesh: {\n enabled: boolean,\n modelPath: string,\n },\n iris: {\n enabled: boolean,\n modelPath: string,\n },\n description: {\n enabled: boolean,\n modelPath: string,\n skipFrames: number,\n },\n age: {\n enabled: boolean,\n modelPath: string,\n skipFrames: number,\n },\n gender: {\n enabled: boolean,\n minConfidence: number,\n modelPath: string,\n skipFrames: number,\n },\n emotion: {\n enabled: boolean,\n minConfidence: number,\n skipFrames: number,\n modelPath: string,\n },\n embedding: {\n enabled: boolean,\n modelPath: string,\n },\n },\n body: {\n enabled: boolean,\n modelPath: string,\n maxDetections: number,\n scoreThreshold: number,\n nmsRadius: number,\n },\n hand: {\n enabled: boolean,\n rotation: boolean,\n skipFrames: number,\n skipInitial: boolean,\n minConfidence: number,\n iouThreshold: number,\n scoreThreshold: number,\n maxHands: number,\n landmarks: boolean,\n detector: {\n modelPath: string,\n },\n skeleton: {\n modelPath: string,\n },\n },\n object: {\n enabled: boolean,\n modelPath: string,\n minConfidence: number,\n iouThreshold: number,\n maxResults: number,\n skipFrames: number,\n },\n}\n\nconst config: Config = {\n backend: 'webgl', // select tfjs backend to use\n // can be 'webgl', 'wasm', 'cpu', or 'humangl' which is a custom version of webgl\n // leave as empty string to continue using default backend\n // when backend is set outside of Human library\n wasmPath: '../assets/', // path for wasm binaries\n // only used for backend: wasm\n debug: true, // print additional status messages to console\n async: true, // execute enabled models in parallel\n // this disables per-model performance data but\n // slightly increases performance\n // cannot be used if profiling is enabled\n profile: false, // enable tfjs profiling\n // this has significant performance impact\n // only enable for debugging purposes\n // currently only implemented for age,gender,emotion models\n deallocate: false, // aggresively deallocate gpu memory after each usage\n // only valid for webgl backend and only during first call\n // cannot be changed unless library is reloaded\n // this has significant performance impact\n // only enable on low-memory devices\n scoped: false, // enable scoped runs\n // some models *may* have memory leaks,\n // this wrapps everything in a local scope at a cost of performance\n // typically not needed\n videoOptimized: true, // perform additional optimizations when input is video,\n // must be disabled for images\n // basically this skips object box boundary detection for every n frames\n // while maintaining in-box detection since objects cannot move that fast\n warmup: 'face', // what to use for human.warmup(), can be 'none', 'face', 'full'\n // warmup pre-initializes all models for faster inference but can take\n // significant time on startup\n filter: {\n enabled: true, // enable image pre-processing filters\n width: 0, // resize input width\n height: 0, // resize input height\n // if both width and height are set to 0, there is no resizing\n // if just one is set, second one is scaled automatically\n // if both are set, values are used as-is\n return: true, // return processed canvas imagedata in result\n brightness: 0, // range: -1 (darken) to 1 (lighten)\n contrast: 0, // range: -1 (reduce contrast) to 1 (increase contrast)\n sharpness: 0, // range: 0 (no sharpening) to 1 (maximum sharpening)\n blur: 0, // range: 0 (no blur) to N (blur radius in pixels)\n saturation: 0, // range: -1 (reduce saturation) to 1 (increase saturation)\n hue: 0, // range: 0 (no change) to 360 (hue rotation in degrees)\n negative: false, // image negative\n sepia: false, // image sepia colors\n vintage: false, // image vintage colors\n kodachrome: false, // image kodachrome colors\n technicolor: false, // image technicolor colors\n polaroid: false, // image polaroid camera effect\n pixelate: 0, // range: 0 (no pixelate) to N (number of pixels to pixelate)\n },\n\n gesture: {\n enabled: true, // enable simple gesture recognition\n },\n\n face: {\n enabled: true, // controls if specified modul is enabled\n // face.enabled is required for all face models:\n // detector, mesh, iris, age, gender, emotion\n // (note: module is not loaded until it is required)\n detector: {\n modelPath: '../models/blazeface-back.json',\n rotation: false, // use best-guess rotated face image or just box with rotation as-is\n // false means higher performance, but incorrect mesh mapping if face angle is above 20 degrees\n // this parameter is not valid in nodejs\n maxFaces: 10, // maximum number of faces detected in the input\n // should be set to the minimum number for performance\n skipFrames: 21, // how many frames to go without re-running the face bounding box detector\n // only used for video inputs\n // e.g., if model is running st 25 FPS, we can re-use existing bounding\n // box for updated face analysis as the head probably hasn't moved much\n // in short time (10 * 1/25 = 0.25 sec)\n skipInitial: false, // if previous detection resulted in no faces detected,\n // should skipFrames be reset immediately\n minConfidence: 0.2, // threshold for discarding a prediction\n iouThreshold: 0.1, // threshold for deciding whether boxes overlap too much in\n // non-maximum suppression (0.1 means drop if overlap 10%)\n scoreThreshold: 0.2, // threshold for deciding when to remove boxes based on score\n // in non-maximum suppression,\n // this is applied on detection objects only and before minConfidence\n return: false, // return extracted face as tensor\n },\n\n mesh: {\n enabled: true,\n modelPath: '../models/facemesh.json',\n },\n\n iris: {\n enabled: true,\n modelPath: '../models/iris.json',\n },\n\n description: {\n enabled: true, // to improve accuracy of face description extraction it is\n // recommended to enable detector.rotation and mesh.enabled\n modelPath: '../models/faceres.json',\n skipFrames: 31, // how many frames to go without re-running the detector\n // only used for video inputs\n },\n\n emotion: {\n enabled: true,\n minConfidence: 0.1, // threshold for discarding a prediction\n skipFrames: 32, // how many frames to go without re-running the detector\n modelPath: '../models/emotion.json',\n },\n\n age: {\n enabled: false, // obsolete, replaced by description module\n modelPath: '../models/age.json',\n skipFrames: 33, // how many frames to go without re-running the detector\n // only used for video inputs\n },\n\n gender: {\n enabled: false, // obsolete, replaced by description module\n minConfidence: 0.1, // threshold for discarding a prediction\n modelPath: '../models/gender.json',\n skipFrames: 34, // how many frames to go without re-running the detector\n // only used for video inputs\n },\n\n embedding: {\n enabled: false, // obsolete, replaced by description module\n modelPath: '../models/mobileface.json',\n },\n },\n\n body: {\n enabled: true,\n modelPath: '../models/posenet.json', // can be 'posenet' or 'blazepose'\n maxDetections: 10, // maximum number of people detected in the input\n // should be set to the minimum number for performance\n // only valid for posenet as blazepose only detects single pose\n scoreThreshold: 0.3, // threshold for deciding when to remove boxes based on score\n // in non-maximum suppression\n // only valid for posenet as blazepose only detects single pose\n nmsRadius: 20, // radius for deciding points are too close in non-maximum suppression\n // only valid for posenet as blazepose only detects single pose\n },\n\n hand: {\n enabled: true,\n rotation: false, // use best-guess rotated hand image or just box with rotation as-is\n // false means higher performance, but incorrect finger mapping if hand is inverted\n skipFrames: 12, // how many frames to go without re-running the hand bounding box detector\n // only used for video inputs\n // e.g., if model is running st 25 FPS, we can re-use existing bounding\n // box for updated hand skeleton analysis as the hand probably\n // hasn't moved much in short time (10 * 1/25 = 0.25 sec)\n skipInitial: false, // if previous detection resulted in no faces detected,\n // should skipFrames be reset immediately\n minConfidence: 0.1, // threshold for discarding a prediction\n iouThreshold: 0.1, // threshold for deciding whether boxes overlap too much\n // in non-maximum suppression\n scoreThreshold: 0.5, // threshold for deciding when to remove boxes based on\n // score in non-maximum suppression\n maxHands: 1, // maximum number of hands detected in the input\n // should be set to the minimum number for performance\n landmarks: true, // detect hand landmarks or just hand boundary box\n detector: {\n modelPath: '../models/handdetect.json',\n },\n skeleton: {\n modelPath: '../models/handskeleton.json',\n },\n },\n\n object: {\n enabled: false,\n modelPath: '../models/nanodet.json',\n minConfidence: 0.20, // threshold for discarding a prediction\n iouThreshold: 0.40, // threshold for deciding whether boxes overlap too much\n // in non-maximum suppression\n maxResults: 10, // maximum number of objects detected in the input\n skipFrames: 41, // how many frames to go without re-running the detector\n },\n};\nexport { config as defaults };\n", "// data:image/jpeg;base64,\nexport const face = `\n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`;\n\n// data:image/jpeg;base64,\nexport const body = `\n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\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAa2p1UYo5adbz+xbxMlvqJ1OqjDHLXree0ejmzNrWm953tPmTPWbWneZ7yoy5YhjrXXTjH8s75N\nmtkyxt0VZM2/m175N1V03yTKubMLXVXybeYLLX2VXy7eam+b0bOg4VquJW+rry4/O9uyZOq3UjVm\n9r25axMzPaIdvhns1kzbZddM0p5Y47z8/R2+HcF03Doi1a8+Xzvbv+TotJnjDXkt+K8ODHp8cY8N\nIpSO0RCwF2YAAAAAAAAACvUZYw6fJkntWN3k8dfHz2vLucdz8mkjFE9bz1+UOZosX1UzPm0nqI/W\nMYo9FlcPNklfFGeH/NshLGun+Cz6PtHZtVZWlRLS+jxPkRpIn7rdoupHTdA5s6SI+7H6Mfo+32Y2\n+To3neSIiZ7A0IjPXpXLePlMotGW3272t85datKzHZjbTVnsDj+FG/2Y/RlGP4R+jo20u7H6N1Ql\no+H8I/REY957R+jpfReiK6eOYHLtj2tttH6KrY/6Y/R2c+kjeJiFVtLG24hxpw7/AHY/RRkw9O37\nO99Hrt1YX0tfOBLjcGp4XF8c+u8fs9c4dcVcGemSI61nd3IneN1orQAAAAAAAAAAAAABFqxes1tE\nTE9JiUgPKcX4RbRXnNgiZwWnrH4XPi28PdXpW9JraImsxtMS8pxXhF9DecuGJtgmf+1TWW2N/la1\nL7N7T5e3Vy6W3hsYcvLbqzbO9jvvCzvDR0+XeO7crO6FmGSvRThy/RtVXJ92elvk2rRvDUzU7pl4\nizsd2J3jeBpcNz+Lg5LT7+Pp+Xk3W7js5eAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADs0NTrN96Yp6edkW8Wzm6+LNTq4pvTHO9vOfRoWtt\n1mes95YWvs1s2fZldddOczLPLn2ju0MmebT3YZc2/mpm3qqllN1drsbZIhr3yzvtHf4AsvlYYseb\nV5Yx4KTe0+UQ6nDvZ3UazbJqd8OKeu33peq0eh0+hxcmnxxWPOfOfm0mP+steT/ji8N9mKY9suum\nL37+HHaPm9DSlaVitKxWsdohI0Y22gAgAAAAAAAAAABXnyRhw3yT92Nwef4xm8bVzET0rPJH5d12\n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\nAOZE/OsPS29nuH27YrV+VpeV9pdPXhOtw49NG9Mld55+vXcTPd42I47qo7xSfyWV9oM8d8VJ/VxM\nd8l46xWF9cV7en6o/qLfxp2I9ob+eCv/AHMo9op89P8A/wBORGmyT5R+qfo2X8P7n9Q/jTsx7RR5\n6ef+4/8AuHftg/8A6cWcOSO9J/WEbWr3pY7Efzp2Lcfv5YK/9zWy8d1E/ZpSv5Oba1/+Hb9lc+LP\nbFt87I7E/wAabWbiurvEx4nL/pjZzc2bJkn372t85ZXx55/BX85lucC0vPxnTxlnnjm32mOiZqUu\nLJ2p4TwnVavNWaYbRTfre0bQ99pcH0bT0xb78vmtiIiNojaErMwAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAHnfarF7umzRHaZrLjYrdIen9ocPi8JyTt1xzF4eUw23rCm3R4r6bMy\nwt6kdTaWLdjswmNoZontsCm0K5XWjopnuDC0dGpqG5bs08/daKV672MjbSaif6oh6Z5f2LtvptRX\n0tEvUN3Jfo8f7cYve0eX4zV7B5z20xc/C8eSPuZIRficfXlcPaG7ino08HWIbePpLF2NuiyOyrHK\n3fZFSwuovHVfaVF4QK5YWTM9UT0EKry6Ps1Tn4zjn8NZn9nOtLseydObiWW34cf918fWfk+PYANn\nKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAq1WKM+ly4p+/WYeBxTNd6zG0xO0\nvobw3FcP0bi2em20Tbmj5Srr418V9sa2Z7qKyzi07MXUylhaU7yjqhLCeiq3ddaFNxFYW7NLNG8t\nzya+WO6Va9J7FW66mvwidnrXiPY3Ny8RyUn71Jj9Ht3RPjk19HK9pMHj8D1ER3rHN+jqqtTjjNps\nuOe16zAifXzfTz7kNyndpYazS9qT0mszDdoxrsi6m8LazMq6zDOsq1ZEyrt1WWlXaUCqyq0rbKbi\nFdp6PReyFd8uqv8ACsfy83aXrPZHHto89/xX2/SP/dpj6y8vx6EBq5gAAAAAAAAAAAAAAAAAAAAA\n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\nNO67NbkhzNVnmInqzaOZrL93JyZeV0M1++7S02jvxDWxhxx033tPpC8Z6rrezWjmZyazJG2/u03h\n2vFibTHoqvamiwVwY+nLGzV0+SZ1Mx8G0/45tOhzJ5lXMc3UVXRdlF1HP+iYsDPLPPy49/tz1+Te\npSIr0ho6ak5Ms5J8o2q6NImOrHV7XX488ypzTtHXo0s9t6zG7c1G1qz6ubeZiZ3UatXJG3yauSO7\ncvMTEx5tPLb3prPRMVr0HB8vicNxf0+7+kt+LOJwTJyY/Bnz3tH93X36N58cWvq6LSyiyndMSlC7\nmZcymLJiwLosmJVRLKLAtiU7q4lMSCzc3YxJuDMRuAlKAEgAAAlAkAAAAAABKAEgAAAAAJAAAAAA\nAAAAAAAEgAAAAAAAAAAAAAkAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAhIAAACAAAASgAAAAAAEAAAA\nhGzJAImGMwzQDDZjNVuyNgUTVhNGxysZqDVmiu1G5NN2M4waM0+DCaN2cbGcQNGaMZq3JxMJxA1J\nqx2bU4kU09slorWNwa20z02RXHbJbl26QvtFovbHWkxEdJt5y2MOHlr2U1W3jx+1hiw8vSO63lmI\nXRTaEWmtY6snRHO1VpmJ+DjavpSZl2s8b7y4HFcnh0n0gha5ebJN55KRM2mdoiPN6fh+kpwXh0Wy\nRHj5Otp/s5Ps1p62y31+em9aTMYt/OfVfxTiPjZ52naI7fBrI5t66xz5+a1rW7yx0eSL6iZjtEOX\nqNbSletom3lENjh2fbHzbbWt3iVozruc+5ztWubf4M4ybpQ2Oboyrva0Vjza8WdDR4OkXt3n9ldX\nkaePP9VtYqctYhdvt5oivTeCZ2YOxXk6ubqMfV0b9mrljfqlFcq88k7z2U5axeItDa1OPessuC8P\nya7XRWYnwqdbT/ZMilvIu4dpslNdixXja8Y5tt85djZdbDWnGOesRtXFtuw6T27No5Kx2OrKYQlC\nExKJgBnEpiyvdlEgsizKLKollFgWxLKJVRLKJBbEp3VxLKJBnuMWQJEbpBIAAAJAAAABIAAAAAAA\nlAJAAAAAAAAAAAAAASAAAAAAAAAAAAAJAAAABAJABAlAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAA\nAAABAJQAAAAgAABAAI2EoBGyJhkgGPKxmqxAKpownHC+YRMdN5BrTj67R3bOn01o7p01Iv71u89o\nb9a7LfBTfS1vWI2jf12VfQPSW8KX2mas+NC2iv6xMNfJpMnLtEbuuxtMRCtzF55NR5rPps1N/ctP\ny6uHreE6nXZ4pak48X3rT06fB7fNeI33cbX6mI32R/MWu7XF116aDSRhxbRERs8f499bkyZeeKae\nkzE2mdon81/tfxDLGOunwbzlzbx08oaHBvZHJlx48mrvaa94pu04y617576rNGLRRM0397JEd/lu\n9Dw/S3x4qxffo6mm4NjwUiKY4iI9Ib1dHFY6QIaNabbrYrLfrpJtaK1rMzPZb/s+05IpP59OyLeJ\nk7eNfRaOc1ue32I7fGXYpi5Y77M8OGMeOKxHSFsU3Y29deZMzirl6dlVvhLatCjJHeYQv1rXnps1\n8k9/VsW6qLVmZIi1rzitlvFKRvaZ2h6TSaenC9FFY+3brM+sqeG8Prp4+kZ+lvuxPkr1mqm95nfp\nDXM459676a2q1dsV7XietvNno78+CJn1cjX6mOeIm0bR33dfRU5NJjidt9t5afjG/V6JZ7I2QMNh\nnyo2BhsMuVG3wAhMSbbQRAMolnE+iuGUSCyJZRKuGUSCyJZK4llEgyZMYTuCUsYSCQASISAAAlCQ\nAAAAAAEoASCASAAAAAAAAAAAAlACRACQAAAAAAAAAEgCEoASCAAAAAAAAAAAAAAAAAAAAAAABAAA\nAAAAAAAISAIAAAAAAQAAACASgAAAQJAQAAhIDHZhln3do7z0WS18mWsajHjmes7pg3dNi5aRMNqO\nyvDHTpPRaigHZhN4hHRlaVN59JY3zRENLUavaO+yq0iNVlitJ6vNcR1MVi0zO0era1/Ea0rPvbz5\nPM5MWp45qvo2GZrhmfrsnpHpHzTCseEcM/2vrr8Q1Eb4qzy44nziPN63HpYiIiI7LNHoqabBTFii\nIpSNohuVxrKtWMEejPwY9G1FFmHB4mWJn7MdfnIM9JpIx15to5pbUaas/a6rqViI7MxPxqX0UT1r\nO3wVzpbR2hviP5i03Y5s6a879FNtHljydhExCv8AMTPJXBnRZbz0iG5ptFjwe/l96zctMVamTJtE\nyTMibu1VrdTzRMR0j0ed4lr64MVpm0RERvMz5NvX62uOJ69XhOKX1HH9bHDtFvNYnfJeOy0Z2ojX\n6jjnEq6fRUmccTvN/J9H0eKcOnx45neaxEbubwHgOHg+milI3vP2resu3Wu0JQmITsmISDHZHKz2\nJgFc1RMLJhGwK9iIZ7MZgEdgmAEwyiWCdwWRLKJVxKYsC2JTuriWUSDNlEsIlMAySx3SCRCQSIAS\nAAACRACQAAAAAAASIASAAAAAAAAAAAAAAACRACRACQASIAAAAAAAAAAAAAAAAAAAAAAAAQCUAAAA\nAAAAAAIAAAAAAAAQAAAAAACBICBICAAEJAQJQCJcLjuS2ny6fPG/LWdpd1o8T0X07SXx/e7wCdJx\nWa0jmneHQpxPDMdZmJfNtZm49weZrh0/j4o7VtSZ2+Uw0/8A7o49k92vBLc/ntFohFW9PqGXimOI\n6Tu1L8T3eCx6r2t1O3JwvHjifO99v7t/Bwf2l1PXU6rS6eJ8qUm8x+so5TsekzcSjbvs4mt4rzW5\nK2mbT0itesy2cHsvbvqtbmyz5xERWP2jd1tJwrTaONsOKtZ8585+cnDrzmn4Rq+IZObUROHD32n7\nVv8A0ej0uhxaXFGPFSK1j0bkY4jyZRVZVXFGUVWbGwKsk8mObekNrSW3pWf1a2aYjHbm7bNnQ1id\nPW0TvuDdhJEbQABMsLW2R0ZTMQrvfbz2YWzVhpanUxEd0dWkW5c8R5uXxDX1w4pnfr5Q19XxKuOJ\n2neXltVqtVxbV/RdJ715+1bypANfiOu1HENV9C0MTfNeesx2rD1PAeBYuE6aKx72W3W9/WVnBuB4\neF4dqRzZbdb5J72l160WVK02ZxCYhOwI23TsnY2BGxsnYBjsiYZsZBjMMZZSgGEolMsQDdG6NwZ7\npiVe6YkFsSziVMWZRILolMSriWUSCyJTuwhMSDMRCQSI3SAlACRCQAAEoAEoASAAAAAAAAACUACR\nACQAAAAAAAAAAAAASAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAABAAAAAAAAAAAAACBKAAAAAAAQ\nJQAAAhICEbJAYTWJ7wx8KvpC0BV4ceieWGewDHlNmWwCNjZICNhIDmcZredBecdpiY69FXCOLW+i\nUiZidukulmxxlx2paN4mNng+K4+I8Hy2yaTfl37TXetoCPfRxfp1qi3F48ofKMvtvxak8s6LDv61\nrZji9rPaLUf5PC+bfttS0q8q3p9W/wBrRMdpUZuKdN99nzvFqPbTVz7nD8OKs+do2/mW3h4D7Xaq\nZnPrtNpqz35aRaYOHY9Zk4pNt9rR+rl6zi+OnS+WN57Rv1lXp/YrNaYtruL6zNPnGO3hxP6O5w/2\nf0HDuun09Yv55Le9afznqcOvO4tBreMTHu30unnva0bWt8on+70nDuE4OHYYx4Kbesz3tPrMuhGO\nIjpDOKrK9YVpsyiGUQnYGOyUgI2SlAIEmwMWMs9kTAMJYzDOYRMArmGErZhhMArlHmzmGMwDE3Ts\nbAbs4swj5pgFkSziVcM4BZEsolXDKAZwyhjCYBkACQhIAAAAAAAJAAAAAAAAAAAAAAAAAAAShIAA\nAAAAAAJAAAAAAAAAAAAAABAJEAAAAAAAAAAAAAAAIEoBKAAAAAAAAAAAAAAABAlAAAAAAAIAAAAA\nBAkBAkBAkBAlACEgMZjdjbFW8bWrEx8YWANb6Fp+bfwab+vLDKMFK9qxH5L0bAr8OPRPKz2AY7J2\nSbAjYZAI2E7AIEgIEgIEgMdkSy2NgY7MdlmyNoBXsxmFuyNgVTVjNV3KjlBRNTlXTVHKCrlIqt5T\nlBhEMohlFerLlBjEMohMVTEARDKCITsAk2AEgAAAkAAAAAAAAAAAAAAAAAAAAAAAASAAAAAAAAD/\n2Q==`;\n"], + "mappings": "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C,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,kBAAkB;AAAA,EACnB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,iBAAiB;AAAA,EAClB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,kBAAkB;AAAA,EACnB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,iBAAiB;AAAA,EAClB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,kBAAkB;AAAA,EACnB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,kBAAkB;AAAA,EACnB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,kBAAkB;AAAA,EACnB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,kBAAkB;AAAA,EACnB,CAAC,mBAAmB;AAAA,EACpB,CAAC,iBAAiB;AAAA,EAClB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,kBAAkB;AAAA,EACnB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,kBAAkB;AAAA,EACnB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,kBAAkB;AAAA,EACnB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,kBAAkB;AAAA,EACnB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,iBAAiB;AAAA,EAClB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,kBAAkB;AAAA,EACnB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,kBAAkB;AAAA,EACnB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,kBAAkB;AAAA,EACnB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,kBAAkB;AAAA,EACnB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,kBAAkB;AAAA,EACnB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,kBAAkB;AAAA,EACnB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,iBAAiB;AAAA,EAClB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,kBAAkB;AAAA,EACnB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,kBAAkB;AAAA,EACnB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,kBAAkB;AAAA,EACnB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,kBAAkB;AAAA,EACnB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,iBAAiB;AAAA,EAClB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,kBAAkB;AAAA,EACnB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,kBAAkB;AAAA,EACnB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,kBAAkB;AAAA,EACnB,CAAC,kBAAkB;AAAA,EACnB,CAAC,mBAAmB;AAAA,EACpB,CAAC,iBAAiB;AAAA,EAClB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,kBAAkB;AAAA,EACnB,CAAC,kBAAkB;AAAA,EACnB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,kBAAkB;AAAA,EACnB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,kBAAkB;AAAA,EACnB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,kBAAkB;AAAA,EACnB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,kBAAkB;AAAA,EACnB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,kBAAkB;AAAA,EACnB,CAAC,kBAAkB;AAAA,EACnB,CAAC,gBAAgB;AAAA,EACjB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,kBAAkB;AAAA,EACnB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,kBAAkB;AAAA,EACnB,CAAC,iBAAiB;AAAA,EAClB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA,EACpB,CAAC,mBAAmB;AAAA;AAGf,IAAM,SAAS;AAAA,EACpB;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAG;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EACtJ;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAClJ;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAG;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EACrJ;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAG;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAG;AAAA,EAC7I;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAClJ;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAC/I;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EACrJ;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EACpJ;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EACjJ;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAG;AAAA,EAC/I;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAG;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACnJ;AAAA,EAAK;AAAA,EAAI;AAAA,EAAG;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACnJ;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAG;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAC9I;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAG;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EACtJ;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAC/I;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAClJ;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACnJ;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAG;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACrJ;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACpJ;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAG;AAAA,EAClJ;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAC/I;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAC/I;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACjJ;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACnJ;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAC/I;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACjJ;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAG;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACnJ;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACjJ;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACjJ;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACjJ;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAG;AAAA,EAAK;AAAA,EACnJ;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAC/I;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAChJ;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAC/I;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAC/I;AAAA,EAAK;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAChJ;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACjJ;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACjJ;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAC7I;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACjJ;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACjJ;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACjJ;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAClJ;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAC7I;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAG;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EACnJ;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACpJ;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAC/I;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAClJ;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAClJ;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAG;AAAA,EAAI;AAAA,EAAI;AAAA,EAAG;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAChJ;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EACpJ;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EACrJ;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACpJ;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAG;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAG;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAC/I;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACjJ;AAAA,EAAK;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAG;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAC9I;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAG;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EACpJ;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACrJ;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EACpJ;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EACpJ;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAC9I;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAC/I;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAG;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAG;AAAA,EAAI;AAAA,EAClJ;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAG;AAAA,EAC/I;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAC/I;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAC9I;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAChJ;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACjJ;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACjJ;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAChJ;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACjJ;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACjJ;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAC9I;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAG;AAAA,EAAK;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAC/I;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACjJ;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAChJ;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACjJ;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAClJ;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACjJ;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACjJ;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAG;AAAA,EAAK;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAG;A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IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,IACE,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA;AAAA,EAEZ;AAAA,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,OAAO,GAAG,OAAO;AAAA,EACnB,CAAE,OAAO,GAAG,OAAO;AAAA,EACnB,CAAE,OAAO,GAAG,OAAO;AAAA,EACnB,CAAE,OAAO,GAAG,OAAO;AAAA,EACnB,CAAE,OAAO,GAAG,OAAO;AAAA,EACnB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA,EACpB,CAAE,OAAO,IAAI,OAAO;AAAA;;;AD3EtB,IAAI;AACJ,IAAI,QAAkB;AACtB,IAAI,WAAU,OAAO;AAE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AAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA0Jb,IAAM,QAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;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", "names": [] } diff --git a/dist/human.esm.js b/dist/human.esm.js index 200ba0d0..e30212a1 100644 --- a/dist/human.esm.js +++ b/dist/human.esm.js @@ -5,31 +5,28557 @@ author: ' */ -var h8=Object.create,fh=Object.defineProperty,d8=Object.getPrototypeOf,p8=Object.prototype.hasOwnProperty,f8=Object.getOwnPropertyNames,m8=Object.getOwnPropertyDescriptor;var tf=e=>fh(e,"__esModule",{value:!0});var Og=(e,t)=>()=>(t||(t={exports:{}},e(t.exports,t)),t.exports),Jn=(e,t)=>{for(var n in t)fh(e,n,{get:t[n],enumerable:!0})},A8=(e,t,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of f8(t))!p8.call(e,r)&&r!=="default"&&fh(e,r,{get:()=>t[r],enumerable:!(n=m8(t,r))||n.enumerable});return e},mh=e=>A8(tf(fh(e!=null?h8(d8(e)):{},"default",e&&e.__esModule&&"default"in e?{get:()=>e.default,enumerable:!0}:{value:e,enumerable:!0})),e);var zg=(e,t,n)=>{if(!t.has(e))throw TypeError("Cannot "+n)},Qn=(e,t,n)=>(zg(e,t,"read from private field"),n?n.call(e):t.get(e)),rs=(e,t,n,r)=>(zg(e,t,"write to private field"),r?r.call(e,n):t.set(e,n),n);var R6=Og(E6=>{tf(E6);Jn(E6,{MediaPipeFaceMesh:()=>j2,load:()=>xae});var j2=class{constructor(t,n,r,a){this.facePipeline=new U2(t,n,r),this.config=a}async estimateFaces(t,n){let r=await this.facePipeline.predict(t,n),a=[];for(let s of r||[]){if(s.isDisposedInternal)continue;let i=s.coords?s.coords.arraySync():[],o=i.map(h=>[h[0]/t.shape[2],h[1]/t.shape[1],h[2]/this.facePipeline.meshSize]),l={};if(i&&i.length>0)for(let h of Object.keys(qr))l[h]=qr[h].map(d=>i[d]);let c=s.box?[Math.max(0,s.box.startPoint[0]),Math.max(0,s.box.startPoint[1]),Math.min(t.shape[1],s.box.endPoint[0])-Math.max(0,s.box.startPoint[0]),Math.min(t.shape[2],s.box.endPoint[1])-Math.max(0,s.box.startPoint[1])]:0,u=s.box?[s.box.startPoint[0]/t.shape[2],s.box.startPoint[1]/t.shape[1],(s.box.endPoint[0]-s.box.startPoint[0])/t.shape[2],(s.box.endPoint[1]-s.box.startPoint[1])/t.shape[1]]:[];a.push({confidence:s.faceConfidence||s.boxConfidence||0,boxConfidence:s.boxConfidence,faceConfidence:s.faceConfidence,box:c,boxRaw:u,mesh:i,meshRaw:o,annotations:l,image:s.image?s.image.clone():null}),s.coords&&s.coords.dispose(),s.image&&s.image.dispose()}return a}},Mi=[null,null,null];async function xae(e){Mi=await Promise.all([!Mi[0]&&e.face.enabled?v6(e):null,!Mi[1]&&e.face.mesh.enabled?gt(e.face.mesh.modelPath,{fromTFHub:e.face.mesh.modelPath.includes("tfhub.dev")}):null,!Mi[2]&&e.face.iris.enabled?gt(e.face.iris.modelPath,{fromTFHub:e.face.iris.modelPath.includes("tfhub.dev")}):null]);let t=new j2(Mi[0],Mi[1],Mi[2],e);return e.face.mesh.enabled&&e.debug&&Ne(`load model: ${e.face.mesh.modelPath.match(/\/(.*)\./)[1]}`),e.face.iris.enabled&&e.debug&&Ne(`load model: ${e.face.iris.modelPath.match(/\/(.*)\./)[1]}`),t}E6.triangulation=Ri});var v0=Og(X2=>{tf(X2);Jn(X2,{NUM_KEYPOINTS:()=>vae,connectedPartIndices:()=>Iae,partChannels:()=>Sae,partIds:()=>K2,partNames:()=>_ae,poseChain:()=>Nae});var _ae=["nose","leftEye","rightEye","leftEar","rightEar","leftShoulder","rightShoulder","leftElbow","rightElbow","leftWrist","rightWrist","leftHip","rightHip","leftKnee","rightKnee","leftAnkle","rightAnkle"],vae=X2.partNames.length,K2=X2.partNames.reduce((e,t,n)=>(e[t]=n,e),{}),kae=[["leftHip","leftShoulder"],["leftElbow","leftShoulder"],["leftElbow","leftWrist"],["leftHip","leftKnee"],["leftKnee","leftAnkle"],["rightHip","rightShoulder"],["rightElbow","rightShoulder"],["rightElbow","rightWrist"],["rightHip","rightKnee"],["rightKnee","rightAnkle"],["leftShoulder","rightShoulder"],["leftHip","rightHip"]],Iae=kae.map(([e,t])=>[K2[e],K2[t]]),Nae=[["nose","leftEye"],["leftEye","leftEar"],["nose","rightEye"],["rightEye","rightEar"],["nose","leftShoulder"],["leftShoulder","leftElbow"],["leftElbow","leftWrist"],["leftShoulder","leftHip"],["leftHip","leftKnee"],["leftKnee","leftAnkle"],["nose","rightShoulder"],["rightShoulder","rightElbow"],["rightElbow","rightWrist"],["rightShoulder","rightHip"],["rightHip","rightKnee"],["rightKnee","rightAnkle"]],Sae=["left_face","right_face","right_upper_leg_front","right_lower_leg_back","right_upper_leg_back","left_lower_leg_front","left_upper_leg_front","left_upper_leg_back","left_lower_leg_back","right_feet","right_lower_leg_front","left_feet","torso_front","torso_back","right_upper_arm_front","right_upper_arm_back","right_lower_arm_back","left_lower_arm_front","left_upper_arm_front","left_upper_arm_back","left_lower_arm_back","right_hand","right_lower_arm_front","left_hand"]});function Ne(...e){let t=new Date,n=`${t.getHours().toString().padStart(2,"0")}:${t.getMinutes().toString().padStart(2,"0")}:${t.getSeconds().toString().padStart(2,"0")}.${t.getMilliseconds().toString().padStart(3,"0")}`;e&&console.log(n,"Human:",...e)}var Ye=()=>typeof performance!="undefined"?performance.now():parseInt((Number(process.hrtime.bigint())/1e3/1e3).toString());function Gi(...e){let t=n=>n&&typeof n=="object";return e.reduce((n,r)=>(Object.keys(r||{}).forEach(a=>{let s=n[a],i=r[a];Array.isArray(s)&&Array.isArray(i)?n[a]=s.concat(...i):t(s)&&t(i)?n[a]=Gi(s,i):n[a]=i}),n),{})}function Pg(){let e,t;if(typeof navigator!="undefined"){let n=navigator.userAgent.match(/\(([^()]+)\)/g);n&&n[0]&&(e=n[0].match(/\(([^()]+)\)/g)[0].replace(/\(|\)/g,""),t=navigator.userAgent.replace(n[0],""),e[1]&&(t=t.replace(n[1],"")),t=t.replace(/ /g," "))}else typeof process!="undefined"&&(e=`${process.platform} ${process.arch}`,t=`NodeJS ${process.version}`);return{platform:e,agent:t}}var Ah={};Jn(Ah,{Abs:()=>Zi,Acos:()=>Yi,Acosh:()=>Ji,AdadeltaOptimizer:()=>Vd,AdagradOptimizer:()=>Ud,AdamOptimizer:()=>jd,AdamaxOptimizer:()=>Hd,Add:()=>va,AddN:()=>is,All:()=>_h,Any:()=>vh,ArgMax:()=>os,ArgMin:()=>uu,Asin:()=>Qi,Asinh:()=>eo,Atan:()=>to,Atan2:()=>ro,Atanh:()=>no,AvgPool:()=>ls,AvgPool3D:()=>cu,AvgPool3DGrad:()=>Ih,AvgPoolGrad:()=>kh,BackendWasm:()=>S3,BatchMatMul:()=>us,BatchToSpaceND:()=>hu,Bincount:()=>Nh,BroadcastTo:()=>t5,Callback:()=>gv,CallbackList:()=>A7,Cast:()=>cs,Ceil:()=>hs,ClipByValue:()=>ka,Complex:()=>Sh,ComplexAbs:()=>du,Concat:()=>ao,Conv2D:()=>ds,Conv2DBackpropFilter:()=>Th,Conv2DBackpropInput:()=>ps,Conv3D:()=>pu,Conv3DBackpropFilterV2:()=>Ch,Conv3DBackpropInputV2:()=>Eh,Cos:()=>fs,Cosh:()=>so,CropAndResize:()=>io,Cumsum:()=>ms,CustomCallback:()=>g7,DataStorage:()=>gh,DenseBincount:()=>Rh,DepthToSpace:()=>oo,DepthwiseConv2dNative:()=>As,DepthwiseConv2dNativeBackpropFilter:()=>Mh,DepthwiseConv2dNativeBackpropInput:()=>Fh,Diag:()=>$h,Dilation2D:()=>fu,Dilation2DBackpropFilter:()=>Oh,Dilation2DBackpropInput:()=>Dh,ENV:()=>pr,EarlyStopping:()=>wv,Elu:()=>lo,EluGrad:()=>zh,Environment:()=>Qg,Equal:()=>co,Erf:()=>uo,Exp:()=>gs,ExpandDims:()=>ho,Expm1:()=>po,FFT:()=>Ph,Fill:()=>mu,FlipLeftRight:()=>fo,Floor:()=>xs,FloorDiv:()=>ws,FromPixels:()=>Qh,FusedBatchNorm:()=>bs,FusedConv2D:()=>Qs,FusedDepthwiseConv2D:()=>ei,GPGPUContext:()=>lp,GatherNd:()=>Ao,GatherV2:()=>mo,GraphModel:()=>Zv,Greater:()=>yo,GreaterEqual:()=>_s,History:()=>y7,IFFT:()=>Lh,Identity:()=>vs,Imag:()=>Wh,InputSpec:()=>Gt,IsFinite:()=>go,IsInf:()=>xo,IsNan:()=>wo,KernelBackend:()=>iu,LRN:()=>gu,LRNGrad:()=>Vh,LayerVariable:()=>h7,LayersModel:()=>ua,LeakyRelu:()=>ks,Less:()=>bo,LessEqual:()=>_o,LinSpace:()=>Bh,Log:()=>Is,Log1p:()=>vo,LogSoftmax:()=>n5,LogicalAnd:()=>ko,LogicalNot:()=>Au,LogicalOr:()=>yu,MathBackendCPU:()=>Kd,MathBackendWebGL:()=>El,Max:()=>Ns,MaxPool:()=>Ts,MaxPool3D:()=>xu,MaxPool3DGrad:()=>jh,MaxPoolGrad:()=>Uh,MaxPoolWithArgmax:()=>Hh,Maximum:()=>Ss,Mean:()=>Cs,Min:()=>Es,Minimum:()=>Rs,MirrorPad:()=>wu,Mod:()=>Io,MomentumOptimizer:()=>Gd,Multinomial:()=>Gh,Multiply:()=>Ms,Neg:()=>No,NonMaxSuppressionV3:()=>To,NonMaxSuppressionV4:()=>Co,NonMaxSuppressionV5:()=>Eo,NotEqual:()=>So,OP_SCOPE_SUFFIX:()=>p5,OneHot:()=>Fs,OnesLike:()=>Ro,Optimizer:()=>sa,Pack:()=>Mo,PadV2:()=>$s,Pool:()=>yk,Pow:()=>Ds,Prelu:()=>Os,Prod:()=>Fo,RMSPropOptimizer:()=>qd,RNN:()=>Ur,Range:()=>bu,Rank:()=>pf,Real:()=>qh,RealDiv:()=>ys,Reciprocal:()=>$o,Reduction:()=>un,Relu:()=>zs,Relu6:()=>Ls,Reshape:()=>Do,ResizeBilinear:()=>Ps,ResizeBilinearGrad:()=>Kh,ResizeNearestNeighbor:()=>_u,ResizeNearestNeighborGrad:()=>Xh,Reverse:()=>Ws,RotateWithOffset:()=>Ko,Round:()=>Bs,Rsqrt:()=>Vs,SGDOptimizer:()=>tc,ScatterNd:()=>Oo,Select:()=>zo,Selu:()=>Po,Sequential:()=>Wl,Sigmoid:()=>js,Sign:()=>Bo,Sin:()=>Us,Sinh:()=>Wo,Slice:()=>Lo,Softmax:()=>qs,Softplus:()=>Vo,SpaceToBatchND:()=>vu,SparseToDense:()=>Zh,SplitV:()=>Uo,Sqrt:()=>Hs,Square:()=>ku,SquaredDifference:()=>Xs,Step:()=>Na,StridedSlice:()=>jo,Sub:()=>Ks,Sum:()=>Gs,SymbolicTensor:()=>_r,Tan:()=>Ho,Tanh:()=>Zs,Tensor:()=>Ve,TensorBuffer:()=>$t,Tile:()=>Ia,TopK:()=>Go,Transform:()=>Yh,Transpose:()=>Ys,Unique:()=>Jh,Unpack:()=>qo,UnsortedSegmentSum:()=>Iu,Variable:()=>Mu,ZerosLike:()=>Xo,_FusedMatMul:()=>Js,abs:()=>Dt,acos:()=>Lf,acosh:()=>Wf,add:()=>se,addN:()=>Ra,all:()=>hd,any:()=>zu,argMax:()=>Pu,argMin:()=>Bf,asin:()=>Vf,asinh:()=>Uf,atan:()=>jf,atan2:()=>Hf,atanh:()=>Gf,avgPool:()=>Wu,avgPool3d:()=>Kf,backend:()=>X5,backend_util:()=>R,basicLSTMCell:()=>KI,batchNorm:()=>oi,batchNorm2d:()=>J5,batchNorm3d:()=>Q5,batchNorm4d:()=>ex,batchToSpaceND:()=>Bu,bincount:()=>tx,booleanMaskAsync:()=>eC,broadcastTo:()=>Vu,browser:()=>rl,buffer:()=>Le,callbacks:()=>wne,cast:()=>me,ceil:()=>Zf,clipByValue:()=>wn,clone:()=>Er,complex:()=>Sa,concat:()=>rt,concat1d:()=>nx,concat2d:()=>ll,concat3d:()=>rx,concat4d:()=>ax,constraints:()=>P3,conv1d:()=>pd,conv2d:()=>ta,conv2dTranspose:()=>fd,conv3d:()=>Jf,conv3dTranspose:()=>yN,copyRegisteredKernels:()=>wk,cos:()=>Uu,cosh:()=>md,cosineWindow:()=>Im,cumsum:()=>Ad,customGrad:()=>Fr,data:()=>Yv,denseBincount:()=>ix,deprecationWarn:()=>zf,depthToSpace:()=>Qf,depthwiseConv2d:()=>ul,deregisterOp:()=>_ne,device_util:()=>$u,diag:()=>IN,dilation2d:()=>em,disableDeprecationWarnings:()=>uI,dispose:()=>Ie,disposeVariables:()=>cI,div:()=>ge,divNoNan:()=>tm,dot:()=>ox,dropout:()=>Tx,elu:()=>cl,enableDebugMode:()=>lI,enableProdMode:()=>oI,enclosingPowerOfTwo:()=>Cx,engine:()=>Rr,env:()=>J,equal:()=>Fa,erf:()=>nm,exp:()=>Hn,expandDims:()=>Yt,expm1:()=>rm,eye:()=>am,fft:()=>Qu,fill:()=>ju,findBackend:()=>Pf,findBackendFactory:()=>AI,floor:()=>hl,floorDiv:()=>cd,forceHalfFloat:()=>Wb,fused:()=>za,gather:()=>li,gatherND:()=>Sx,gather_util:()=>Ef,getBackend:()=>fI,getGradient:()=>cf,getKernel:()=>ed,getKernelsForBackend:()=>Yo,gpgpu_util:()=>cb,grad:()=>eS,grads:()=>tS,greater:()=>rr,greaterEqual:()=>Da,ifft:()=>Al,imag:()=>yd,image:()=>We,inTopKAsync:()=>hC,initializers:()=>H3,input:()=>a7,io:()=>gn,irfft:()=>Fd,isFinite:()=>lx,isInf:()=>ux,isNaN:()=>cx,keep:()=>Ut,kernel_impls:()=>zr,layers:()=>r7,leakyRelu:()=>Hu,less:()=>gd,lessEqual:()=>ui,linalg:()=>Bx,linspace:()=>hx,loadGraphModel:()=>gt,loadLayersModel:()=>Wte,localResponseNormalization:()=>sm,log:()=>En,log1p:()=>xd,logSigmoid:()=>px,logSoftmax:()=>bd,logSumExp:()=>lm,logicalAnd:()=>ar,logicalNot:()=>Gu,logicalOr:()=>_d,logicalXor:()=>yx,losses:()=>TE,matMul:()=>Ge,math:()=>C5,max:()=>Gn,maxPool:()=>qu,maxPool3d:()=>um,maxPoolWithArgmax:()=>gx,maximum:()=>$r,mean:()=>vt,memory:()=>ud,metrics:()=>mv,min:()=>pl,minimum:()=>fl,mirrorPad:()=>cm,mod:()=>hm,model:()=>Pte,models:()=>Av,moments:()=>vd,movingAverage:()=>rC,mul:()=>P,multiRNNCell:()=>ES,multinomial:()=>xx,neg:()=>_t,nextFrame:()=>Xd,norm:()=>zd,notEqual:()=>hi,oneHot:()=>nl,ones:()=>Dr,onesLike:()=>Rn,op:()=>D,outerProduct:()=>DS,pad:()=>na,pad1d:()=>PS,pad2d:()=>WS,pad3d:()=>VS,pad4d:()=>jS,pool:()=>wx,pow:()=>ra,prelu:()=>Ku,print:()=>v5,prod:()=>kd,profile:()=>xn,rand:()=>QS,randomGamma:()=>rT,randomNormal:()=>bx,randomUniform:()=>ml,range:()=>Id,ready:()=>pI,real:()=>Zu,reciprocal:()=>fm,registerBackend:()=>sl,registerCallbackConstructor:()=>Bte,registerGradient:()=>r5,registerKernel:()=>ti,registerOp:()=>bne,regularizers:()=>yv,relu:()=>Or,relu6:()=>Nd,removeBackend:()=>mI,reshape:()=>H,reverse:()=>Mn,reverse1d:()=>dT,reverse2d:()=>fT,reverse3d:()=>AT,reverse4d:()=>gT,rfft:()=>ec,round:()=>mm,rsqrt:()=>Sd,scalar:()=>_e,scatterND:()=>Nx,scatter_util:()=>Rf,selu:()=>Td,separableConv2d:()=>Am,sequential:()=>Lte,serialization:()=>re,setBackend:()=>dI,setPlatform:()=>yI,setWasmPath:()=>DZ,setWasmPaths:()=>OZ,setWebGLContext:()=>ap,setdiff1dAsync:()=>_x,shared:()=>Cm,sigmoid:()=>Cn,sign:()=>ym,signal:()=>SE,sin:()=>Cd,sinh:()=>Ed,slice:()=>Ee,slice1d:()=>Rd,slice2d:()=>gm,slice3d:()=>Md,slice4d:()=>Yu,slice_util:()=>on,softmax:()=>Ju,softplus:()=>dl,spaceToBatchND:()=>Xu,sparseToDense:()=>km,spectral:()=>NE,split:()=>zt,sqrt:()=>Jt,square:()=>it,squaredDifference:()=>$d,squeeze:()=>Oa,stack:()=>ln,step:()=>yl,stridedSlice:()=>xm,sub:()=>ye,sum:()=>Ce,sumOutType:()=>ad,tan:()=>wm,tanh:()=>ol,tensor:()=>Ar,tensor1d:()=>an,tensor2d:()=>_n,tensor3d:()=>od,tensor4d:()=>jT,tensor5d:()=>HT,tensor6d:()=>GT,tensor_util:()=>fr,test_util:()=>H5,tidy:()=>z,tile:()=>$a,time:()=>hI,topk:()=>bm,train:()=>pi,transpose:()=>nt,truncatedNormal:()=>Dd,unique:()=>Od,unregisterGradient:()=>xk,unregisterKernel:()=>gk,unsortedSegmentSum:()=>_m,unstack:()=>sr,upcastType:()=>nr,util:()=>v,valueAndGrad:()=>nS,valueAndGrads:()=>rS,variable:()=>vx,variableGrads:()=>dx,version:()=>oae,version_converter:()=>bre,version_core:()=>iI,version_cpu:()=>yw,version_layers:()=>XA,version_wasm:()=>C3,version_webgl:()=>Lb,webgl:()=>QP,webgl_util:()=>Pw,where:()=>bn,whereAsync:()=>vm,zeros:()=>Ct,zerosLike:()=>je});var y8=Object.create,yh=Object.defineProperty,g8=Object.getPrototypeOf,x8=Object.prototype.hasOwnProperty,w8=Object.getOwnPropertyNames,b8=Object.getOwnPropertyDescriptor,_8=e=>yh(e,"__esModule",{value:!0}),wt=(e,t)=>()=>(t||(t={exports:{}},e(t.exports,t)),t.exports),Oe=(e,t)=>{for(var n in t)yh(e,n,{get:t[n],enumerable:!0})},v8=(e,t,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of w8(t))!x8.call(e,r)&&r!=="default"&&yh(e,r,{get:()=>t[r],enumerable:!(n=b8(t,r))||n.enumerable});return e},qi=e=>v8(_8(yh(e!=null?y8(g8(e)):{},"default",e&&e.__esModule&&"default"in e?{get:()=>e.default,enumerable:!0}:{value:e,enumerable:!0})),e),k8=wt(()=>{}),I8=wt((e,t)=>{(function(n,r,a){function s(c){var u=this,h=l();u.next=function(){var d=2091639*u.s0+u.c*23283064365386963e-26;return u.s0=u.s1,u.s1=u.s2,u.s2=d-(u.c=d|0)},u.c=1,u.s0=h(" "),u.s1=h(" "),u.s2=h(" "),u.s0-=h(c),u.s0<0&&(u.s0+=1),u.s1-=h(c),u.s1<0&&(u.s1+=1),u.s2-=h(c),u.s2<0&&(u.s2+=1),h=null}function i(c,u){return u.c=c.c,u.s0=c.s0,u.s1=c.s1,u.s2=c.s2,u}function o(c,u){var h=new s(c),d=u&&u.state,p=h.next;return p.int32=function(){return h.next()*4294967296|0},p.double=function(){return p()+(p()*2097152|0)*11102230246251565e-32},p.quick=p,d&&(typeof d=="object"&&i(d,h),p.state=function(){return i(h,{})}),p}function l(){var c=4022871197,u=function(h){h=h.toString();for(var d=0;d>>0,p-=c,p*=c,c=p>>>0,p-=c,c+=p*4294967296}return(c>>>0)*23283064365386963e-26};return u}r&&r.exports?r.exports=o:a&&a.amd?a(function(){return o}):this.alea=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),N8=wt((e,t)=>{(function(n,r,a){function s(l){var c=this,u="";c.x=0,c.y=0,c.z=0,c.w=0,c.next=function(){var d=c.x^c.x<<11;return c.x=c.y,c.y=c.z,c.z=c.w,c.w^=c.w>>>19^d^d>>>8},l===(l|0)?c.x=l:u+=l;for(var h=0;h>>0)/4294967296};return d.double=function(){do var p=u.next()>>>11,f=(u.next()>>>0)/4294967296,m=(p+f)/(1<<21);while(m===0);return m},d.int32=u.next,d.quick=d,h&&(typeof h=="object"&&i(h,u),d.state=function(){return i(u,{})}),d}r&&r.exports?r.exports=o:a&&a.amd?a(function(){return o}):this.xor128=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),S8=wt((e,t)=>{(function(n,r,a){function s(l){var c=this,u="";c.next=function(){var d=c.x^c.x>>>2;return c.x=c.y,c.y=c.z,c.z=c.w,c.w=c.v,(c.d=c.d+362437|0)+(c.v=c.v^c.v<<4^(d^d<<1))|0},c.x=0,c.y=0,c.z=0,c.w=0,c.v=0,l===(l|0)?c.x=l:u+=l;for(var h=0;h>>4),c.next()}function i(l,c){return c.x=l.x,c.y=l.y,c.z=l.z,c.w=l.w,c.v=l.v,c.d=l.d,c}function o(l,c){var u=new s(l),h=c&&c.state,d=function(){return(u.next()>>>0)/4294967296};return d.double=function(){do var p=u.next()>>>11,f=(u.next()>>>0)/4294967296,m=(p+f)/(1<<21);while(m===0);return m},d.int32=u.next,d.quick=d,h&&(typeof h=="object"&&i(h,u),d.state=function(){return i(u,{})}),d}r&&r.exports?r.exports=o:a&&a.amd?a(function(){return o}):this.xorwow=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),T8=wt((e,t)=>{(function(n,r,a){function s(l){var c=this;c.next=function(){var h=c.x,d=c.i,p,f,m;return p=h[d],p^=p>>>7,f=p^p<<24,p=h[d+1&7],f^=p^p>>>10,p=h[d+3&7],f^=p^p>>>3,p=h[d+4&7],f^=p^p<<7,p=h[d+7&7],p=p^p<<13,f^=p^p<<9,h[d]=f,c.i=d+1&7,f};function u(h,d){var p,f,m=[];if(d===(d|0))f=m[0]=d;else for(d=""+d,p=0;p0;--p)h.next()}u(c,l)}function i(l,c){return c.x=l.x.slice(),c.i=l.i,c}function o(l,c){l==null&&(l=+new Date);var u=new s(l),h=c&&c.state,d=function(){return(u.next()>>>0)/4294967296};return d.double=function(){do var p=u.next()>>>11,f=(u.next()>>>0)/4294967296,m=(p+f)/(1<<21);while(m===0);return m},d.int32=u.next,d.quick=d,h&&(h.x&&i(h,u),d.state=function(){return i(u,{})}),d}r&&r.exports?r.exports=o:a&&a.amd?a(function(){return o}):this.xorshift7=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),C8=wt((e,t)=>{(function(n,r,a){function s(l){var c=this;c.next=function(){var h=c.w,d=c.X,p=c.i,f,m;return c.w=h=h+1640531527|0,m=d[p+34&127],f=d[p=p+1&127],m^=m<<13,f^=f<<17,m^=m>>>15,f^=f>>>12,m=d[p]=m^f,c.i=p,m+(h^h>>>16)|0};function u(h,d){var p,f,m,A,y,g=[],w=128;for(d===(d|0)?(f=d,d=null):(d=d+"\0",f=0,w=Math.max(w,d.length)),m=0,A=-32;A>>15,f^=f<<4,f^=f>>>13,A>=0&&(y=y+1640531527|0,p=g[A&127]^=f+y,m=p==0?m+1:0);for(m>=128&&(g[(d&&d.length||0)&127]=-1),m=127,A=4*128;A>0;--A)f=g[m+34&127],p=g[m=m+1&127],f^=f<<13,p^=p<<17,f^=f>>>15,p^=p>>>12,g[m]=f^p;h.w=y,h.X=g,h.i=m}u(c,l)}function i(l,c){return c.i=l.i,c.w=l.w,c.X=l.X.slice(),c}function o(l,c){l==null&&(l=+new Date);var u=new s(l),h=c&&c.state,d=function(){return(u.next()>>>0)/4294967296};return d.double=function(){do var p=u.next()>>>11,f=(u.next()>>>0)/4294967296,m=(p+f)/(1<<21);while(m===0);return m},d.int32=u.next,d.quick=d,h&&(h.X&&i(h,u),d.state=function(){return i(u,{})}),d}r&&r.exports?r.exports=o:a&&a.amd?a(function(){return o}):this.xor4096=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),E8=wt((e,t)=>{(function(n,r,a){function s(l){var c=this,u="";c.next=function(){var d=c.b,p=c.c,f=c.d,m=c.a;return d=d<<25^d>>>7^p,p=p-f|0,f=f<<24^f>>>8^m,m=m-d|0,c.b=d=d<<20^d>>>12^p,c.c=p=p-f|0,c.d=f<<16^p>>>16^m,c.a=m-d|0},c.a=0,c.b=0,c.c=2654435769|0,c.d=1367130551,l===Math.floor(l)?(c.a=l/4294967296|0,c.b=l|0):u+=l;for(var h=0;h>>0)/4294967296};return d.double=function(){do var p=u.next()>>>11,f=(u.next()>>>0)/4294967296,m=(p+f)/(1<<21);while(m===0);return m},d.int32=u.next,d.quick=d,h&&(typeof h=="object"&&i(h,u),d.state=function(){return i(u,{})}),d}r&&r.exports?r.exports=o:a&&a.amd?a(function(){return o}):this.tychei=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),Lg=wt(()=>{}),R8=wt((e,t)=>{(function(n,r){var a=this,s=256,i=6,o=52,l="random",c=r.pow(s,i),u=r.pow(2,o),h=u*2,d=s-1,p;function f(_,x,N){var T=[];x=x==!0?{entropy:!0}:x||{};var C=g(y(x.entropy?[_,b(n)]:_==null?w():_,3),T),F=new m(T),O=function(){for(var W=F.g(i),V=c,U=0;W=h;)W/=2,V/=2,U>>>=1;return(W+U)/V};return O.int32=function(){return F.g(4)|0},O.quick=function(){return F.g(4)/4294967296},O.double=O,g(b(F.S),n),(x.pass||N||function(W,V,U,j){return j&&(j.S&&A(j,F),W.state=function(){return A(F,{})}),U?(r[l]=W,V):W})(O,C,"global"in x?x.global:this==r,x.state)}r["seed"+l]=f;function m(_){var x,N=_.length,T=this,C=0,F=T.i=T.j=0,O=T.S=[];for(N||(_=[N++]);C{var n=I8(),r=N8(),a=S8(),s=T8(),i=C8(),o=E8(),l=R8();l.alea=n,l.xor128=r,l.xorwow=a,l.xorshift7=s,l.xor4096=i,l.tychei=o,t.exports=l}),su=wt(()=>{}),M8=wt(()=>{}),F8=wt(()=>{}),$8=wt((e,t)=>{var n=function(){var r=typeof document!="undefined"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename!="undefined"&&(r=r||__filename),function(a){a=a||{};function s(){return Q.buffer!=Be&&Kt(Q.buffer),pn}function i(){return Q.buffer!=Be&&Kt(Q.buffer),xt}function o(){return Q.buffer!=Be&&Kt(Q.buffer),fn}function l(){return Q.buffer!=Be&&Kt(Q.buffer),Vn}function c(){return Q.buffer!=Be&&Kt(Q.buffer),sn}var u=typeof a!="undefined"?a:{},h,d;u.ready=new Promise(function(I,S){h=I,d=S});var p={},f;for(f in u)u.hasOwnProperty(f)&&(p[f]=u[f]);var m=[],A="./this.program",y=function(I,S){throw S},g=!1,w=!1,b=!1,_=!1;g=typeof window=="object",w=typeof importScripts=="function",b=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",_=!g&&!b&&!w;var x=u.ENVIRONMENT_IS_PTHREAD||!1;x&&(Be=u.buffer);var N="";function T(I){return u.locateFile?u.locateFile(I,N):N+I}var C,F,O,W,V,U;if(b){w?N=su().dirname(N)+"/":N=__dirname+"/",C=function(I,S){return V||(V=require("fs")),U||(U=su()),I=U.normalize(I),V.readFileSync(I,S?null:"utf8")},O=function(I){var S=C(I,!0);return S.buffer||(S=new Uint8Array(S)),pe(S.buffer),S},process.argv.length>1&&(A=process.argv[1].replace(/\\/g,"/")),m=process.argv.slice(2),process.on("uncaughtException",function(I){if(!(I instanceof au))throw I}),process.on("unhandledRejection",Zr),y=function(I){process.exit(I)},u.inspect=function(){return"[Emscripten Module object]"};var j;try{j=M8()}catch(I){throw console.error('The "worker_threads" module is not supported in this node.js build - perhaps a newer version is needed?'),I}global.Worker=j.Worker}else _?(typeof read!="undefined"&&(C=function(I){return read(I)}),O=function(I){var S;return typeof readbuffer=="function"?new Uint8Array(readbuffer(I)):(S=read(I,"binary"),pe(typeof S=="object"),S)},typeof scriptArgs!="undefined"?m=scriptArgs:typeof arguments!="undefined"&&(m=arguments),typeof quit=="function"&&(y=function(I){quit(I)}),typeof print!="undefined"&&(typeof console=="undefined"&&(console={}),console.log=print,console.warn=console.error=typeof printErr!="undefined"?printErr:print)):(g||w)&&(w?N=self.location.href:typeof document!="undefined"&&document.currentScript&&(N=document.currentScript.src),typeof r!="undefined"&&r&&(N=r),N.indexOf("blob:")!==0?N=N.substr(0,N.lastIndexOf("/")+1):N="",b?(C=function(I,S){return V||(V=require("fs")),U||(U=su()),I=U.normalize(I),V.readFileSync(I,S?null:"utf8")},O=function(I){var S=C(I,!0);return S.buffer||(S=new Uint8Array(S)),pe(S.buffer),S}):(C=function(I){var S=new XMLHttpRequest;return S.open("GET",I,!1),S.send(null),S.responseText},w&&(O=function(I){var S=new XMLHttpRequest;return S.open("GET",I,!1),S.responseType="arraybuffer",S.send(null),new Uint8Array(S.response)}),F=function(I,S,L){var q=new XMLHttpRequest;q.open("GET",I,!0),q.responseType="arraybuffer",q.onload=function(){if(q.status==200||q.status==0&&q.response){S(q.response);return}L()},q.onerror=L,q.send(null)}),W=function(I){document.title=I});b&&typeof performance=="undefined"&&(global.performance=F8().performance);var X=u.print||console.log.bind(console),G=u.printErr||console.warn.bind(console);for(f in p)p.hasOwnProperty(f)&&(u[f]=p[f]);p=null,u.arguments&&(m=u.arguments),u.thisProgram&&(A=u.thisProgram),u.quit&&(y=u.quit);var ee=Atomics.load,Y=Atomics.store,ae=Atomics.compareExchange,te;u.wasmBinary&&(te=u.wasmBinary);var oe=u.noExitRuntime||!0;typeof WebAssembly!="object"&&Zr("no native wasm support detected");var Q,he,le=!1,fe;function pe(I,S){I||Zr("Assertion failed: "+S)}function ve(I){var S=u["_"+I];return pe(S,"Cannot call unknown function "+I+", make sure it is exported"),S}function Se(I,S,L,q,de){var ue={string:function(yn){var Hi=0;if(yn!=null&&yn!==0){var Dg=(yn.length<<2)+1;Hi=Vi(Dg),et(yn,Hi,Dg)}return Hi},array:function(yn){var Hi=Vi(yn.length);return Ke(yn,Hi),Hi}};function ce(yn){return S==="string"?Fe(yn):S==="boolean"?Boolean(yn):yn}var we=ve(I),tt=[],Bt=0;if(q)for(var Mt=0;Mt=q);){var ue=I[S++];if(!ue)return de;if(!(ue&128)){de+=String.fromCharCode(ue);continue}var ce=I[S++]&63;if((ue&224)==192){de+=String.fromCharCode((ue&31)<<6|ce);continue}var we=I[S++]&63;if((ue&240)==224?ue=(ue&15)<<12|ce<<6|we:ue=(ue&7)<<18|ce<<12|we<<6|I[S++]&63,ue<65536)de+=String.fromCharCode(ue);else{var tt=ue-65536;de+=String.fromCharCode(55296|tt>>10,56320|tt&1023)}}return de}function Fe(I,S){return I?De(i(),I,S):""}function Qe(I,S,L,q){if(!(q>0))return 0;for(var de=L,ue=L+q-1,ce=0;ce=55296&&we<=57343){var tt=I.charCodeAt(++ce);we=65536+((we&1023)<<10)|tt&1023}if(we<=127){if(L>=ue)break;S[L++]=we}else if(we<=2047){if(L+1>=ue)break;S[L++]=192|we>>6,S[L++]=128|we&63}else if(we<=65535){if(L+2>=ue)break;S[L++]=224|we>>12,S[L++]=128|we>>6&63,S[L++]=128|we&63}else{if(L+3>=ue)break;S[L++]=240|we>>18,S[L++]=128|we>>12&63,S[L++]=128|we>>6&63,S[L++]=128|we&63}}return S[L]=0,L-de}function et(I,S,L){return Qe(I,i(),S,L)}function st(I){for(var S=0,L=0;L=55296&&q<=57343&&(q=65536+((q&1023)<<10)|I.charCodeAt(++L)&1023),q<=127?++S:q<=2047?S+=2:q<=65535?S+=3:S+=4}return S}function Ke(I,S){s().set(I,S)}function ct(I,S){return I%S>0&&(I+=S-I%S),I}var Be,pn,xt,Bn,Xt,fn,Vn,Tn,sn;function Kt(I){Be=I,u.HEAP8=pn=new Int8Array(I),u.HEAP16=Bn=new Int16Array(I),u.HEAP32=fn=new Int32Array(I),u.HEAPU8=xt=new Uint8Array(I),u.HEAPU16=Xt=new Uint16Array(I),u.HEAPU32=Vn=new Uint32Array(I),u.HEAPF32=Tn=new Float32Array(I),u.HEAPF64=sn=new Float64Array(I)}var Sr=u.INITIAL_MEMORY||16777216;if(x)Q=u.wasmMemory,Be=u.buffer;else if(u.wasmMemory)Q=u.wasmMemory;else if(Q=new WebAssembly.Memory({initial:Sr/65536,maximum:2147483648/65536,shared:!0}),!(Q.buffer instanceof SharedArrayBuffer))throw G("requested a shared WebAssembly.Memory but the returned buffer is not a SharedArrayBuffer, indicating that while the browser has SharedArrayBuffer it does not have WebAssembly threads support - you may need to set a flag"),b&&console.log("(on node you may need: --experimental-wasm-threads --experimental-wasm-bulk-memory and also use a recent version)"),Error("bad memory");Q&&(Be=Q.buffer),Sr=Be.byteLength,Kt(Be);var Zn,Yn=[],fa=[],Xr=[],ma=[],$i=[],dr=!1,Hc=!1;x||fa.push({func:function(){oh()}}),x&&(dr=!0);function W0(){if(!x){if(u.preRun)for(typeof u.preRun=="function"&&(u.preRun=[u.preRun]);u.preRun.length;)Xc(u.preRun.shift());Oi(Yn)}}function Gc(){dr=!0,Oi(fa)}function B0(){x||Oi(Xr)}function qc(){x||(Hc=!0)}function mn(){if(!x){if(u.postRun)for(typeof u.postRun=="function"&&(u.postRun=[u.postRun]);u.postRun.length;)V0(u.postRun.shift());Oi($i)}}function Xc(I){Yn.unshift(I)}function V0(I){$i.unshift(I)}var Kr=0,Aa=null,es=null;function U0(I){pe(!x,"addRunDependency cannot be used in a pthread worker"),Kr++,u.monitorRunDependencies&&u.monitorRunDependencies(Kr)}function j0(I){if(Kr--,u.monitorRunDependencies&&u.monitorRunDependencies(Kr),Kr==0&&(Aa!==null&&(clearInterval(Aa),Aa=null),es)){var S=es;es=null,S()}}u.preloadedImages={},u.preloadedAudios={};function Zr(I){u.onAbort&&u.onAbort(I),x&&console.error("Pthread aborting at "+new Error().stack),I+="",G(I),le=!0,fe=1,I="abort("+I+"). Build with -s ASSERTIONS=1 for more info.";var S=new WebAssembly.RuntimeError(I);throw d(S),S}function Kc(I,S){return String.prototype.startsWith?I.startsWith(S):I.indexOf(S)===0}var Di="data:application/octet-stream;base64,";function Zc(I){return Kc(I,Di)}var H0="file://";function Yc(I){return Kc(I,H0)}var An="tfjs-backend-wasm-threaded-simd.wasm";Zc(An)||(An=T(An));function G0(I){try{if(I==An&&te)return new Uint8Array(te);if(O)return O(I);throw"both async and sync fetching of the wasm failed"}catch(S){Zr(S)}}function Jc(){if(!te&&(g||w)){if(typeof fetch=="function"&&!Yc(An))return fetch(An,{credentials:"same-origin"}).then(function(I){if(!I.ok)throw"failed to load wasm binary file at '"+An+"'";return I.arrayBuffer()}).catch(function(){return G0(An)});if(F)return new Promise(function(I,S){F(An,function(L){I(new Uint8Array(L))},S)})}return Promise.resolve().then(function(){return G0(An)})}function q0(){var I={a:z1};function S(ce,we){var tt=ce.exports;if(u.asm=tt,Zn=u.asm.F,he=we,!x){var Bt=ke.unusedWorkers.length;ke.unusedWorkers.forEach(function(Mt){ke.loadWasmModuleToWorker(Mt,function(){--Bt||j0("wasm-instantiate")})})}}x||U0("wasm-instantiate");function L(ce){S(ce.instance,ce.module)}function q(ce){return Jc().then(function(we){return WebAssembly.instantiate(we,I)}).then(ce,function(we){G("failed to asynchronously prepare wasm: "+we),Zr(we)})}function de(){return!te&&typeof WebAssembly.instantiateStreaming=="function"&&!Zc(An)&&!Yc(An)&&typeof fetch=="function"?fetch(An,{credentials:"same-origin"}).then(function(ce){var we=WebAssembly.instantiateStreaming(ce,I);return we.then(L,function(tt){return G("wasm streaming compile failed: "+tt),G("falling back to ArrayBuffer instantiation"),q(L)})}):q(L)}if(u.instantiateWasm)try{var ue=u.instantiateWasm(I,S);return ue}catch(ce){return G("Module.instantiateWasm callback failed with error: "+ce),!1}return de().catch(d),{}}var Qc={8991:function(I,S){setTimeout(function(){Cg(I,S)},0)}};function X0(){ke.initRuntime()}function Oi(I){for(;I.length>0;){var S=I.shift();if(typeof S=="function"){S(u);continue}var L=S.func;typeof L=="number"?S.arg===void 0?Zn.get(L)():Zn.get(L)(S.arg):L(S.arg===void 0?null:S.arg)}}function zi(I,S){if(I<=0||I>s().length||I&!0||S<0)return-28;if(S==0)return 0;S>=2147483647&&(S=Infinity);var L=Atomics.load(o(),Ui>>2),q=0;if(L==I){var de=Atomics.compareExchange(o(),Ui>>2,L,0);if(de==L&&(--S,q=1,S<=0))return 1}var ue=Atomics.notify(o(),I>>2,S);if(ue>=0)return ue+q;throw"Atomics.notify returned an unexpected value "+ue}u._emscripten_futex_wake=zi;function K0(I){if(x)throw"Internal Error! killThread() can only ever be called from main application thread!";if(!I)throw"Internal Error! Null pthread_ptr in killThread!";o()[I+12>>2]=0;var S=ke.pthreads[I];S.worker.terminate(),ke.freeThreadData(S),ke.runningWorkers.splice(ke.runningWorkers.indexOf(S.worker),1),S.worker.pthread=void 0}function Z0(I){if(x)throw"Internal Error! cancelThread() can only ever be called from main application thread!";if(!I)throw"Internal Error! Null pthread_ptr in cancelThread!";var S=ke.pthreads[I];S.worker.postMessage({cmd:"cancel"})}function Y0(I){if(x)throw"Internal Error! cleanupThread() can only ever be called from main application thread!";if(!I)throw"Internal Error! Null pthread_ptr in cleanupThread!";o()[I+12>>2]=0;var S=ke.pthreads[I];if(S){var L=S.worker;ke.returnWorkerToPool(L)}}var ke={unusedWorkers:[],runningWorkers:[],initMainThreadBlock:function(){for(var I=8,S=0;S>2]=I;var L=I+152;o()[L>>2]=L;for(var q=ns(512),S=0;S<128;++S)l()[q/4+S]=0;Atomics.store(l(),I+100>>2,q),Atomics.store(l(),I+40>>2,I),dh(I,!w,1),Tg(I)},initWorker:function(){},pthreads:{},threadExitHandlers:[],setThreadStatus:function(){},runExitHandlers:function(){for(;ke.threadExitHandlers.length>0;)ke.threadExitHandlers.pop()();x&&Wi()&&Sg()},threadExit:function(I){var S=Wi();S&&(Atomics.store(l(),S+4>>2,I),Atomics.store(l(),S+0>>2,1),Atomics.store(l(),S+56>>2,1),Atomics.store(l(),S+60>>2,0),ke.runExitHandlers(),zi(S+0,2147483647),dh(0,0,0),x&&postMessage({cmd:"exit"}))},threadCancel:function(){ke.runExitHandlers();var I=Wi();Atomics.store(l(),I+4>>2,-1),Atomics.store(l(),I+0>>2,1),zi(I+0,2147483647),dh(0,0,0),postMessage({cmd:"cancelDone"})},terminateAllThreads:function(){for(var I in ke.pthreads){var S=ke.pthreads[I];S&&S.worker&&ke.returnWorkerToPool(S.worker)}ke.pthreads={};for(var L=0;L>2];o()[I.threadInfoStruct+100>>2]=0,nu(S),nu(I.threadInfoStruct)}I.threadInfoStruct=0,I.allocatedOwnStack&&I.stackBase&&nu(I.stackBase),I.stackBase=0,I.worker&&(I.worker.pthread=null)}},returnWorkerToPool:function(I){ke.runWithoutMainThreadQueuedCalls(function(){delete ke.pthreads[I.pthread.threadInfoStruct],ke.unusedWorkers.push(I),ke.runningWorkers.splice(ke.runningWorkers.indexOf(I),1),ke.freeThreadData(I.pthread),I.pthread=void 0})},runWithoutMainThreadQueuedCalls:function(I){o()[$g>>2]=0;try{I()}finally{o()[$g>>2]=1}},receiveObjectTransfer:function(I){},loadWasmModuleToWorker:function(I,S){I.onmessage=function(L){var q=L.data,de=q.cmd;if(I.pthread&&(ke.currentProxiedOperationCallerThread=I.pthread.threadInfoStruct),q.targetThread&&q.targetThread!=Wi()){var ue=ke.pthreads[q.targetThread];ue?ue.worker.postMessage(L.data,q.transferList):console.error('Internal error! Worker sent a message "'+de+'" to target pthread '+q.targetThread+", but that thread no longer exists!"),ke.currentProxiedOperationCallerThread=void 0;return}if(de==="processQueuedMainThreadWork")J1();else if(de==="spawnThread")sh(L.data);else if(de==="cleanupThread")Y0(q.thread);else if(de==="killThread")K0(q.thread);else if(de==="cancelThread")Z0(q.thread);else if(de==="loaded")I.loaded=!0,S&&S(I),I.runPthread&&(I.runPthread(),delete I.runPthread);else if(de==="print")X("Thread "+q.threadId+": "+q.text);else if(de==="printErr")G("Thread "+q.threadId+": "+q.text);else if(de==="alert")alert("Thread "+q.threadId+": "+q.text);else if(de==="exit"){var ce=I.pthread&&Atomics.load(l(),I.pthread.threadInfoStruct+64>>2);ce&&ke.returnWorkerToPool(I)}else if(de==="exitProcess")try{c8(q.returnCode)}catch(we){if(we instanceof au)return;throw we}else de==="cancelDone"?ke.returnWorkerToPool(I):de==="objectTransfer"?ke.receiveObjectTransfer(L.data):L.data.target==="setimmediate"?I.postMessage(L.data):G("worker sent an unknown command "+de);ke.currentProxiedOperationCallerThread=void 0},I.onerror=function(L){G("pthread sent an error! "+L.filename+":"+L.lineno+": "+L.message)},b&&(I.on("message",function(L){I.onmessage({data:L})}),I.on("error",function(L){I.onerror(L)}),I.on("exit",function(L){})),I.postMessage({cmd:"load",urlOrBlob:u.mainScriptUrlOrBlob||r,wasmMemory:Q,wasmModule:he})},allocateUnusedWorker:function(){var I=T("tfjs-backend-wasm-threaded-simd.worker.js");ke.unusedWorkers.push(new Worker(I))},getNewWorker:function(){return ke.unusedWorkers.length==0&&(ke.allocateUnusedWorker(),ke.loadWasmModuleToWorker(ke.unusedWorkers[0])),ke.unusedWorkers.length>0?ke.unusedWorkers.pop():null},busySpinWait:function(I){for(var S=performance.now()+I;performance.now()>2]=I,I}function a1(I,S){if(x)return ya(1,1,I,S)}function s1(I,S){if(I==S)postMessage({cmd:"processQueuedMainThreadWork"});else if(x)postMessage({targetThread:I,cmd:"processThreadQueue"});else{var L=ke.pthreads[I],q=L&&L.worker;if(!q)return;q.postMessage({cmd:"processThreadQueue"})}return 1}function i1(){Zr()}function o1(I,S,L){var q=d1(S,L);return Qc[I].apply(null,q)}function l1(I,S){}function u1(I,S,L){if(I<=0||I>s().length||I&!0)return-28;if(g){if(Atomics.load(o(),I>>2)!=S)return-6;for(var q=performance.now(),de=q+L,ue=Atomics.exchange(o(),Ui>>2,I);;){if(q=performance.now(),q>de)return ue=Atomics.exchange(o(),Ui>>2,0),-73;if(ue=Atomics.exchange(o(),Ui>>2,0),ue==0)break;if(J1(),Atomics.load(o(),I>>2)!=S)return-6;ue=Atomics.exchange(o(),Ui>>2,I)}return 0}else{var ce=Atomics.wait(o(),I>>2,S,L);if(ce==="timed-out")return-73;if(ce==="not-equal")return-6;if(ce==="ok")return 0;throw"Atomics.wait returned an unexpected value "+ce}}function c1(I,S,L){i().copyWithin(I,S,S+L)}function h1(){return b?require("os").cpus().length:navigator.hardwareConcurrency}function ya(I,S){for(var L=arguments.length-2,q=ru(),de=L,ue=Vi(de*8),ce=ue>>3,we=0;we>=2;L=i()[I++];){var q=L<105;q&&S&1&&S++,Yl.push(q?c()[S++>>1]:o()[S]),++S}return Yl}function p1(I,S,L){Zl.length=S;for(var q=L>>3,de=0;de>>16),Kt(Q.buffer),1}catch(S){}}function A1(I){var S=f1();if(I<=S)return!1;var L=2147483648;if(I>L)return!1;for(var q=1;q<=4;q*=2){var de=S*(1+.2/q);de=Math.min(de,I+100663296);var ue=Math.min(L,ct(Math.max(I,de),65536)),ce=m1(ue);if(ce)return!0}return!1}var Pe={inEventHandler:0,removeAllEventListeners:function(){for(var I=Pe.eventHandlers.length-1;I>=0;--I)Pe._removeHandler(I);Pe.eventHandlers=[],Pe.deferredCalls=[]},registerRemoveEventListeners:function(){Pe.removeEventListenersRegistered||(ma.push(Pe.removeAllEventListeners),Pe.removeEventListenersRegistered=!0)},deferredCalls:[],deferCall:function(I,S,L){function q(ce,we){if(ce.length!=we.length)return!1;for(var tt in ce)if(ce[tt]!=we[tt])return!1;return!0}for(var de in Pe.deferredCalls){var ue=Pe.deferredCalls[de];if(ue.targetFunction==I&&q(ue.argsList,L))return}Pe.deferredCalls.push({targetFunction:I,precedence:S,argsList:L}),Pe.deferredCalls.sort(function(ce,we){return ce.precedence>2]=L,o()[ce+4>>2]=q,o()[ce+8>>2]=de,Q1(0,I,637534208,S,q,ce),Bi(ue)},getTargetThreadForEventCallback:function(I){switch(I){case 1:return 0;case 2:return ke.currentProxiedOperationCallerThread;default:return I}},getNodeNameForTarget:function(I){return I?I==window?"#window":I==screen?"#screen":I&&I.nodeName?I.nodeName:"":""},fullscreenEnabled:function(){return document.fullscreenEnabled||document.webkitFullscreenEnabled}};function y1(I){var S=st(I)+1,L=ns(S);return et(I,L,S),L}function g1(I,S,L,q){var de=ru(),ue=Vi(12),ce=0;S&&(ce=y1(S)),o()[ue>>2]=ce,o()[ue+4>>2]=L,o()[ue+8>>2]=q,Q1(0,I,657457152,0,ce,ue),Bi(de)}function x1(I,S,L,q){S=S?Fe(S):"",g1(I,S,L,q)}function w1(I){return I>2?Fe(I):I}var b1=[0,typeof document!="undefined"?document:0,typeof window!="undefined"?window:0];function _1(I){I=w1(I);var S=b1[I]||(typeof document!="undefined"?document.querySelector(I):void 0);return S}function Jl(I){return _1(I)}function eh(I,S,L){var q=Jl(I);if(!q)return-4;if(q.canvasSharedPtr&&(o()[q.canvasSharedPtr>>2]=S,o()[q.canvasSharedPtr+4>>2]=L),q.offscreenCanvas||!q.controlTransferredOffscreen){q.offscreenCanvas&&(q=q.offscreenCanvas);var de=!1;if(q.GLctxObject&&q.GLctxObject.GLctx){var ue=q.GLctxObject.GLctx.getParameter(2978);de=ue[0]===0&&ue[1]===0&&ue[2]===q.width&&ue[3]===q.height}q.width=S,q.height=L,de&&q.GLctxObject.GLctx.viewport(0,0,S,L)}else if(q.canvasSharedPtr){var ce=o()[q.canvasSharedPtr+8>>2];return x1(ce,I,S,L),1}else return-4;return 0}function th(I,S,L){return x?ya(2,1,I,S,L):eh(I,S,L)}function v1(I,S,L){var q=Jl(I);return q?eh(I,S,L):th(I,S,L)}function k1(I){}function I1(I,S){}function N1(I){var S=I.getExtension("ANGLE_instanced_arrays");if(S)return I.vertexAttribDivisor=function(L,q){S.vertexAttribDivisorANGLE(L,q)},I.drawArraysInstanced=function(L,q,de,ue){S.drawArraysInstancedANGLE(L,q,de,ue)},I.drawElementsInstanced=function(L,q,de,ue,ce){S.drawElementsInstancedANGLE(L,q,de,ue,ce)},1}function S1(I){var S=I.getExtension("OES_vertex_array_object");if(S)return I.createVertexArray=function(){return S.createVertexArrayOES()},I.deleteVertexArray=function(L){S.deleteVertexArrayOES(L)},I.bindVertexArray=function(L){S.bindVertexArrayOES(L)},I.isVertexArray=function(L){return S.isVertexArrayOES(L)},1}function T1(I){var S=I.getExtension("WEBGL_draw_buffers");if(S)return I.drawBuffers=function(L,q){S.drawBuffersWEBGL(L,q)},1}function C1(I){return!!(I.multiDrawWebgl=I.getExtension("WEBGL_multi_draw"))}var Je={counter:1,buffers:[],programs:[],framebuffers:[],renderbuffers:[],textures:[],uniforms:[],shaders:[],vaos:[],contexts:{},offscreenCanvases:{},timerQueriesEXT:[],programInfos:{},stringCache:{},unpackAlignment:4,recordError:function(I){Je.lastError||(Je.lastError=I)},getNewId:function(I){for(var S=Je.counter++,L=I.length;L>2]:-1;de+=Fe(o()[L+ue*4>>2],ce<0?void 0:ce)}return de},createContext:function(I,S){var L=I.getContext("webgl",S);if(!L)return 0;var q=Je.registerContext(L,S);return q},registerContext:function(I,S){var L=ns(8);o()[L+4>>2]=Wi();var q={handle:L,attributes:S,version:S.majorVersion,GLctx:I};return I.canvas&&(I.canvas.GLctxObject=q),Je.contexts[L]=q,(typeof S.enableExtensionsByDefault=="undefined"||S.enableExtensionsByDefault)&&Je.initExtensions(q),L},makeContextCurrent:function(I){return Je.currentContext=Je.contexts[I],u.ctx=ga=Je.currentContext&&Je.currentContext.GLctx,!(I&&!ga)},getContext:function(I){return Je.contexts[I]},deleteContext:function(I){Je.currentContext===Je.contexts[I]&&(Je.currentContext=null),typeof Pe=="object"&&Pe.removeAllHandlersOnTarget(Je.contexts[I].GLctx.canvas),Je.contexts[I]&&Je.contexts[I].GLctx.canvas&&(Je.contexts[I].GLctx.canvas.GLctxObject=void 0),nu(Je.contexts[I].handle),Je.contexts[I]=null},initExtensions:function(I){if(I||(I=Je.currentContext),!I.initExtensionsDone){I.initExtensionsDone=!0;var S=I.GLctx;N1(S),S1(S),T1(S),S.disjointTimerQueryExt=S.getExtension("EXT_disjoint_timer_query"),C1(S);var L=S.getSupportedExtensions()||[];L.forEach(function(q){q.indexOf("lose_context")<0&&q.indexOf("debug")<0&&S.getExtension(q)})}},populateUniformTable:function(I){for(var S=Je.programs[I],L=Je.programInfos[I]={uniforms:{},maxUniformLength:0,maxAttributeLength:-1,maxUniformBlockNameLength:-1},q=L.uniforms,de=ga.getProgramParameter(S,35718),ue=0;ue>2,q=o()[L+(24>>2)],de={alpha:!!o()[L+(0>>2)],depth:!!o()[L+(4>>2)],stencil:!!o()[L+(8>>2)],antialias:!!o()[L+(12>>2)],premultipliedAlpha:!!o()[L+(16>>2)],preserveDrawingBuffer:!!o()[L+(20>>2)],powerPreference:E1[q],failIfMajorPerformanceCaveat:!!o()[L+(28>>2)],majorVersion:o()[L+(32>>2)],minorVersion:o()[L+(36>>2)],enableExtensionsByDefault:o()[L+(40>>2)],explicitSwapControl:o()[L+(44>>2)],proxyContextToMainThread:o()[L+(48>>2)],renderViaOffscreenBackBuffer:o()[L+(52>>2)]},ue=Jl(I);if(!ue||de.explicitSwapControl)return 0;var ce=Je.createContext(ue,de);return ce}function M1(I,S){return R1(I,S)}var Pi={mappings:{},buffers:[null,[],[]],printChar:function(I,S){var L=Pi.buffers[I];S===0||S===10?((I===1?X:G)(De(L,0)),L.length=0):L.push(S)},varargs:void 0,get:function(){Pi.varargs+=4;var I=o()[Pi.varargs-4>>2];return I},getStr:function(I){var S=Fe(I);return S},get64:function(I,S){return I}};function nh(I){return x?ya(3,1,I):0}function rh(I,S,L,q,de){if(x)return ya(4,1,I,S,L,q,de)}function ah(I,S,L,q){if(x)return ya(5,1,I,S,L,q);for(var de=0,ue=0;ue>2],we=o()[S+(ue*8+4)>>2],tt=0;tt>2]=de,0}function F1(I){var S=ke.threadExitHandlers.pop();I&&S()}function $1(I,S){ke.threadExitHandlers.push(function(){Zn.get(I)(S)})}function sh(I){if(x)throw"Internal Error! spawnThread() can only ever be called from main application thread!";var S=ke.getNewWorker();if(S.pthread!==void 0)throw"Internal error!";if(!I.pthread_ptr)throw"Internal error, no pthread ptr!";ke.runningWorkers.push(S);for(var L=ns(128*4),q=0;q<128;++q)o()[L+q*4>>2]=0;var de=I.stackBase+I.stackSize,ue=ke.pthreads[I.pthread_ptr]={worker:S,stackBase:I.stackBase,stackSize:I.stackSize,allocatedOwnStack:I.allocatedOwnStack,threadInfoStruct:I.pthread_ptr},ce=ue.threadInfoStruct>>2;Atomics.store(l(),ce+(64>>2),I.detached),Atomics.store(l(),ce+(100>>2),L),Atomics.store(l(),ce+(40>>2),ue.threadInfoStruct),Atomics.store(l(),ce+(80>>2),I.stackSize),Atomics.store(l(),ce+(76>>2),de),Atomics.store(l(),ce+(104>>2),I.stackSize),Atomics.store(l(),ce+(104+8>>2),de),Atomics.store(l(),ce+(104+12>>2),I.detached);var we=Ng(),tt=we+40;Atomics.store(l(),ce+(172>>2),tt),S.pthread=ue;var Bt={cmd:"run",start_routine:I.startRoutine,arg:I.arg,threadInfoStruct:I.pthread_ptr,stackBase:I.stackBase,stackSize:I.stackSize};S.runPthread=function(){Bt.time=performance.now(),S.postMessage(Bt,I.transferList)},S.loaded&&(S.runPthread(),delete S.runPthread)}function D1(I,S,L,q){if(typeof SharedArrayBuffer=="undefined")return G("Current environment does not support SharedArrayBuffer, pthreads are not available!"),6;if(!I)return G("pthread_create called with a null thread pointer!"),28;var de=[],ue=0;if(x&&(de.length===0||ue))return Eg(687865856,I,S,L,q);if(ue)return ue;var ce=0,we=0,tt=0;S&&S!=-1?(ce=o()[S>>2],ce+=81920,we=o()[S+8>>2],tt=o()[S+12>>2]!==0):ce=2097152;var Bt=we==0;Bt?we=Fg(16,ce):(we-=ce,pe(we>0));for(var Mt=ns(228),wa=0;wa<228>>2;++wa)l()[(Mt>>2)+wa]=0;o()[I>>2]=Mt,o()[Mt+12>>2]=Mt;var ji=Mt+152;o()[ji>>2]=ji;var yn={stackBase:we,stackSize:ce,allocatedOwnStack:Bt,detached:tt,startRoutine:L,pthread_ptr:Mt,arg:q,transferList:de};return x?(yn.cmd="spawnThread",postMessage(yn,de)):sh(yn),0}function ih(I){if(x)return ya(6,1,I);switch(I){case 30:return 16384;case 85:var S=2147483648;return S/16384;case 132:case 133:case 12:case 137:case 138:case 15:case 235:case 16:case 17:case 18:case 19:case 20:case 149:case 13:case 10:case 236:case 153:case 9:case 21:case 22:case 159:case 154:case 14:case 77:case 78:case 139:case 82:case 68:case 67:case 164:case 11:case 29:case 47:case 48:case 95:case 52:case 51:case 46:return 200809;case 27:case 246:case 127:case 128:case 23:case 24:case 160:case 161:case 181:case 182:case 242:case 183:case 184:case 243:case 244:case 245:case 165:case 178:case 179:case 49:case 50:case 168:case 169:case 175:case 170:case 171:case 172:case 97:case 76:case 32:case 173:case 35:case 80:case 81:case 79:return-1;case 176:case 177:case 7:case 155:case 8:case 157:case 125:case 126:case 92:case 93:case 129:case 130:case 131:case 94:case 91:return 1;case 74:case 60:case 69:case 70:case 4:return 1024;case 31:case 42:case 72:return 32;case 87:case 26:case 33:return 2147483647;case 34:case 1:return 47839;case 38:case 36:return 99;case 43:case 37:return 2048;case 0:return 2097152;case 3:return 65536;case 28:return 32768;case 44:return 32767;case 75:return 16384;case 39:return 1e3;case 89:return 700;case 71:return 256;case 40:return 255;case 2:return 100;case 180:return 64;case 25:return 20;case 5:return 16;case 6:return 6;case 73:return 4;case 84:return typeof navigator=="object"&&navigator.hardwareConcurrency||1}return r1(28),-1}x||ke.initMainThreadBlock();var ga,O1=[null,a1,th,nh,rh,ah,ih],z1={e:t1,r:n1,x:s1,b:i1,y:o1,j:l1,c:u1,d:zi,f:ts,p:c1,z:h1,u:p1,q:A1,v:v1,i:k1,t:I1,w:M1,m:nh,n:rh,g:ah,o:X0,a:Q||u.wasmMemory,k:F1,l:$1,h:D1,s:ih},kg=q0(),oh=u.___wasm_call_ctors=function(){return(oh=u.___wasm_call_ctors=u.asm.A).apply(null,arguments)},P1=u._init=function(){return(P1=u._init=u.asm.B).apply(null,arguments)},L1=u._register_tensor=function(){return(L1=u._register_tensor=u.asm.C).apply(null,arguments)},W1=u._dispose_data=function(){return(W1=u._dispose_data=u.asm.D).apply(null,arguments)},B1=u._dispose=function(){return(B1=u._dispose=u.asm.E).apply(null,arguments)},V1=u._Abs=function(){return(V1=u._Abs=u.asm.G).apply(null,arguments)},U1=u._Add=function(){return(U1=u._Add=u.asm.H).apply(null,arguments)},j1=u._AddN=function(){return(j1=u._AddN=u.asm.I).apply(null,arguments)},H1=u._ArgMax=function(){return(H1=u._ArgMax=u.asm.J).apply(null,arguments)},G1=u._AvgPool=function(){return(G1=u._AvgPool=u.asm.K).apply(null,arguments)},q1=u._BatchMatMul=function(){return(q1=u._BatchMatMul=u.asm.L).apply(null,arguments)},X1=u._Ceil=function(){return(X1=u._Ceil=u.asm.M).apply(null,arguments)},K1=u._ClipByValue=function(){return(K1=u._ClipByValue=u.asm.N).apply(null,arguments)},Z1=u._Conv2D=function(){return(Z1=u._Conv2D=u.asm.O).apply(null,arguments)},lh=u._Conv2DBackpropInput=function(){return(lh=u._Conv2DBackpropInput=u.asm.P).apply(null,arguments)},uh=u._Cos=function(){return(uh=u._Cos=u.asm.Q).apply(null,arguments)},Ql=u._CropAndResize=function(){return(Ql=u._CropAndResize=u.asm.R).apply(null,arguments)},Li=u._Cumsum=function(){return(Li=u._Cumsum=u.asm.S).apply(null,arguments)},Y1=u._DepthToSpace=function(){return(Y1=u._DepthToSpace=u.asm.T).apply(null,arguments)},eu=u._DepthwiseConv2dNative=function(){return(eu=u._DepthwiseConv2dNative=u.asm.U).apply(null,arguments)},K=u._Equal=function(){return(K=u._Equal=u.asm.V).apply(null,arguments)},ne=u._Exp=function(){return(ne=u._Exp=u.asm.W).apply(null,arguments)},Te=u._FlipLeftRight=function(){return(Te=u._FlipLeftRight=u.asm.X).apply(null,arguments)},Ze=u._Floor=function(){return(Ze=u._Floor=u.asm.Y).apply(null,arguments)},It=u._FloorDiv=function(){return(It=u._FloorDiv=u.asm.Z).apply(null,arguments)},pt=u._FusedBatchNorm=function(){return(pt=u._FusedBatchNorm=u.asm._).apply(null,arguments)},Ue=u._FusedConv2D=function(){return(Ue=u._FusedConv2D=u.asm.$).apply(null,arguments)},He=u._FusedDepthwiseConv2D=function(){return(He=u._FusedDepthwiseConv2D=u.asm.aa).apply(null,arguments)},Zt=u._Gather=function(){return(Zt=u._Gather=u.asm.ba).apply(null,arguments)},Yr=u._GatherNd=function(){return(Yr=u._GatherNd=u.asm.ca).apply(null,arguments)},Jr=u._Greater=function(){return(Jr=u._Greater=u.asm.da).apply(null,arguments)},ch=u._GreaterEqual=function(){return(ch=u._GreaterEqual=u.asm.ea).apply(null,arguments)},tu=u._LeakyRelu=function(){return(tu=u._LeakyRelu=u.asm.fa).apply(null,arguments)},Un=u._Less=function(){return(Un=u._Less=u.asm.ga).apply(null,arguments)},xa=u._LessEqual=function(){return(xa=u._LessEqual=u.asm.ha).apply(null,arguments)},hh=u._Log=function(){return(hh=u._Log=u.asm.ia).apply(null,arguments)},x4=u._LogicalAnd=function(){return(x4=u._LogicalAnd=u.asm.ja).apply(null,arguments)},w4=u._Max=function(){return(w4=u._Max=u.asm.ka).apply(null,arguments)},b4=u._MaxPool=function(){return(b4=u._MaxPool=u.asm.la).apply(null,arguments)},_4=u._Maximum=function(){return(_4=u._Maximum=u.asm.ma).apply(null,arguments)},v4=u._Mean=function(){return(v4=u._Mean=u.asm.na).apply(null,arguments)},k4=u._Min=function(){return(k4=u._Min=u.asm.oa).apply(null,arguments)},I4=u._Minimum=function(){return(I4=u._Minimum=u.asm.pa).apply(null,arguments)},N4=u._Multiply=function(){return(N4=u._Multiply=u.asm.qa).apply(null,arguments)},S4=u._Neg=function(){return(S4=u._Neg=u.asm.ra).apply(null,arguments)},T4=u._NonMaxSuppressionV3=function(){return(T4=u._NonMaxSuppressionV3=u.asm.sa).apply(null,arguments)},C4=u._NonMaxSuppressionV4=function(){return(C4=u._NonMaxSuppressionV4=u.asm.ta).apply(null,arguments)},E4=u._NonMaxSuppressionV5=function(){return(E4=u._NonMaxSuppressionV5=u.asm.ua).apply(null,arguments)},R4=u._NotEqual=function(){return(R4=u._NotEqual=u.asm.va).apply(null,arguments)},M4=u._OneHot=function(){return(M4=u._OneHot=u.asm.wa).apply(null,arguments)},F4=u._PadV2=function(){return(F4=u._PadV2=u.asm.xa).apply(null,arguments)},$4=u._Pow=function(){return($4=u._Pow=u.asm.ya).apply(null,arguments)},D4=u._Prelu=function(){return(D4=u._Prelu=u.asm.za).apply(null,arguments)},O4=u._Prod=function(){return(O4=u._Prod=u.asm.Aa).apply(null,arguments)},z4=u._RealDiv=function(){return(z4=u._RealDiv=u.asm.Ba).apply(null,arguments)},P4=u._Relu=function(){return(P4=u._Relu=u.asm.Ca).apply(null,arguments)},L4=u._Relu6=function(){return(L4=u._Relu6=u.asm.Da).apply(null,arguments)},W4=u._ResizeBilinear=function(){return(W4=u._ResizeBilinear=u.asm.Ea).apply(null,arguments)},B4=u._Reverse=function(){return(B4=u._Reverse=u.asm.Fa).apply(null,arguments)},V4=u._RotateWithOffset=function(){return(V4=u._RotateWithOffset=u.asm.Ga).apply(null,arguments)},U4=u._Round=function(){return(U4=u._Round=u.asm.Ha).apply(null,arguments)},j4=u._Rsqrt=function(){return(j4=u._Rsqrt=u.asm.Ia).apply(null,arguments)},H4=u._ScatterNd=function(){return(H4=u._ScatterNd=u.asm.Ja).apply(null,arguments)},G4=u._SelectV2=function(){return(G4=u._SelectV2=u.asm.Ka).apply(null,arguments)},q4=u._Sigmoid=function(){return(q4=u._Sigmoid=u.asm.La).apply(null,arguments)},X4=u._Sin=function(){return(X4=u._Sin=u.asm.Ma).apply(null,arguments)},K4=u._Softmax=function(){return(K4=u._Softmax=u.asm.Na).apply(null,arguments)},Z4=u._Sqrt=function(){return(Z4=u._Sqrt=u.asm.Oa).apply(null,arguments)},Y4=u._Square=function(){return(Y4=u._Square=u.asm.Pa).apply(null,arguments)},J4=u._SquaredDifference=function(){return(J4=u._SquaredDifference=u.asm.Qa).apply(null,arguments)},Q4=u._Step=function(){return(Q4=u._Step=u.asm.Ra).apply(null,arguments)},e8=u._StridedSlice=function(){return(e8=u._StridedSlice=u.asm.Sa).apply(null,arguments)},t8=u._Sub=function(){return(t8=u._Sub=u.asm.Ta).apply(null,arguments)},n8=u._Sum=function(){return(n8=u._Sum=u.asm.Ua).apply(null,arguments)},r8=u._Tanh=function(){return(r8=u._Tanh=u.asm.Va).apply(null,arguments)},a8=u._Tile=function(){return(a8=u._Tile=u.asm.Wa).apply(null,arguments)},s8=u._TopK=function(){return(s8=u._TopK=u.asm.Xa).apply(null,arguments)},i8=u._Transpose=function(){return(i8=u._Transpose=u.asm.Ya).apply(null,arguments)},o8=u.__FusedMatMul=function(){return(o8=u.__FusedMatMul=u.asm.Za).apply(null,arguments)},ns=u._malloc=function(){return(ns=u._malloc=u.asm._a).apply(null,arguments)},nu=u._free=function(){return(nu=u._free=u.asm.$a).apply(null,arguments)},Ig=u.___errno_location=function(){return(Ig=u.___errno_location=u.asm.ab).apply(null,arguments)},Ng=u._emscripten_get_global_libc=function(){return(Ng=u._emscripten_get_global_libc=u.asm.bb).apply(null,arguments)},Wi=u._pthread_self=function(){return(Wi=u._pthread_self=u.asm.cb).apply(null,arguments)},Sg=u.___pthread_tsd_run_dtors=function(){return(Sg=u.___pthread_tsd_run_dtors=u.asm.db).apply(null,arguments)},J1=u._emscripten_main_thread_process_queued_calls=function(){return(J1=u._emscripten_main_thread_process_queued_calls=u.asm.eb).apply(null,arguments)},l8=u._emscripten_current_thread_process_queued_calls=function(){return(l8=u._emscripten_current_thread_process_queued_calls=u.asm.fb).apply(null,arguments)},Tg=u._emscripten_register_main_browser_thread_id=function(){return(Tg=u._emscripten_register_main_browser_thread_id=u.asm.gb).apply(null,arguments)},Cg=u.__emscripten_do_dispatch_to_thread=function(){return(Cg=u.__emscripten_do_dispatch_to_thread=u.asm.hb).apply(null,arguments)},Eg=u._emscripten_sync_run_in_main_thread_4=function(){return(Eg=u._emscripten_sync_run_in_main_thread_4=u.asm.ib).apply(null,arguments)},Rg=u._emscripten_run_in_main_runtime_thread_js=function(){return(Rg=u._emscripten_run_in_main_runtime_thread_js=u.asm.jb).apply(null,arguments)},Q1=u.__emscripten_call_on_thread=function(){return(Q1=u.__emscripten_call_on_thread=u.asm.kb).apply(null,arguments)},u8=u._emscripten_tls_init=function(){return(u8=u._emscripten_tls_init=u.asm.lb).apply(null,arguments)},dh=u.__emscripten_thread_init=function(){return(dh=u.__emscripten_thread_init=u.asm.mb).apply(null,arguments)},ru=u.stackSave=function(){return(ru=u.stackSave=u.asm.nb).apply(null,arguments)},Bi=u.stackRestore=function(){return(Bi=u.stackRestore=u.asm.ob).apply(null,arguments)},Vi=u.stackAlloc=function(){return(Vi=u.stackAlloc=u.asm.pb).apply(null,arguments)},Mg=u._emscripten_stack_set_limits=function(){return(Mg=u._emscripten_stack_set_limits=u.asm.qb).apply(null,arguments)},Fg=u._memalign=function(){return(Fg=u._memalign=u.asm.rb).apply(null,arguments)},$g=u.__emscripten_allow_main_runtime_queued_calls=9880,Ui=u.__emscripten_main_thread_futex=11368;u.cwrap=Me,u.PThread=ke,u.PThread=ke,u.wasmMemory=Q,u.ExitStatus=au;var ph;function au(I){this.name="ExitStatus",this.message="Program terminated with exit("+I+")",this.status=I}es=function I(){ph||ef(),ph||(es=I)};function ef(I){if(I=I||m,Kr>0)return;if(x){h(u),postMessage({cmd:"loaded"});return}if(W0(),Kr>0)return;function S(){ph||(ph=!0,u.calledRun=!0,!le&&(Gc(),B0(),h(u),u.onRuntimeInitialized&&u.onRuntimeInitialized(),mn()))}u.setStatus?(u.setStatus("Running..."),setTimeout(function(){setTimeout(function(){u.setStatus("")},1),S()},1)):S()}u.run=ef;function c8(I,S){if(!(S&&oe&&I===0)){if(!S&&x)throw postMessage({cmd:"exitProcess",returnCode:I}),new au(I);oe||(ke.terminateAllThreads(),fe=I,qc(),u.onExit&&u.onExit(I),le=!0),y(I,new au(I))}}if(u.preInit)for(typeof u.preInit=="function"&&(u.preInit=[u.preInit]);u.preInit.length>0;)u.preInit.pop()();return x&&(oe=!1,ke.initWorker()),ef(),a.ready}}();typeof e=="object"&&typeof t=="object"?t.exports=n:typeof define=="function"&&define.amd?define([],function(){return n}):typeof e=="object"&&(e.WasmBackendModuleThreadedSimd=n)}),D8=wt((e,t)=>{var n=function(){var r=typeof document!="undefined"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename!="undefined"&&(r=r||__filename),function(a){a=a||{};var s=typeof a!="undefined"?a:{},i,o;s.ready=new Promise(function(K,ne){i=K,o=ne});var l={},c;for(c in s)s.hasOwnProperty(c)&&(l[c]=s[c]);var u=[],h="./this.program",d=function(K,ne){throw ne},p=!1,f=!1,m=!1,A=!1;p=typeof window=="object",f=typeof importScripts=="function",m=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",A=!p&&!m&&!f;var y="";function g(K){return s.locateFile?s.locateFile(K,y):y+K}var w,b,_,x,N,T;m?(f?y=su().dirname(y)+"/":y=__dirname+"/",w=function(K,ne){return N||(N=require("fs")),T||(T=su()),K=T.normalize(K),N.readFileSync(K,ne?null:"utf8")},_=function(K){var ne=w(K,!0);return ne.buffer||(ne=new Uint8Array(ne)),X(ne.buffer),ne},process.argv.length>1&&(h=process.argv[1].replace(/\\/g,"/")),u=process.argv.slice(2),process.on("uncaughtException",function(K){if(!(K instanceof Y1))throw K}),process.on("unhandledRejection",dr),d=function(K){process.exit(K)},s.inspect=function(){return"[Emscripten Module object]"}):A?(typeof read!="undefined"&&(w=function(K){return read(K)}),_=function(K){var ne;return typeof readbuffer=="function"?new Uint8Array(readbuffer(K)):(ne=read(K,"binary"),X(typeof ne=="object"),ne)},typeof scriptArgs!="undefined"?u=scriptArgs:typeof arguments!="undefined"&&(u=arguments),typeof quit=="function"&&(d=function(K){quit(K)}),typeof print!="undefined"&&(typeof console=="undefined"&&(console={}),console.log=print,console.warn=console.error=typeof printErr!="undefined"?printErr:print)):(p||f)&&(f?y=self.location.href:typeof document!="undefined"&&document.currentScript&&(y=document.currentScript.src),r&&(y=r),y.indexOf("blob:")!==0?y=y.substr(0,y.lastIndexOf("/")+1):y="",w=function(K){var ne=new XMLHttpRequest;return ne.open("GET",K,!1),ne.send(null),ne.responseText},f&&(_=function(K){var ne=new XMLHttpRequest;return ne.open("GET",K,!1),ne.responseType="arraybuffer",ne.send(null),new Uint8Array(ne.response)}),b=function(K,ne,Te){var Ze=new XMLHttpRequest;Ze.open("GET",K,!0),Ze.responseType="arraybuffer",Ze.onload=function(){if(Ze.status==200||Ze.status==0&&Ze.response){ne(Ze.response);return}Te()},Ze.onerror=Te,Ze.send(null)},x=function(K){document.title=K});var C=s.print||console.log.bind(console),F=s.printErr||console.warn.bind(console);for(c in l)l.hasOwnProperty(c)&&(s[c]=l[c]);l=null,s.arguments&&(u=s.arguments),s.thisProgram&&(h=s.thisProgram),s.quit&&(d=s.quit);var O;s.wasmBinary&&(O=s.wasmBinary);var W=s.noExitRuntime||!0;typeof WebAssembly!="object"&&dr("no native wasm support detected");var V,U=!1,j;function X(K,ne){K||dr("Assertion failed: "+ne)}function G(K){var ne=s["_"+K];return X(ne,"Cannot call unknown function "+K+", make sure it is exported"),ne}function ee(K,ne,Te,Ze,It){var pt={string:function(Un){var xa=0;if(Un!=null&&Un!==0){var hh=(Un.length<<2)+1;xa=Ql(hh),he(Un,xa,hh)}return xa},array:function(Un){var xa=Ql(Un.length);return le(Un,xa),xa}};function Ue(Un){return ne==="string"?oe(Un):ne==="boolean"?Boolean(Un):Un}var He=G(K),Zt=[],Yr=0;if(Ze)for(var Jr=0;Jr=Ze);)++It;if(It-ne>16&&K.subarray&&ae)return ae.decode(K.subarray(ne,It));for(var pt="";ne>10,56320|Yr&1023)}}return pt}function oe(K,ne){return K?te(Se,K,ne):""}function Q(K,ne,Te,Ze){if(!(Ze>0))return 0;for(var It=Te,pt=Te+Ze-1,Ue=0;Ue=55296&&He<=57343){var Zt=K.charCodeAt(++Ue);He=65536+((He&1023)<<10)|Zt&1023}if(He<=127){if(Te>=pt)break;ne[Te++]=He}else if(He<=2047){if(Te+1>=pt)break;ne[Te++]=192|He>>6,ne[Te++]=128|He&63}else if(He<=65535){if(Te+2>=pt)break;ne[Te++]=224|He>>12,ne[Te++]=128|He>>6&63,ne[Te++]=128|He&63}else{if(Te+3>=pt)break;ne[Te++]=240|He>>18,ne[Te++]=128|He>>12&63,ne[Te++]=128|He>>6&63,ne[Te++]=128|He&63}}return ne[Te]=0,Te-It}function he(K,ne,Te){return Q(K,Se,ne,Te)}function le(K,ne){ve.set(K,ne)}function fe(K,ne){return K%ne>0&&(K+=ne-K%ne),K}var pe,ve,Se,Me,De,Fe,Qe,et,st;function Ke(K){pe=K,s.HEAP8=ve=new Int8Array(K),s.HEAP16=Me=new Int16Array(K),s.HEAP32=Fe=new Int32Array(K),s.HEAPU8=Se=new Uint8Array(K),s.HEAPU16=De=new Uint16Array(K),s.HEAPU32=Qe=new Uint32Array(K),s.HEAPF32=et=new Float32Array(K),s.HEAPF64=st=new Float64Array(K)}var ct=s.INITIAL_MEMORY||16777216,Be,pn=[],xt=[],Bn=[],Xt=[],fn=!1;xt.push({func:function(){Jc()}});function Vn(){if(s.preRun)for(typeof s.preRun=="function"&&(s.preRun=[s.preRun]);s.preRun.length;)Sr(s.preRun.shift());Aa(pn)}function Tn(){fn=!0,Aa(xt)}function sn(){Aa(Bn)}function Kt(){if(s.postRun)for(typeof s.postRun=="function"&&(s.postRun=[s.postRun]);s.postRun.length;)Zn(s.postRun.shift());Aa(Xt)}function Sr(K){pn.unshift(K)}function Zn(K){Xt.unshift(K)}var Yn=0,fa=null,Xr=null;function ma(K){Yn++,s.monitorRunDependencies&&s.monitorRunDependencies(Yn)}function $i(K){if(Yn--,s.monitorRunDependencies&&s.monitorRunDependencies(Yn),Yn==0&&(fa!==null&&(clearInterval(fa),fa=null),Xr)){var ne=Xr;Xr=null,ne()}}s.preloadedImages={},s.preloadedAudios={};function dr(K){s.onAbort&&s.onAbort(K),K+="",F(K),U=!0,j=1,K="abort("+K+"). Build with -s ASSERTIONS=1 for more info.";var ne=new WebAssembly.RuntimeError(K);throw o(ne),ne}function Hc(K,ne){return String.prototype.startsWith?K.startsWith(ne):K.indexOf(ne)===0}var W0="data:application/octet-stream;base64,";function Gc(K){return Hc(K,W0)}var B0="file://";function qc(K){return Hc(K,B0)}var mn="tfjs-backend-wasm.wasm";Gc(mn)||(mn=g(mn));function Xc(K){try{if(K==mn&&O)return new Uint8Array(O);if(_)return _(K);throw"both async and sync fetching of the wasm failed"}catch(ne){dr(ne)}}function V0(){if(!O&&(p||f)){if(typeof fetch=="function"&&!qc(mn))return fetch(mn,{credentials:"same-origin"}).then(function(K){if(!K.ok)throw"failed to load wasm binary file at '"+mn+"'";return K.arrayBuffer()}).catch(function(){return Xc(mn)});if(b)return new Promise(function(K,ne){b(mn,function(Te){K(new Uint8Array(Te))},ne)})}return Promise.resolve().then(function(){return Xc(mn)})}function Kr(){var K={a:An};function ne(Ue,He){var Zt=Ue.exports;s.asm=Zt,V=s.asm.g,Ke(V.buffer),Be=s.asm.m,$i("wasm-instantiate")}ma("wasm-instantiate");function Te(Ue){ne(Ue.instance)}function Ze(Ue){return V0().then(function(He){return WebAssembly.instantiate(He,K)}).then(Ue,function(He){F("failed to asynchronously prepare wasm: "+He),dr(He)})}function It(){return!O&&typeof WebAssembly.instantiateStreaming=="function"&&!Gc(mn)&&!qc(mn)&&typeof fetch=="function"?fetch(mn,{credentials:"same-origin"}).then(function(Ue){var He=WebAssembly.instantiateStreaming(Ue,K);return He.then(Te,function(Zt){return F("wasm streaming compile failed: "+Zt),F("falling back to ArrayBuffer instantiation"),Ze(Te)})}):Ze(Te)}if(s.instantiateWasm)try{var pt=s.instantiateWasm(K,ne);return pt}catch(Ue){return F("Module.instantiateWasm callback failed with error: "+Ue),!1}return It().catch(o),{}}function Aa(K){for(;K.length>0;){var ne=K.shift();if(typeof ne=="function"){ne(s);continue}var Te=ne.func;typeof Te=="number"?ne.arg===void 0?Be.get(Te)():Be.get(Te)(ne.arg):Te(ne.arg===void 0?null:ne.arg)}}function es(){dr()}function U0(K,ne,Te){Se.copyWithin(K,ne,ne+Te)}function j0(){return Se.length}function Zr(K){try{return V.grow(K-pe.byteLength+65535>>>16),Ke(V.buffer),1}catch(ne){}}function Kc(K){var ne=j0(),Te=2147483648;if(K>Te)return!1;for(var Ze=1;Ze<=4;Ze*=2){var It=ne*(1+.2/Ze);It=Math.min(It,K+100663296);var pt=Math.min(Te,fe(Math.max(K,It),65536)),Ue=Zr(pt);if(Ue)return!0}return!1}var Di={mappings:{},buffers:[null,[],[]],printChar:function(K,ne){var Te=Di.buffers[K];ne===0||ne===10?((K===1?C:F)(te(Te,0)),Te.length=0):Te.push(ne)},varargs:void 0,get:function(){Di.varargs+=4;var K=Fe[Di.varargs-4>>2];return K},getStr:function(K){var ne=oe(K);return ne},get64:function(K,ne){return K}};function Zc(K){return 0}function H0(K,ne,Te,Ze,It){}function Yc(K,ne,Te,Ze){for(var It=0,pt=0;pt>2],He=Fe[ne+(pt*8+4)>>2],Zt=0;Zt>2]=It,0}var An={a:es,d:U0,e:Kc,f:Zc,c:H0,b:Yc},G0=Kr(),Jc=s.___wasm_call_ctors=function(){return(Jc=s.___wasm_call_ctors=s.asm.h).apply(null,arguments)},q0=s._init=function(){return(q0=s._init=s.asm.i).apply(null,arguments)},Qc=s._register_tensor=function(){return(Qc=s._register_tensor=s.asm.j).apply(null,arguments)},X0=s._dispose_data=function(){return(X0=s._dispose_data=s.asm.k).apply(null,arguments)},Oi=s._dispose=function(){return(Oi=s._dispose=s.asm.l).apply(null,arguments)},zi=s._Abs=function(){return(zi=s._Abs=s.asm.n).apply(null,arguments)},K0=s._Add=function(){return(K0=s._Add=s.asm.o).apply(null,arguments)},Z0=s._AddN=function(){return(Z0=s._AddN=s.asm.p).apply(null,arguments)},Y0=s._ArgMax=function(){return(Y0=s._ArgMax=s.asm.q).apply(null,arguments)},ke=s._AvgPool=function(){return(ke=s._AvgPool=s.asm.r).apply(null,arguments)},J0=s._BatchMatMul=function(){return(J0=s._BatchMatMul=s.asm.s).apply(null,arguments)},Q0=s._Ceil=function(){return(Q0=s._Ceil=s.asm.t).apply(null,arguments)},e1=s._ClipByValue=function(){return(e1=s._ClipByValue=s.asm.u).apply(null,arguments)},t1=s._Conv2D=function(){return(t1=s._Conv2D=s.asm.v).apply(null,arguments)},n1=s._Conv2DBackpropInput=function(){return(n1=s._Conv2DBackpropInput=s.asm.w).apply(null,arguments)},ts=s._Cos=function(){return(ts=s._Cos=s.asm.x).apply(null,arguments)},r1=s._CropAndResize=function(){return(r1=s._CropAndResize=s.asm.y).apply(null,arguments)},a1=s._Cumsum=function(){return(a1=s._Cumsum=s.asm.z).apply(null,arguments)},s1=s._DepthToSpace=function(){return(s1=s._DepthToSpace=s.asm.A).apply(null,arguments)},i1=s._DepthwiseConv2dNative=function(){return(i1=s._DepthwiseConv2dNative=s.asm.B).apply(null,arguments)},o1=s._Equal=function(){return(o1=s._Equal=s.asm.C).apply(null,arguments)},l1=s._Exp=function(){return(l1=s._Exp=s.asm.D).apply(null,arguments)},u1=s._FlipLeftRight=function(){return(u1=s._FlipLeftRight=s.asm.E).apply(null,arguments)},c1=s._Floor=function(){return(c1=s._Floor=s.asm.F).apply(null,arguments)},h1=s._FloorDiv=function(){return(h1=s._FloorDiv=s.asm.G).apply(null,arguments)},ya=s._FusedBatchNorm=function(){return(ya=s._FusedBatchNorm=s.asm.H).apply(null,arguments)},Zl=s._FusedConv2D=function(){return(Zl=s._FusedConv2D=s.asm.I).apply(null,arguments)},Yl=s._FusedDepthwiseConv2D=function(){return(Yl=s._FusedDepthwiseConv2D=s.asm.J).apply(null,arguments)},d1=s._Gather=function(){return(d1=s._Gather=s.asm.K).apply(null,arguments)},p1=s._GatherNd=function(){return(p1=s._GatherNd=s.asm.L).apply(null,arguments)},f1=s._Greater=function(){return(f1=s._Greater=s.asm.M).apply(null,arguments)},m1=s._GreaterEqual=function(){return(m1=s._GreaterEqual=s.asm.N).apply(null,arguments)},A1=s._LeakyRelu=function(){return(A1=s._LeakyRelu=s.asm.O).apply(null,arguments)},Pe=s._Less=function(){return(Pe=s._Less=s.asm.P).apply(null,arguments)},y1=s._LessEqual=function(){return(y1=s._LessEqual=s.asm.Q).apply(null,arguments)},g1=s._Log=function(){return(g1=s._Log=s.asm.R).apply(null,arguments)},x1=s._LogicalAnd=function(){return(x1=s._LogicalAnd=s.asm.S).apply(null,arguments)},w1=s._Max=function(){return(w1=s._Max=s.asm.T).apply(null,arguments)},b1=s._MaxPool=function(){return(b1=s._MaxPool=s.asm.U).apply(null,arguments)},_1=s._Maximum=function(){return(_1=s._Maximum=s.asm.V).apply(null,arguments)},Jl=s._Mean=function(){return(Jl=s._Mean=s.asm.W).apply(null,arguments)},eh=s._Min=function(){return(eh=s._Min=s.asm.X).apply(null,arguments)},th=s._Minimum=function(){return(th=s._Minimum=s.asm.Y).apply(null,arguments)},v1=s._Multiply=function(){return(v1=s._Multiply=s.asm.Z).apply(null,arguments)},k1=s._Neg=function(){return(k1=s._Neg=s.asm._).apply(null,arguments)},I1=s._NonMaxSuppressionV3=function(){return(I1=s._NonMaxSuppressionV3=s.asm.$).apply(null,arguments)},N1=s._NonMaxSuppressionV4=function(){return(N1=s._NonMaxSuppressionV4=s.asm.aa).apply(null,arguments)},S1=s._NonMaxSuppressionV5=function(){return(S1=s._NonMaxSuppressionV5=s.asm.ba).apply(null,arguments)},T1=s._NotEqual=function(){return(T1=s._NotEqual=s.asm.ca).apply(null,arguments)},C1=s._OneHot=function(){return(C1=s._OneHot=s.asm.da).apply(null,arguments)},Je=s._PadV2=function(){return(Je=s._PadV2=s.asm.ea).apply(null,arguments)},E1=s._Pow=function(){return(E1=s._Pow=s.asm.fa).apply(null,arguments)},R1=s._Prelu=function(){return(R1=s._Prelu=s.asm.ga).apply(null,arguments)},M1=s._Prod=function(){return(M1=s._Prod=s.asm.ha).apply(null,arguments)},Pi=s._RealDiv=function(){return(Pi=s._RealDiv=s.asm.ia).apply(null,arguments)},nh=s._Relu=function(){return(nh=s._Relu=s.asm.ja).apply(null,arguments)},rh=s._Relu6=function(){return(rh=s._Relu6=s.asm.ka).apply(null,arguments)},ah=s._ResizeBilinear=function(){return(ah=s._ResizeBilinear=s.asm.la).apply(null,arguments)},F1=s._Reverse=function(){return(F1=s._Reverse=s.asm.ma).apply(null,arguments)},$1=s._RotateWithOffset=function(){return($1=s._RotateWithOffset=s.asm.na).apply(null,arguments)},sh=s._Round=function(){return(sh=s._Round=s.asm.oa).apply(null,arguments)},D1=s._Rsqrt=function(){return(D1=s._Rsqrt=s.asm.pa).apply(null,arguments)},ih=s._ScatterNd=function(){return(ih=s._ScatterNd=s.asm.qa).apply(null,arguments)},ga=s._SelectV2=function(){return(ga=s._SelectV2=s.asm.ra).apply(null,arguments)},O1=s._Sigmoid=function(){return(O1=s._Sigmoid=s.asm.sa).apply(null,arguments)},z1=s._Sin=function(){return(z1=s._Sin=s.asm.ta).apply(null,arguments)},kg=s._Softmax=function(){return(kg=s._Softmax=s.asm.ua).apply(null,arguments)},oh=s._Sqrt=function(){return(oh=s._Sqrt=s.asm.va).apply(null,arguments)},P1=s._Square=function(){return(P1=s._Square=s.asm.wa).apply(null,arguments)},L1=s._SquaredDifference=function(){return(L1=s._SquaredDifference=s.asm.xa).apply(null,arguments)},W1=s._Step=function(){return(W1=s._Step=s.asm.ya).apply(null,arguments)},B1=s._StridedSlice=function(){return(B1=s._StridedSlice=s.asm.za).apply(null,arguments)},V1=s._Sub=function(){return(V1=s._Sub=s.asm.Aa).apply(null,arguments)},U1=s._Sum=function(){return(U1=s._Sum=s.asm.Ba).apply(null,arguments)},j1=s._Tanh=function(){return(j1=s._Tanh=s.asm.Ca).apply(null,arguments)},H1=s._Tile=function(){return(H1=s._Tile=s.asm.Da).apply(null,arguments)},G1=s._TopK=function(){return(G1=s._TopK=s.asm.Ea).apply(null,arguments)},q1=s._Transpose=function(){return(q1=s._Transpose=s.asm.Fa).apply(null,arguments)},X1=s.__FusedMatMul=function(){return(X1=s.__FusedMatMul=s.asm.Ga).apply(null,arguments)},K1=s._malloc=function(){return(K1=s._malloc=s.asm.Ha).apply(null,arguments)},Z1=s._free=function(){return(Z1=s._free=s.asm.Ia).apply(null,arguments)},lh=s.stackSave=function(){return(lh=s.stackSave=s.asm.Ja).apply(null,arguments)},uh=s.stackRestore=function(){return(uh=s.stackRestore=s.asm.Ka).apply(null,arguments)},Ql=s.stackAlloc=function(){return(Ql=s.stackAlloc=s.asm.La).apply(null,arguments)};s.cwrap=Y;var Li;function Y1(K){this.name="ExitStatus",this.message="Program terminated with exit("+K+")",this.status=K}Xr=function K(){Li||eu(),Li||(Xr=K)};function eu(K){if(K=K||u,Yn>0||(Vn(),Yn>0))return;function ne(){Li||(Li=!0,s.calledRun=!0,!U&&(Tn(),sn(),i(s),s.onRuntimeInitialized&&s.onRuntimeInitialized(),Kt()))}s.setStatus?(s.setStatus("Running..."),setTimeout(function(){setTimeout(function(){s.setStatus("")},1),ne()},1)):ne()}if(s.run=eu,s.preInit)for(typeof s.preInit=="function"&&(s.preInit=[s.preInit]);s.preInit.length>0;)s.preInit.pop()();return eu(),a.ready}}();typeof e=="object"&&typeof t=="object"?t.exports=n:typeof define=="function"&&define.amd?define([],function(){return n}):typeof e=="object"&&(e.WasmBackendModule=n)}),O8=wt((e,t)=>{(function(n,r,a){function s(c){var u=this,h=l();u.next=function(){var d=2091639*u.s0+u.c*23283064365386963e-26;return u.s0=u.s1,u.s1=u.s2,u.s2=d-(u.c=d|0)},u.c=1,u.s0=h(" "),u.s1=h(" "),u.s2=h(" "),u.s0-=h(c),u.s0<0&&(u.s0+=1),u.s1-=h(c),u.s1<0&&(u.s1+=1),u.s2-=h(c),u.s2<0&&(u.s2+=1),h=null}function i(c,u){return u.c=c.c,u.s0=c.s0,u.s1=c.s1,u.s2=c.s2,u}function o(c,u){var h=new s(c),d=u&&u.state,p=h.next;return p.int32=function(){return h.next()*4294967296|0},p.double=function(){return p()+(p()*2097152|0)*11102230246251565e-32},p.quick=p,d&&(typeof d=="object"&&i(d,h),p.state=function(){return i(h,{})}),p}function l(){var c=4022871197,u=function(h){h=String(h);for(var d=0;d>>0,p-=c,p*=c,c=p>>>0,p-=c,c+=p*4294967296}return(c>>>0)*23283064365386963e-26};return u}r&&r.exports?r.exports=o:a&&a.amd?a(function(){return o}):this.alea=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),z8=wt((e,t)=>{(function(n,r,a){function s(l){var c=this,u="";c.x=0,c.y=0,c.z=0,c.w=0,c.next=function(){var d=c.x^c.x<<11;return c.x=c.y,c.y=c.z,c.z=c.w,c.w^=c.w>>>19^d^d>>>8},l===(l|0)?c.x=l:u+=l;for(var h=0;h>>0)/4294967296};return d.double=function(){do var p=u.next()>>>11,f=(u.next()>>>0)/4294967296,m=(p+f)/(1<<21);while(m===0);return m},d.int32=u.next,d.quick=d,h&&(typeof h=="object"&&i(h,u),d.state=function(){return i(u,{})}),d}r&&r.exports?r.exports=o:a&&a.amd?a(function(){return o}):this.xor128=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),P8=wt((e,t)=>{(function(n,r,a){function s(l){var c=this,u="";c.next=function(){var d=c.x^c.x>>>2;return c.x=c.y,c.y=c.z,c.z=c.w,c.w=c.v,(c.d=c.d+362437|0)+(c.v=c.v^c.v<<4^(d^d<<1))|0},c.x=0,c.y=0,c.z=0,c.w=0,c.v=0,l===(l|0)?c.x=l:u+=l;for(var h=0;h>>4),c.next()}function i(l,c){return c.x=l.x,c.y=l.y,c.z=l.z,c.w=l.w,c.v=l.v,c.d=l.d,c}function o(l,c){var u=new s(l),h=c&&c.state,d=function(){return(u.next()>>>0)/4294967296};return d.double=function(){do var p=u.next()>>>11,f=(u.next()>>>0)/4294967296,m=(p+f)/(1<<21);while(m===0);return m},d.int32=u.next,d.quick=d,h&&(typeof h=="object"&&i(h,u),d.state=function(){return i(u,{})}),d}r&&r.exports?r.exports=o:a&&a.amd?a(function(){return o}):this.xorwow=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),L8=wt((e,t)=>{(function(n,r,a){function s(l){var c=this;c.next=function(){var h=c.x,d=c.i,p,f,m;return p=h[d],p^=p>>>7,f=p^p<<24,p=h[d+1&7],f^=p^p>>>10,p=h[d+3&7],f^=p^p>>>3,p=h[d+4&7],f^=p^p<<7,p=h[d+7&7],p=p^p<<13,f^=p^p<<9,h[d]=f,c.i=d+1&7,f};function u(h,d){var p,f,m=[];if(d===(d|0))f=m[0]=d;else for(d=""+d,p=0;p0;--p)h.next()}u(c,l)}function i(l,c){return c.x=l.x.slice(),c.i=l.i,c}function o(l,c){l==null&&(l=+new Date);var u=new s(l),h=c&&c.state,d=function(){return(u.next()>>>0)/4294967296};return d.double=function(){do var p=u.next()>>>11,f=(u.next()>>>0)/4294967296,m=(p+f)/(1<<21);while(m===0);return m},d.int32=u.next,d.quick=d,h&&(h.x&&i(h,u),d.state=function(){return i(u,{})}),d}r&&r.exports?r.exports=o:a&&a.amd?a(function(){return o}):this.xorshift7=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),W8=wt((e,t)=>{(function(n,r,a){function s(l){var c=this;c.next=function(){var h=c.w,d=c.X,p=c.i,f,m;return c.w=h=h+1640531527|0,m=d[p+34&127],f=d[p=p+1&127],m^=m<<13,f^=f<<17,m^=m>>>15,f^=f>>>12,m=d[p]=m^f,c.i=p,m+(h^h>>>16)|0};function u(h,d){var p,f,m,A,y,g=[],w=128;for(d===(d|0)?(f=d,d=null):(d=d+"\0",f=0,w=Math.max(w,d.length)),m=0,A=-32;A>>15,f^=f<<4,f^=f>>>13,A>=0&&(y=y+1640531527|0,p=g[A&127]^=f+y,m=p==0?m+1:0);for(m>=128&&(g[(d&&d.length||0)&127]=-1),m=127,A=4*128;A>0;--A)f=g[m+34&127],p=g[m=m+1&127],f^=f<<13,p^=p<<17,f^=f>>>15,p^=p>>>12,g[m]=f^p;h.w=y,h.X=g,h.i=m}u(c,l)}function i(l,c){return c.i=l.i,c.w=l.w,c.X=l.X.slice(),c}function o(l,c){l==null&&(l=+new Date);var u=new s(l),h=c&&c.state,d=function(){return(u.next()>>>0)/4294967296};return d.double=function(){do var p=u.next()>>>11,f=(u.next()>>>0)/4294967296,m=(p+f)/(1<<21);while(m===0);return m},d.int32=u.next,d.quick=d,h&&(h.X&&i(h,u),d.state=function(){return i(u,{})}),d}r&&r.exports?r.exports=o:a&&a.amd?a(function(){return o}):this.xor4096=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),B8=wt((e,t)=>{(function(n,r,a){function s(l){var c=this,u="";c.next=function(){var d=c.b,p=c.c,f=c.d,m=c.a;return d=d<<25^d>>>7^p,p=p-f|0,f=f<<24^f>>>8^m,m=m-d|0,c.b=d=d<<20^d>>>12^p,c.c=p=p-f|0,c.d=f<<16^p>>>16^m,c.a=m-d|0},c.a=0,c.b=0,c.c=2654435769|0,c.d=1367130551,l===Math.floor(l)?(c.a=l/4294967296|0,c.b=l|0):u+=l;for(var h=0;h>>0)/4294967296};return d.double=function(){do var p=u.next()>>>11,f=(u.next()>>>0)/4294967296,m=(p+f)/(1<<21);while(m===0);return m},d.int32=u.next,d.quick=d,h&&(typeof h=="object"&&i(h,u),d.state=function(){return i(u,{})}),d}r&&r.exports?r.exports=o:a&&a.amd?a(function(){return o}):this.tychei=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),V8=wt((e,t)=>{(function(n,r,a){var s=256,i=6,o=52,l="random",c=a.pow(s,i),u=a.pow(2,o),h=u*2,d=s-1,p;function f(_,x,N){var T=[];x=x==!0?{entropy:!0}:x||{};var C=g(y(x.entropy?[_,b(r)]:_==null?w():_,3),T),F=new m(T),O=function(){for(var W=F.g(i),V=c,U=0;W=h;)W/=2,V/=2,U>>>=1;return(W+U)/V};return O.int32=function(){return F.g(4)|0},O.quick=function(){return F.g(4)/4294967296},O.double=O,g(b(F.S),r),(x.pass||N||function(W,V,U,j){return j&&(j.S&&A(j,F),W.state=function(){return A(F,{})}),U?(a[l]=W,V):W})(O,C,"global"in x?x.global:this==a,x.state)}function m(_){var x,N=_.length,T=this,C=0,F=T.i=T.j=0,O=T.S=[];for(N||(_=[N++]);C{var n=O8(),r=z8(),a=P8(),s=L8(),i=W8(),o=B8(),l=V8();l.alea=n,l.xor128=r,l.xorwow=a,l.xorshift7=s,l.xor4096=i,l.tychei=o,t.exports=l}),U8=wt(()=>{}),j8="3.3.0",H8="3.3.0",G8="3.3.0",q8="3.3.0",X8="3.3.0",K8=1e-7,Z8=1e-4,gh=class{constructor(e,t){this.backend=e,this.dataMover=t,this.data=new WeakMap,this.dataIdsCount=0}get(e){return this.data.has(e)||this.dataMover.moveData(this.backend,e),this.data.get(e)}set(e,t){this.dataIdsCount++,this.data.set(e,t)}has(e){return this.data.has(e)}delete(e){return this.dataIdsCount--,this.data.delete(e)}numDataIds(){return this.dataIdsCount}},iu=class{refCount(e){return er("refCount")}incRef(e){return er("incRef")}timerAvailable(){return!0}time(e){return er("time")}read(e){return er("read")}readSync(e){return er("readSync")}numDataIds(){return er("numDataIds")}disposeData(e,t){return er("disposeData")}write(e,t,n){return er("write")}move(e,t,n,r,a){return er("move")}memory(){return er("memory")}floatPrecision(){return er("floatPrecision")}epsilon(){return this.floatPrecision()===32?K8:Z8}dispose(){return er("dispose")}};function er(e){throw new Error(`'${e}' not yet implemented or not found in the registry. This kernel may not be supported by the tfjs backend you have chosen`)}function Vg(e){let t=e.length,n=0,r=0;for(;t>0;)r=Math.random()*t|0,t--,n=e[t],e[t]=e[r],e[r]=n}function Y8(e,t){if(e.length!==t.length)throw new Error(`Array sizes must match to be shuffled together First array length was ${e.length}Second array length was ${t.length}`);let n=e.length,r,a,s=0;for(;n>0;)s=Math.random()*n|0,n--,r=e[n],a=t[n],e[n]=e[s],t[n]=t[s],e[s]=r,t[s]=a}function ou(e,t,n){return Math.max(e,Math.min(t,n))}function J8(e){return e%2==0?e:e+1}function Q8(e){let t=0;for(let n=0;nn+` Shapes ${e} and ${t} must match`)}function as(e){M(e!=null,()=>"The input to the tensor constructor must be a non-null value.")}function ss(e,t=[],n=!1){if(t==null&&(t=[]),Array.isArray(e)||rn(e)&&!n)for(let r=0;r0,n){return new Promise((r,a)=>{let s=0,i=()=>{if(e()){r();return}s++;let o=t(s);if(n!=null&&s>=n){a();return}setTimeout(i,o)};i()})}function ok(e,t){let n=1,r=-1;for(let s=0;s=0)n*=e[s];else if(e[s]===-1){if(r!==-1)throw Error(`Shapes can only have 1 implicit size. Found -1 at dim ${r} and dim ${s}`);r=s}else if(e[s]<0)throw Error(`Shapes can not be < 0. Found ${e[s]} at dim ${s}`);if(r===-1){if(t>0&&t!==n)throw Error(`Size(${t}) must match the product of shape ${e}`);return e}if(n===0)throw Error(`Cannot infer the missing size in [${e}] when there are 0 elements`);if(t%n!=0)throw Error(`The implicit shape can't be a fractional number. Got ${t} / ${n}`);let a=e.slice();return a[r]=t/n,a}function tr(e,t){let n=t.length;return e=e==null?t.map((r,a)=>a):[].concat(e),M(e.every(r=>r>=-n&&r`All values in axis param must be in range [-${n}, ${n}) but got axis ${e}`),M(e.every(r=>Vt(r)),()=>`All values in axis param must be integers but got axis ${e}`),e.map(r=>r<0?n+r:r)}function Ug(e,t){let n=[],r=[],a=t!=null&&Array.isArray(t)&&t.length===0,s=t==null||a?null:tr(t,e).sort(),i=0;for(let o=0;oo)&&e[o]===1&&(n.push(e[o]),r.push(o)),s[i]<=o&&i++}e[o]!==1&&(n.push(e[o]),r.push(o))}return{newShape:n,keptDims:r}}function jg(e,t){let n=null;if(e==null||e==="float32")n=new Float32Array(t);else if(e==="int32")n=new Int32Array(t);else if(e==="bool")n=new Uint8Array(t);else throw new Error(`Unknown data type ${e}`);return n}function Hg(e,t){let n=null;if(e==null||e==="float32")n=new Float32Array(t);else if(e==="int32")n=new Int32Array(t);else if(e==="bool")n=new Uint8Array(t);else if(e==="string")n=new Array(t);else throw new Error(`Unknown data type ${e}`);return n}function Gg(e,t){for(let n=0;nt+=n.length),t}function ba(e){return typeof e=="string"||e instanceof String}function Kg(e){return typeof e=="boolean"}function Zg(e){return typeof e=="number"}function xh(e){return Array.isArray(e)?xh(e[0]):e instanceof Float32Array?"float32":e instanceof Int32Array||e instanceof Uint8Array?"int32":Zg(e)?"float32":ba(e)?"string":Kg(e)?"bool":"float32"}function _a(e){return!!(e&&e.constructor&&e.call&&e.apply)}function wh(e,t){for(let n=t;n=0;--r)n[r]=n[r+1]*e[r+1];return n}function Yg(e,t,n){let r=new Array;if(t.length===1){let a=t[0];for(let s=0;so*l);for(let o=0;or*a);if(n===0)return[];if(n!==t.length)throw new Error(`[${e}] does not match the input size ${t.length}.`);return Yg(0,e,t)}function rf(e,t){let n=bh(e,t);for(let r=0;rr*a,1);if(t==null||t==="float32")return Ki(e,new Float32Array(n));if(t==="int32")return Ki(e,new Int32Array(n));if(t==="bool")return Ki(e,new Uint8Array(n));throw new Error(`Unknown data type ${t}`)}function af(e){e.forEach(t=>{M(Number.isInteger(t)&&t>=0,()=>`Tensor must have a shape comprised of positive integers but got shape [${e}].`)})}function ck(e,t,n){if(t===0)return 0;if(t===1)return e[0];let r=e[e.length-1];for(let a=0;a{let[n,r]=t.split(":");this.urlFlags[n]=pk(n,r)})}};function dk(e){let t={};return e.replace(/[?&]([^=?&]+)(?:=([^&]*))?/g,(n,...r)=>(fk(t,r[0],r[1]),r.join("="))),t}function fk(e,t,n){e[decodeURIComponent(t)]=decodeURIComponent(n||"")}function pk(e,t){if(t=t.toLowerCase(),t==="true"||t==="false")return t==="true";if(`${+t}`===t)return+t;throw new Error(`Could not parse value flag value ${t} for flag ${e}.`)}function J(){return pr}var pr=null;function mk(e){pr=e}var of;function e5(){if(of==null){let e;if(typeof window!="undefined")e=window;else if(typeof global!="undefined")e=global;else if(typeof process!="undefined")e=process;else if(typeof self!="undefined")e=self;else throw new Error("Could not find a global object");of=e}return of}function Ak(){let e=e5();return e._tfGlobals==null&&(e._tfGlobals=new Map),e._tfGlobals}function lf(e,t){let n=Ak();if(n.has(e))return n.get(e);{let r=t();return n.set(e,r),n.get(e)}}var Zi="Abs",Yi="Acos",Ji="Acosh",va="Add",is="AddN",_h="All",vh="Any",os="ArgMax",uu="ArgMin",Qi="Asin",eo="Asinh",to="Atan",no="Atanh",ro="Atan2",ls="AvgPool",kh="AvgPoolGrad",cu="AvgPool3D",Ih="AvgPool3DGrad",us="BatchMatMul",hu="BatchToSpaceND",Nh="Bincount",t5="BroadcastTo",cs="Cast",hs="Ceil",ka="ClipByValue",Sh="Complex",du="ComplexAbs",ao="Concat",ds="Conv2D",Th="Conv2DBackpropFilter",ps="Conv2DBackpropInput",pu="Conv3D",Ch="Conv3DBackpropFilterV2",Eh="Conv3DBackpropInputV2",fs="Cos",so="Cosh",ms="Cumsum",io="CropAndResize",Rh="DenseBincount",oo="DepthToSpace",As="DepthwiseConv2dNative",Mh="DepthwiseConv2dNativeBackpropFilter",Fh="DepthwiseConv2dNativeBackpropInput",$h="Diag",fu="Dilation2D",Dh="Dilation2DBackpropInput",Oh="Dilation2DBackpropFilter",ys="RealDiv",lo="Elu",zh="EluGrad",uo="Erf",co="Equal",gs="Exp",ho="ExpandDims",po="Expm1",Ph="FFT",mu="Fill",fo="FlipLeftRight",xs="Floor",ws="FloorDiv",bs="FusedBatchNorm",mo="GatherV2",Ao="GatherNd",yo="Greater",_s="GreaterEqual",vs="Identity",Lh="IFFT",Wh="Imag",go="IsFinite",xo="IsInf",wo="IsNan",ks="LeakyRelu",bo="Less",_o="LessEqual",Bh="LinSpace",Is="Log",vo="Log1p",ko="LogicalAnd",Au="LogicalNot",yu="LogicalOr",n5="LogSoftmax",gu="LRN",Vh="LRNGrad",Ns="Max",Ss="Maximum",Ts="MaxPool",Uh="MaxPoolGrad",xu="MaxPool3D",jh="MaxPool3DGrad",Hh="MaxPoolWithArgmax",Cs="Mean",Es="Min",Rs="Minimum",wu="MirrorPad",Io="Mod",Gh="Multinomial",Ms="Multiply",No="Neg",So="NotEqual",To="NonMaxSuppressionV3",Co="NonMaxSuppressionV4",Eo="NonMaxSuppressionV5",Ro="OnesLike",Fs="OneHot",Mo="Pack",$s="PadV2",yk="Pool",Ds="Pow",Os="Prelu",Fo="Prod",bu="Range",qh="Real",$o="Reciprocal",zs="Relu",Do="Reshape",_u="ResizeNearestNeighbor",Xh="ResizeNearestNeighborGrad",Ps="ResizeBilinear",Kh="ResizeBilinearGrad",Ls="Relu6",Ws="Reverse",Bs="Round",Vs="Rsqrt",Oo="ScatterNd",zo="Select",Po="Selu",Lo="Slice",Us="Sin",Wo="Sinh",Bo="Sign",js="Sigmoid",Vo="Softplus",Hs="Sqrt",Gs="Sum",vu="SpaceToBatchND",Uo="SplitV",qs="Softmax",Xs="SquaredDifference",ku="Square",Ks="Sub",Zh="SparseToDense",jo="StridedSlice",Ho="Tan",Zs="Tanh",Ia="Tile",Go="TopK",Yh="Transform",Ys="Transpose",Jh="Unique",qo="Unpack",Iu="UnsortedSegmentSum",Xo="ZerosLike",Na="Step",Qh="FromPixels",Ko="RotateWithOffset",Js="_FusedMatMul",Qs="FusedConv2D",ei="FusedDepthwiseConv2D",Zo=lf("kernelRegistry",()=>new Map),Nu=lf("gradRegistry",()=>new Map);function ed(e,t){let n=uf(e,t);return Zo.get(n)}function cf(e){return Nu.get(e)}function Yo(e){let t=Zo.entries(),n=[];for(;;){let{done:r,value:a}=t.next();if(r)break;let[s,i]=a,[o]=s.split("_");o===e&&n.push(i)}return n}function ti(e){let{kernelName:t,backendName:n}=e,r=uf(t,n);Zo.has(r)&&console.warn(`The kernel '${t}' for backend '${n}' is already registered`),Zo.set(r,e)}function r5(e){let{kernelName:t}=e;Nu.has(t)&&J().getBool("DEBUG")&&console.warn(`Overriding the gradient for '${t}'`),Nu.set(t,e)}function gk(e,t){let n=uf(e,t);if(!Zo.has(n))throw new Error(`The kernel '${e}' for backend '${t}' is not registered`);Zo.delete(n)}function xk(e){if(!Nu.has(e))throw new Error(`The gradient '${e}' for backend is not registered`);Nu.delete(e)}function wk(e,t){Yo(e).forEach(n=>{let r=Object.assign({},n,{backendName:t});ti(r)})}function uf(e,t){return`${t}_${e}`}var v={};Oe(v,{arraysEqual:()=>Qr,assert:()=>M,assertNonNegativeIntegerDimensions:()=>af,assertNonNull:()=>as,assertShapesMatch:()=>nn,bytesFromStringArray:()=>Xg,bytesPerElement:()=>nf,checkConversionForErrors:()=>Gg,clamp:()=>ou,computeStrides:()=>Xi,createScalarValue:()=>bk,createShuffledIndices:()=>sk,decodeString:()=>nd,distSquared:()=>tk,encodeString:()=>Tu,fetch:()=>_k,flatten:()=>ss,getArrayFromDType:()=>Hg,getTypedArrayFromDType:()=>jg,hasEncodingLoss:()=>lk,indexToLoc:()=>hk,inferDtype:()=>xh,inferFromImplicitShape:()=>ok,isBoolean:()=>Kg,isFunction:()=>_a,isInt:()=>Vt,isNumber:()=>Zg,isPromise:()=>sf,isScalarShape:()=>nk,isString:()=>ba,isTypedArray:()=>rn,isValidDtype:()=>qg,locToIndex:()=>ck,makeOnesTypedArray:()=>rf,makeZerosNestedTypedArray:()=>uk,makeZerosTypedArray:()=>bh,nearestDivisor:()=>wh,nearestLargerEven:()=>J8,now:()=>Su,parseAxisParam:()=>tr,randUniform:()=>ek,repeatedTry:()=>ik,rightPad:()=>lu,shuffle:()=>Vg,shuffleCombo:()=>Y8,sizeFromShape:()=>Ft,sizeToSquarishShape:()=>ak,squeezeShape:()=>Ug,sum:()=>Q8,tanh:()=>rk,toNestedArray:()=>Ki,toTypedArray:()=>td});function bk(e,t){return t==="string"?Tu(e):td([e],t)}function vk(e,t){return e instanceof Float32Array&&t==="float32"||e instanceof Int32Array&&t==="int32"||e instanceof Uint8Array&&t==="bool"}function td(e,t){if(t==="string")throw new Error("Cannot convert a string[] to a TypedArray");if(Array.isArray(e)&&(e=ss(e)),J().getBool("DEBUG")&&Gg(e,t),vk(e,t))return e;if(t==null||t==="float32"||t==="complex64")return new Float32Array(e);if(t==="int32")return new Int32Array(e);if(t==="bool"){let n=new Uint8Array(e.length);for(let r=0;r{r=n()},s,i=Su();if(this.backendTimer.timerAvailable())s=this.backendTimer.time(a);else{a();for(let o of r)o.dataSync();s=Promise.resolve({kernelMs:Su()-i})}if(J().getBool("CHECK_COMPUTATION_FOR_ERRORS"))for(let o=0;o{kk(c,l.dtype,e)})}return{kernelName:e,outputs:r,inputs:t,timeMs:s.then(o=>o.kernelMs),extraInfo:s.then(o=>o.getExtraProfileInfo!=null?o.getExtraProfileInfo():"")}}logKernelProfile(e){let{kernelName:t,outputs:n,timeMs:r,inputs:a,extraInfo:s}=e;n.forEach(i=>{Promise.all([i.data(),r,s]).then(o=>{this.logger.logKernelProfile(t,i,o[0],o[1],a,o[2])})})}};function kk(e,t,n){if(t!=="float32")return!1;for(let r=0;r0?f:""} `}}console.log(`%c${o} %c${i} %c${l}D ${u} %c${c} %c${h} %c${s}`,"font-weight:bold","color:red","color:blue","color: orange","color: green","color: steelblue")}};function Sk(e,t,n){let r={},a={};for(let l=0;lr[m.id]=!0),p=!0,a[c.id]=!0;break}if(p)break}}let s={};s[n.id]=!0;let i={};for(let l=e.length-1;l>=0;l--){let c=e[l],u=c.inputs;for(let h=0;h=0;a--){let s=t[a],i=[];if(s.outputs.forEach(l=>{let c=e[l.id];c!=null?i.push(c):i.push(null)}),s.gradient==null)throw new Error(`Cannot compute gradient: gradient function not found for ${s.kernelName}.`);let o=s.gradient(i);for(let l in s.inputs){if(!(l in o))throw new Error(`Cannot backprop through input ${l}. Available gradients found: ${Object.keys(o)}.`);let c=n(()=>o[l]());if(c.dtype!=="float32")throw new Error(`Error in gradient for op ${s.kernelName}. The gradient of input ${l} must have 'float32' dtype, but has '${c.dtype}'`);let u=s.inputs[l];if(!Qr(c.shape,u.shape))throw new Error(`Error in gradient for op ${s.kernelName}. The gradient of input '${l}' has shape '${c.shape}', which does not match the shape of the input '${u.shape}'`);if(e[u.id]==null)e[u.id]=c;else{let h=e[u.id];e[u.id]=r(h,c),h.dispose()}}}}var a5=20,Cu=3,hf=7;function Ek(e,t,n,r){let a=Xi(t),s=Ck(e,t,n,a),i=t.length,o=rd(e,t,n,a,s),l=["Tensor"];return r&&(l.push(` dtype: ${n}`),l.push(` rank: ${i}`),l.push(` shape: [${t}]`),l.push(" values:")),l.push(o.map(c=>" "+c).join(` -`)),l.join(` -`)}function Ck(e,t,n,r){let a=Ft(t),s=r[r.length-1],i=new Array(s).fill(0),o=t.length,l=n==="complex64"?Ru(e):e;if(o>1)for(let c=0;ca5){let A=Cu*i,y=Array.from(e.slice(0,A)),g=Array.from(e.slice((o-Cu)*i,o*i));return n==="complex64"&&(y=Ru(y),g=Ru(g)),["["+y.map((w,b)=>Eu(w,a[b],n)).join(", ")+", ..., "+g.map((w,b)=>Eu(w,a[o-Cu+b],n)).join(", ")+"]"]}let m=n==="complex64"?Ru(e):Array.from(e);return["["+m.map((A,y)=>Eu(A,a[y],n)).join(", ")+"]"]}let c=t.slice(1),u=r.slice(1),h=r[0]*i,d=[];if(o>a5){for(let m=0;m`Length of values '${r}' does not match the size inferred by the shape '${this.size}'.`)}if(t==="complex64")throw new Error("complex64 dtype TensorBuffers are not supported. Please create a TensorBuffer for the real and imaginary parts separately and call tf.complex(real, imag).");this.values=n||Hg(t,this.size),this.strides=Xi(e)}set(e,...t){t.length===0&&(t=[0]),M(t.length===this.rank,()=>`The number of provided coordinates (${t.length}) must match the rank (${this.rank})`);let n=this.locToIndex(t);this.values[n]=e}get(...e){e.length===0&&(e=[0]);let t=0;for(let r of e){if(r<0||r>=this.shape[t]){let a=`Requested out of range element at ${e}. Buffer shape=${this.shape}`;throw new Error(a)}t++}let n=e[e.length-1];for(let r=0;rnd(n))}catch(n){throw new Error("Failed to decode the string bytes into utf-8. To get the original bytes, call tensor.bytes().")}}return e}dataSync(){this.throwIfDisposed();let e=Tr().readSync(this.dataId);if(this.dtype==="string")try{return e.map(t=>nd(t))}catch(t){throw new Error("Failed to decode the string bytes into utf-8. To get the original bytes, call tensor.bytes().")}return e}async bytes(){this.throwIfDisposed();let e=await Tr().read(this.dataId);return this.dtype==="string"?e:new Uint8Array(e.buffer)}dispose(){this.isDisposed||(Tr().disposeTensor(this),this.isDisposedInternal=!0)}get isDisposed(){return this.isDisposedInternal}throwIfDisposed(){if(this.isDisposed)throw new Error("Tensor is disposed.")}print(e=!1){return Jo.print(this,e)}clone(){return this.throwIfDisposed(),Jo.clone(this)}toString(e=!1){let t=this.dataSync();return Ek(t,this.shape,this.dtype,e)}cast(e){return this.throwIfDisposed(),Jo.cast(this,e)}variable(e=!0,t,n){return this.throwIfDisposed(),Tr().makeVariable(this,e,t,n)}};Object.defineProperty(Ve,Symbol.hasInstance,{value:e=>!!e&&e.data!=null&&e.dataSync!=null&&e.throwIfDisposed!=null});function Z(){return lf("Tensor",()=>Ve)}Z();var Mu=class extends Ve{constructor(e,t,n,r){super(e.shape,e.dtype,e.dataId,r);this.trainable=t,this.name=n}assign(e){if(e.dtype!==this.dtype)throw new Error(`dtype of the new value (${e.dtype}) and previous value (${this.dtype}) must match`);if(!Qr(e.shape,this.shape))throw new Error(`shape of the new value (${e.shape}) and previous value (${this.shape}) must match`);Tr().disposeTensor(this),this.dataId=e.dataId,Tr().incRef(this,null)}dispose(){Tr().disposeVariable(this),this.isDisposedInternal=!0}};Object.defineProperty(Mu,Symbol.hasInstance,{value:e=>e instanceof Ve&&e.assign!=null&&e.assign instanceof Function});var fr={};Oe(fr,{assertTypesMatch:()=>i5,getTensorsInContainer:()=>df,isTensorInList:()=>Dk,makeTypesMatch:()=>bt});var pf;(function(e){e.R0="R0",e.R1="R1",e.R2="R2",e.R3="R3",e.R4="R4",e.R5="R5",e.R6="R6"})(pf||(pf={}));var ff;(function(e){e.float32="float32",e.int32="int32",e.bool="int32",e.complex64="complex64"})(ff||(ff={}));var mf;(function(e){e.float32="float32",e.int32="int32",e.bool="bool",e.complex64="complex64"})(mf||(mf={}));var Af;(function(e){e.float32="float32",e.int32="float32",e.bool="float32",e.complex64="complex64"})(Af||(Af={}));var yf;(function(e){e.float32="complex64",e.int32="complex64",e.bool="complex64",e.complex64="complex64"})(yf||(yf={}));var Ok={float32:Af,int32:ff,bool:mf,complex64:yf};function nr(e,t){if(e==="string"||t==="string"){if(e==="string"&&t==="string")return"string";throw new Error(`Can not upcast ${e} with ${t}`)}return Ok[e][t]}function ad(e){return nr(e,"int32")}function bt(e,t){if(e.dtype===t.dtype)return[e,t];let n=nr(e.dtype,t.dtype);return[e.cast(n),t.cast(n)]}function i5(e,t){M(e.dtype===t.dtype,()=>`The dtypes of the first(${e.dtype}) and second(${t.dtype}) input must match`)}function Dk(e,t){return t.some(n=>n.id===e.id)}function df(e){let t=[],n=new Set;return o5(e,t,n),t}function o5(e,t,n){if(e==null)return;if(e instanceof Ve){t.push(e);return}if(!zk(e))return;let r=e;for(let a in r){let s=r[a];n.has(s)||(n.add(s),o5(s,t,n))}}function zk(e){return Array.isArray(e)||typeof e=="object"}function gf(e){return e.kernelName!=null}var l5=class{constructor(){this.registeredVariables={},this.nextTapeNodeId=0,this.numBytes=0,this.numTensors=0,this.numStringTensors=0,this.numDataBuffers=0,this.gradientDepth=0,this.kernelDepth=0,this.scopeStack=[],this.numDataMovesStack=[],this.nextScopeId=0,this.tensorInfo=new WeakMap,this.profiling=!1,this.activeProfile={newBytes:0,newTensors:0,peakBytes:0,kernels:[],result:null,get kernelNames(){return Array.from(new Set(this.kernels.map(e=>e.name)))}}}dispose(){for(let e in this.registeredVariables)this.registeredVariables[e].dispose()}},Fu=class{constructor(e){this.ENV=e,this.registry={},this.registryFactory={},this.pendingBackendInitId=0,this.state=new l5}async ready(){if(this.pendingBackendInit!=null)return this.pendingBackendInit.then(()=>{});if(this.backendInstance!=null)return;let e=this.getSortedBackends();for(let t=0;t{e.setupFunc!=null&&e.setupFunc(this.backendInstance)})}disposeRegisteredKernels(e){Yo(e).forEach(t=>{t.disposeFunc!=null&&t.disposeFunc(this.registry[e])})}initializeBackend(e){let t=this.registryFactory[e];if(t==null)throw new Error(`Cannot initialize backend ${e}, no registration found.`);try{let n=t.factory();if(n&&!(n instanceof iu)&&typeof n.then=="function"){let r=++this.pendingBackendInitId,a=n.then(s=>r(rthis.registryFactory[t].priority-this.registryFactory[e].priority)}initializeBackendsAndReturnBest(){let e=this.getSortedBackends();for(let t=0;tthis.startScope(n),()=>this.endScope(r),()=>(r=t(),r instanceof Promise&&console.error("Cannot return a Promise inside of tidy."),r))}scopedRun(e,t,n){e();try{let r=n();return t(),r}catch(r){throw t(),r}}nextTensorId(){return Fu.nextTensorId++}nextVariableId(){return Fu.nextVariableId++}clone(e){let t=$.runKernel(vs,{x:e}),n={x:e},r=s=>({x:()=>{let i="float32",o={x:s},l={dtype:i};return $.runKernel(cs,o,l)}}),a=[];return this.addTapeNode(this.state.activeScope.name,n,[t],r,a,{}),t}runKernel(e,t,n){if(ed(e,this.backendName)==null)throw new Error(`Kernel '${e}' not registered for backend '${this.backendName}'`);return this.runKernelFunc({kernelName:e,inputs:t,attrs:n})}shouldCheckForMemLeaks(){return this.ENV.getBool("IS_TEST")}checkKernelForMemLeak(e,t,n){let r=this.backend.numDataIds(),a=0;n.forEach(o=>{a+=o.dtype==="complex64"?3:1});let s=this.state.numDataMovesStack[this.state.numDataMovesStack.length-1],i=r-t-a-s;if(i>0)throw new Error(`Backend '${this.backendName}' has an internal memory leak (${i} data ids) after running '${e}'`)}runKernelFunc(e){let t,n=[],r=this.isTapeOn(),a=this.state.numBytes,s=this.state.numTensors;this.shouldCheckForMemLeaks()&&this.state.numDataMovesStack.push(0);let i;this.backendName==null&&this.backend;let o,l=gf(e)?e.kernelName:this.state.activeScope!=null?this.state.activeScope.name:"";if(gf(e)){let{kernelName:p,inputs:f,attrs:m}=e;this.backendName==null&&this.backend;let A=ed(p,this.backendName);M(A!=null,()=>`Cannot find registered kernel '${p}' for backend '${this.backendName}'`),i=()=>{let y=this.backend.numDataIds();o=A.kernelFunc({inputs:f,attrs:m,backend:this.backend});let g=Array.isArray(o)?o:[o];this.shouldCheckForMemLeaks()&&this.checkKernelForMemLeak(p,y,g);let w=g.map(b=>{if(b.rank!=null)return b;let{dataId:_,shape:x,dtype:N}=b;return this.makeTensorFromDataId(_,x,N)});if(r){let b=this.getTensorsForGradient(p,f,w);n=this.saveTensorsForBackwardMode(b)}return w}}else{let{forwardFunc:p}=e,f=m=>{!r||(n=m.map(A=>this.keep(this.clone(A))))};i=()=>{let m=this.backend.numDataIds();o=this.tidy(()=>p(this.backend,f));let A=Array.isArray(o)?o:[o];return this.shouldCheckForMemLeaks()&&this.checkKernelForMemLeak(l,m,A),A}}let{inputs:c,attrs:u}=e,h=gf(e)?null:e.backwardsFunc,d;return this.scopedRun(()=>this.state.kernelDepth++,()=>this.state.kernelDepth--,()=>{!this.ENV.getBool("DEBUG")&&!this.state.profiling?t=i():(d=this.profiler.profileKernel(l,c,()=>i()),this.ENV.getBool("DEBUG")&&this.profiler.logKernelProfile(d),t=d.outputs)}),r&&this.addTapeNode(l,c,t,h,n,u),this.state.profiling&&this.state.activeProfile.kernels.push({name:l,bytesAdded:this.state.numBytes-a,totalBytesSnapshot:this.state.numBytes,tensorsAdded:this.state.numTensors-s,totalTensorsSnapshot:this.state.numTensors,inputShapes:Object.keys(c).map(p=>c[p]!=null?c[p].shape:null),outputShapes:t.map(p=>p.shape),kernelTimeMs:d.timeMs,extraInfo:d.extraInfo}),Array.isArray(o)?t:t[0]}saveTensorsForBackwardMode(e){return e.map(t=>this.keep(this.clone(t)))}getTensorsForGradient(e,t,n){let r=cf(e);if(r!=null){let a=r.inputsToSave||[],s=r.outputsToSave||[],i;r.saveAllInputs?(M(Array.isArray(t),()=>"saveAllInputs is true, expected inputs to be an array."),i=Object.keys(t).map(l=>t[l])):i=a.map(l=>t[l]);let o=n.filter((l,c)=>s[c]);return i.concat(o)}return[]}makeTensor(e,t,n,r){if(e==null)throw new Error("Values passed to engine.makeTensor() are null");n=n||"float32",r=r||this.backend;let a=e;n==="string"&&ba(e[0])&&(a=e.map(o=>Tu(o)));let s=r.write(a,t,n),i=new Ve(t,n,s,this.nextTensorId());if(this.trackTensor(i,r),n==="string"){let o=this.state.tensorInfo.get(s),l=Xg(a);this.state.numBytes+=l-o.bytes,o.bytes=l}return i}makeTensorFromDataId(e,t,n,r){n=n||"float32";let a=new Ve(t,n,e,this.nextTensorId());return this.trackTensor(a,r),a}makeVariable(e,t=!0,n,r){n=n||this.nextVariableId().toString(),r!=null&&r!==e.dtype&&(e=e.cast(r));let a=new Mu(e,t,n,this.nextTensorId());if(this.state.registeredVariables[a.name]!=null)throw new Error(`Variable with name ${a.name} was already registered`);return this.state.registeredVariables[a.name]=a,this.incRef(a,this.backend),a}trackTensor(e,t){this.state.numTensors++,e.dtype==="string"&&this.state.numStringTensors++;let n=0;e.dtype!=="complex64"&&e.dtype!=="string"&&(n=e.size*nf(e.dtype)),this.state.numBytes+=n,this.state.tensorInfo.has(e.dataId)||(this.state.numDataBuffers++,this.state.tensorInfo.set(e.dataId,{backend:t||this.backend,dtype:e.dtype,shape:e.shape,bytes:n})),e instanceof Mu||this.track(e)}incRef(e,t){this.trackTensor(e,t),this.backend.incRef(e.dataId)}removeDataId(e,t){this.state.tensorInfo.has(e)&&this.state.tensorInfo.get(e).backend===t&&(this.state.tensorInfo.delete(e),this.state.numDataBuffers--)}disposeTensor(e){if(!this.state.tensorInfo.has(e.dataId))return;let t=this.state.tensorInfo.get(e.dataId);if(this.state.numTensors--,e.dtype==="string"&&(this.state.numStringTensors--,this.state.numBytes-=t.bytes),e.dtype!=="complex64"&&e.dtype!=="string"){let n=e.size*nf(e.dtype);this.state.numBytes-=n}t.backend.disposeData(e.dataId)&&this.removeDataId(e.dataId,t.backend)}disposeVariables(){for(let e in this.state.registeredVariables){let t=this.state.registeredVariables[e];this.disposeVariable(t)}}disposeVariable(e){this.disposeTensor(e),this.state.registeredVariables[e.name]!=null&&delete this.state.registeredVariables[e.name]}memory(){let e=this.backend.memory();return e.numTensors=this.state.numTensors,e.numDataBuffers=this.state.numDataBuffers,e.numBytes=this.state.numBytes,this.state.numStringTensors>0&&(e.unreliable=!0,e.reasons==null&&(e.reasons=[]),e.reasons.push("Memory usage by string tensors is approximate (2 bytes per character)")),e}async profile(e){this.state.profiling=!0;let t=this.state.numBytes,n=this.state.numTensors;this.state.activeProfile.kernels=[],this.state.activeProfile.result=await e(),this.state.profiling=!1,this.state.activeProfile.peakBytes=Math.max(...this.state.activeProfile.kernels.map(r=>r.totalBytesSnapshot)),this.state.activeProfile.newBytes=this.state.numBytes-t,this.state.activeProfile.newTensors=this.state.numTensors-n;for(let r of this.state.activeProfile.kernels)r.kernelTimeMs=await r.kernelTimeMs,r.extraInfo=await r.extraInfo;return this.state.activeProfile}isTapeOn(){return this.state.gradientDepth>0&&this.state.kernelDepth===0}addTapeNode(e,t,n,r,a,s){let i={id:this.state.nextTapeNodeId++,kernelName:e,inputs:t,outputs:n,saved:a},o=cf(e);o!=null&&(r=o.gradFunc),r!=null&&(i.gradient=l=>(l=l.map((c,u)=>{if(c==null){let h=n[u],d=bh(h.size,h.dtype);return this.makeTensor(d,h.shape,h.dtype)}return c}),r(l.length>1?l:l[0],a,s))),this.state.activeTape.push(i)}keep(e){return e.kept=!0,e}startTape(){this.state.gradientDepth===0&&(this.state.activeTape=[]),this.state.gradientDepth++}endTape(){this.state.gradientDepth--}startScope(e){let t={track:[],name:"unnamed scope",id:this.state.nextScopeId++};e&&(t.name=e),this.state.scopeStack.push(t),this.state.activeScope=t}endScope(e){let t=df(e),n=new Set(t.map(a=>a.id));for(let a=0;a{!a.kept&&a.scopeId===r.id&&this.track(a)})}gradients(e,t,n,r=!1){if(M(t.length>0,()=>"gradients() received an empty list of xs."),n!=null&&n.dtype!=="float32")throw new Error(`dy must have 'float32' dtype, but has '${n.dtype}'`);let a=this.scopedRun(()=>this.startTape(),()=>this.endTape(),()=>this.tidy("forward",e));M(a instanceof Ve,()=>"The result y returned by f() must be a tensor.");let s=Sk(this.state.activeTape,t,a);if(!r&&s.length===0&&t.length>0)throw new Error("Cannot compute gradient of y=f(x) with respect to x. Make sure that the f you passed encloses all operations that lead from x to y.");return this.tidy("backward",()=>{let i={};i[a.id]=n==null?Pk(a.shape):n,Tk(i,s,l=>this.tidy(l),Lk);let o=t.map(l=>i[l.id]);return this.state.gradientDepth===0&&(this.state.activeTape.forEach(l=>{for(let c of l.saved)c.dispose()}),this.state.activeTape=null),{value:a,grads:o}})}customGrad(e){return M(_a(e),()=>"The f passed in customGrad(f) must be a function."),(...t)=>{M(t.every(i=>i instanceof Ve),()=>"The args passed in customGrad(f)(x1, x2,...) must all be tensors");let n,r={};t.forEach((i,o)=>{r[o]=i});let a=(i,o)=>(n=e(...t,o),M(n.value instanceof Ve,()=>"The function f passed in customGrad(f) must return an object where `obj.value` is a tensor"),M(_a(n.gradFunc),()=>"The function f passed in customGrad(f) must return an object where `obj.gradFunc` is a function."),n.value),s=(i,o)=>{let l=n.gradFunc(i,o),c=Array.isArray(l)?l:[l];M(c.length===t.length,()=>"The function f passed in customGrad(f) must return an object where `obj.gradFunc` is a function that returns the same number of tensors as inputs passed to f(...)."),M(c.every(h=>h instanceof Ve),()=>"The function f passed in customGrad(f) must return an object where `obj.gradFunc` is a function that returns a list of only tensors.");let u={};return c.forEach((h,d)=>{u[d]=()=>h}),u};return this.runKernelFunc({forwardFunc:a,backwardsFunc:s,inputs:r})}}readSync(e){return this.state.tensorInfo.get(e).backend.readSync(e)}read(e){return this.state.tensorInfo.get(e).backend.read(e)}async time(e){let t=Su(),n=await this.backend.time(e);return n.wallMs=Su()-t,n}track(e){return this.state.activeScope!=null&&(e.scopeId=this.state.activeScope.id,this.state.activeScope.track.push(e)),e}get registeredVariables(){return this.state.registeredVariables}reset(){this.pendingBackendInitId++,this.state.dispose(),this.ENV.reset(),this.state=new l5;for(let e in this.registry)this.disposeRegisteredKernels(e),this.registry[e].dispose(),delete this.registry[e];this.backendName=null,this.backendInstance=null,this.pendingBackendInit=null}};Fu.nextTensorId=0;Fu.nextVariableId=0;function Pk(e){let t=rf(Ft(e),"float32");return $.makeTensor(t,e,"float32")}function u5(){let e=e5();if(e._tfengine==null){let t=new Qg(e);e._tfengine=new Fu(t)}return mk(e._tfengine.ENV),Mk(()=>e._tfengine),e._tfengine}var $=u5();function Lk(e,t){let n={a:e,b:t};return $.runKernel(va,n)}var $u={};Oe($u,{isBrowser:()=>c5,isMobile:()=>Wk});function Bk(){return typeof navigator!="undefined"&&navigator!=null}function Wk(){if(Bk()){let e=navigator.userAgent||navigator.vendor||window.opera;return/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(e)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(e.substr(0,4))}return!1}function c5(){return typeof window!="undefined"&&window.document!=null||typeof WorkerGlobalScope!="undefined"}var mr=J();mr.registerFlag("DEBUG",()=>!1,e=>{e&&console.warn("Debugging mode is ON. The output of every math call will be downloaded to CPU and checked for NaNs. This significantly impacts performance.")});mr.registerFlag("IS_BROWSER",()=>c5());mr.registerFlag("IS_NODE",()=>typeof process!="undefined"&&typeof process.versions!="undefined"&&typeof process.versions.node!="undefined");mr.registerFlag("IS_CHROME",()=>typeof navigator!="undefined"&&navigator!=null&&navigator.userAgent!=null&&/Chrome/.test(navigator.userAgent)&&/Google Inc/.test(navigator.vendor));mr.registerFlag("PROD",()=>!1);mr.registerFlag("TENSORLIKE_CHECK_SHAPE_CONSISTENCY",()=>mr.getBool("DEBUG"));mr.registerFlag("DEPRECATION_WARNINGS_ENABLED",()=>!0);mr.registerFlag("IS_TEST",()=>!1);mr.registerFlag("CHECK_COMPUTATION_FOR_ERRORS",()=>!0);mr.registerFlag("WRAP_TO_IMAGEBITMAP",()=>!1);function Cr(e,t){let n=e;if(rn(e))return t==="string"?[]:[e.length];if(!Array.isArray(e))return[];let r=[];for(;Array.isArray(n)||rn(n)&&t!=="string";)r.push(n.length),n=n[0];return Array.isArray(e)&&J().getBool("TENSORLIKE_CHECK_SHAPE_CONSISTENCY")&&h5(e,r,[]),r}function h5(e,t,n){if(n=n||[],!Array.isArray(e)&&!rn(e)){M(t.length===0,()=>`Element arr[${n.join("][")}] is a primitive, but should be an array/TypedArray of ${t[0]} elements`);return}M(t.length>0,()=>`Element arr[${n.join("][")}] should be a primitive, but is an array of ${e.length} elements`),M(e.length===t[0],()=>`Element arr[${n.join("][")}] should have ${t[0]} elements, but has ${e.length} elements`);let r=t.slice(1);for(let a=0;a=0&&(a=r),d5(r,a,t,n),e==null||!rn(e)&&!Array.isArray(e)&&typeof e!="number"&&typeof e!="boolean"&&typeof e!="string"){let o=e==null?"null":e.constructor.name;throw new Error(`Argument '${t}' passed to '${n}' must be a Tensor or TensorLike, but got '${o}'`)}let s=Cr(e,a);!rn(e)&&!Array.isArray(e)&&(e=[e]);let i=a!=="string"?td(e,a):ss(e,[],!0);return $.makeTensor(i,s,a)}function Du(e,t,n,r="numeric"){if(!Array.isArray(e))throw new Error(`Argument ${t} passed to ${n} must be a \`Tensor[]\` or \`TensorLike[]\``);return e.map((a,s)=>E(a,`${t}[${s}]`,n,r))}var p5="__op";function D(e){let t=Object.keys(e);if(t.length!==1)throw new Error(`Please provide an object with a single key (operation name) mapping to a function. Got an object with ${t.length} keys.`);let n=t[0],r=e[n];n.endsWith("_")&&(n=n.substring(0,n.length-1)),n=n+p5;let a=(...s)=>{$.startScope(n);try{let i=r(...s);return sf(i)&&console.error("Cannot return a Promise inside of tidy."),$.endScope(i),i}catch(i){throw $.endScope(null),i}};return Object.defineProperty(a,"name",{value:n,configurable:!0}),a}function Vk(e,t){let n=E(e,"real","complex"),r=E(t,"imag","complex");nn(n.shape,r.shape,`real and imag shapes, ${n.shape} and ${r.shape}, must match in call to tf.complex().`);let a={real:n,imag:r};return $.runKernel(Sh,a)}var Sa=D({complex_:Vk});function Ta(e,t,n,r){if(r==null&&(r=xh(e)),r==="complex64")throw new Error("Cannot construct a complex64 tensor directly. Please use tf.complex(real, imag).");if(!rn(e)&&!Array.isArray(e)&&typeof e!="number"&&typeof e!="boolean"&&typeof e!="string")throw new Error("values passed to tensor(values) must be a number/boolean/string or an array of numbers/booleans/strings, or a TypedArray");if(t!=null){af(t);let a=Ft(t),s=Ft(n);M(a===s,()=>`Based on the provided shape, [${t}], the tensor should have ${a} values but has ${s}`);for(let i=0;i`Error creating a new Tensor. Inferred shape (${n}) does not match the provided shape (${t}). `)}}return!rn(e)&&!Array.isArray(e)&&(e=[e]),t=t||n,e=r!=="string"?td(e,r):ss(e,[],!0),$.makeTensor(e,t,r)}function Ar(e,t,n){let r=Cr(e,n);return Ta(e,t,r,n)}var xf={float32:4,float16:2,int32:4,uint16:2,uint8:1,bool:1,complex64:8},sd=4;async function jk(e,t){let n=[],r=[],a=Array.isArray(e)?e.map(i=>i.name):Object.keys(e);for(let i=0;i{let d=await l.bytes(),p=d.reduce((A,y)=>A+y.length,0)+sd*d.length,f=new Uint8Array(p),m=0;for(let A=0;A{if(t+=s.byteLength,n.push(s.byteLength===s.buffer.byteLength?s:new s.constructor(s)),!(s instanceof Float32Array||s instanceof Int32Array||s instanceof Uint8Array))throw new Error(`Unsupported TypedArray subtype: ${s.constructor.name}`)});let r=new Uint8Array(t),a=0;return n.forEach(s=>{r.set(new Uint8Array(s.buffer),a),a+=s.byteLength}),r.buffer}var wf=typeof Buffer!="undefined"&&(typeof Blob=="undefined"||typeof atob=="undefined"||typeof btoa=="undefined");function m5(e){return wf?Buffer.byteLength(e):new Blob([e]).size}function Gk(e){if(wf)return Buffer.from(e).toString("base64");let t=new Uint8Array(e),n="";for(let r=0,a=t.length;r{t+=a.byteLength});let n=new Uint8Array(t),r=0;return e.forEach(a=>{n.set(new Uint8Array(a),r),r+=a.byteLength}),n.buffer}function A5(e){let t="/";for(e=e.trim();e.endsWith(t);)e=e.slice(0,e.length-1);let n=e.split(t);return n[n.length-1]}function Ou(e){if(e.modelTopology instanceof ArrayBuffer)throw new Error("Expected JSON model topology, received ArrayBuffer.");return{dateSaved:new Date,modelTopologyType:"JSON",modelTopologyBytes:e.modelTopology==null?0:m5(JSON.stringify(e.modelTopology)),weightSpecsBytes:e.weightSpecs==null?0:m5(JSON.stringify(e.weightSpecs)),weightDataBytes:e.weightData==null?0:e.weightData.byteLength}}function Xk(){let e=n=>{let r=n<<13,a=0;for(;(r&8388608)==0;)a-=8388608,r<<=1;return r&=~8388608,a+=947912704,r|a},t=new Uint32Array(2048);t[0]=0;for(let n=1;n<1024;n++)t[n]=e(n);for(let n=1024;n<2048;n++)t[n]=939524096+(n-1024<<13);return t}function Kk(){let e=new Uint32Array(64);e[0]=0,e[31]=1199570944,e[32]=2147483648,e[63]=3347054592;for(let t=1;t<31;t++)e[t]=t<<23;for(let t=33;t<63;t++)e[t]=2147483648+(t-32<<23);return e}function Zk(){let e=new Uint32Array(64);for(let t=0;t<64;t++)e[t]=1024;return e[0]=e[32]=0,e}function Hk(){let e=Xk(),t=Kk(),n=Zk();return r=>{let a=new ArrayBuffer(4*r.length),s=new Uint32Array(a);for(let i=0;i>10]+(o&1023)]+t[o>>10];s[i]=l}return new Float32Array(a)}}var Nt=class{constructor(){this.saveRouters=[],this.loadRouters=[]}static getInstance(){return Nt.instance==null&&(Nt.instance=new Nt),Nt.instance}static registerSaveRouter(e){Nt.getInstance().saveRouters.push(e)}static registerLoadRouter(e){Nt.getInstance().loadRouters.push(e)}static getSaveHandlers(e){return Nt.getHandlers(e,"save")}static getLoadHandlers(e,t){return Nt.getHandlers(e,"load",t)}static getHandlers(e,t,n){let r=[];return(t==="load"?Nt.getInstance().loadRouters:Nt.getInstance().saveRouters).forEach(a=>{let s=a(e,n);s!==null&&r.push(s)}),r}},Yk=e=>Nt.registerSaveRouter(e),Jk=e=>Nt.registerLoadRouter(e),Qk=e=>Nt.getSaveHandlers(e),e9=(e,t)=>Nt.getLoadHandlers(e,t),_f="tensorflowjs",vf=1,ni="models_store",Ca="model_info_store";function y5(){if(!J().getBool("IS_BROWSER"))throw new Error("Failed to obtain IndexedDB factory because the current environmentis not a web browser.");let e=typeof window=="undefined"?self:window,t=e.indexedDB||e.mozIndexedDB||e.webkitIndexedDB||e.msIndexedDB||e.shimIndexedDB;if(t==null)throw new Error("The current browser does not appear to support IndexedDB.");return t}function kf(e){let t=e.result;t.createObjectStore(ni,{keyPath:"modelPath"}),t.createObjectStore(Ca,{keyPath:"modelPath"})}var ri=class{constructor(e){if(this.indexedDB=y5(),e==null||!e)throw new Error("For IndexedDB, modelPath must not be null, undefined or empty.");this.modelPath=e}async save(e){if(e.modelTopology instanceof ArrayBuffer)throw new Error("BrowserLocalStorage.save() does not support saving model topology in binary formats yet.");return this.databaseAction(this.modelPath,e)}async load(){return this.databaseAction(this.modelPath)}databaseAction(e,t){return new Promise((n,r)=>{let a=this.indexedDB.open(_f,vf);a.onupgradeneeded=()=>kf(a),a.onsuccess=()=>{let s=a.result;if(t==null){let i=s.transaction(ni,"readonly"),o=i.objectStore(ni).get(this.modelPath);o.onsuccess=()=>{if(o.result==null)return s.close(),r(new Error(`Cannot find model with path '${this.modelPath}' in IndexedDB.`));n(o.result.modelArtifacts)},o.onerror=l=>(s.close(),r(o.error)),i.oncomplete=()=>s.close()}else{let i=Ou(t),o=s.transaction(Ca,"readwrite"),l=o.objectStore(Ca),c=l.put({modelPath:this.modelPath,modelArtifactsInfo:i}),u;c.onsuccess=()=>{u=s.transaction(ni,"readwrite");let h=u.objectStore(ni).put({modelPath:this.modelPath,modelArtifacts:t,modelArtifactsInfo:i});h.onsuccess=()=>n({modelArtifactsInfo:i}),h.onerror=d=>{l=o.objectStore(Ca);let p=l.delete(this.modelPath);p.onsuccess=()=>(s.close(),r(h.error)),p.onerror=f=>(s.close(),r(h.error))}},c.onerror=h=>(s.close(),r(c.error)),o.oncomplete=()=>{u==null?s.close():u.oncomplete=()=>s.close()}}},a.onerror=s=>r(a.error)})}};ri.URL_SCHEME="indexeddb://";var g5=e=>J().getBool("IS_BROWSER")&&!Array.isArray(e)&&e.startsWith(ri.URL_SCHEME)?t9(e.slice(ri.URL_SCHEME.length)):null;Nt.registerSaveRouter(g5);Nt.registerLoadRouter(g5);function t9(e){return new ri(e)}function n9(e){return e.startsWith(ri.URL_SCHEME)?e.slice(ri.URL_SCHEME.length):e}var r9=class{constructor(){this.indexedDB=y5()}async listModels(){return new Promise((e,t)=>{let n=this.indexedDB.open(_f,vf);n.onupgradeneeded=()=>kf(n),n.onsuccess=()=>{let r=n.result,a=r.transaction(Ca,"readonly"),s=a.objectStore(Ca).getAll();s.onsuccess=()=>{let i={};for(let o of s.result)i[o.modelPath]=o.modelArtifactsInfo;e(i)},s.onerror=i=>(r.close(),t(s.error)),a.oncomplete=()=>r.close()},n.onerror=r=>t(n.error)})}async removeModel(e){return e=n9(e),new Promise((t,n)=>{let r=this.indexedDB.open(_f,vf);r.onupgradeneeded=()=>kf(r),r.onsuccess=()=>{let a=r.result,s=a.transaction(Ca,"readwrite"),i=s.objectStore(Ca),o=i.get(e),l;o.onsuccess=()=>{if(o.result==null)return a.close(),n(new Error(`Cannot find model with path '${e}' in IndexedDB.`));{let c=i.delete(e),u=()=>{l=a.transaction(ni,"readwrite");let h=l.objectStore(ni).delete(e);h.onsuccess=()=>t(o.result.modelArtifactsInfo),h.onerror=d=>n(o.error)};c.onsuccess=u,c.onerror=h=>(u(),a.close(),n(o.error))}},o.onerror=c=>(a.close(),n(o.error)),s.oncomplete=()=>{l==null?a.close():l.oncomplete=()=>a.close()}},r.onerror=a=>n(r.error)})}},ea="/",Qo="tensorflowjs_models",x5="info",a9="model_topology",s9="weight_specs",i9="weight_data",o9="model_metadata";function w5(e){return{info:[Qo,e,x5].join(ea),topology:[Qo,e,a9].join(ea),weightSpecs:[Qo,e,s9].join(ea),weightData:[Qo,e,i9].join(ea),modelMetadata:[Qo,e,o9].join(ea)}}function l9(e){let t=e.split(ea);if(t.length<3)throw new Error(`Invalid key format: ${e}`);return t.slice(1,t.length-1).join(ea)}function u9(e){return e.startsWith(ai.URL_SCHEME)?e.slice(ai.URL_SCHEME.length):e}var ai=class{constructor(e){if(!J().getBool("IS_BROWSER")||typeof window=="undefined"||typeof window.localStorage=="undefined")throw new Error("The current environment does not support local storage.");if(this.LS=window.localStorage,e==null||!e)throw new Error("For local storage, modelPath must not be null, undefined or empty.");this.modelPath=e,this.keys=w5(this.modelPath)}async save(e){if(e.modelTopology instanceof ArrayBuffer)throw new Error("BrowserLocalStorage.save() does not support saving model topology in binary formats yet.");{let t=JSON.stringify(e.modelTopology),n=JSON.stringify(e.weightSpecs),r=Ou(e);try{this.LS.setItem(this.keys.info,JSON.stringify(r)),this.LS.setItem(this.keys.topology,t),this.LS.setItem(this.keys.weightSpecs,n),this.LS.setItem(this.keys.weightData,Gk(e.weightData));let a={format:e.format,generatedBy:e.generatedBy,convertedBy:e.convertedBy};return e.signature!=null&&(a.signature=e.signature),e.userDefinedMetadata!=null&&(a.userDefinedMetadata=e.userDefinedMetadata),e.modelInitializer!=null&&(a.modelInitializer=e.modelInitializer),this.LS.setItem(this.keys.modelMetadata,JSON.stringify(a)),{modelArtifactsInfo:r}}catch(a){throw this.LS.removeItem(this.keys.info),this.LS.removeItem(this.keys.topology),this.LS.removeItem(this.keys.weightSpecs),this.LS.removeItem(this.keys.weightData),this.LS.removeItem(this.keys.modelMetadata),new Error(`Failed to save model '${this.modelPath}' to local storage: size quota being exceeded is a possible cause of this failure: modelTopologyBytes=${r.modelTopologyBytes}, weightSpecsBytes=${r.weightSpecsBytes}, weightDataBytes=${r.weightDataBytes}.`)}}}async load(){let e=JSON.parse(this.LS.getItem(this.keys.info));if(e==null)throw new Error(`In local storage, there is no model with name '${this.modelPath}'`);if(e.modelTopologyType!=="JSON")throw new Error("BrowserLocalStorage does not support loading non-JSON model topology yet.");let t={},n=JSON.parse(this.LS.getItem(this.keys.topology));if(n==null)throw new Error(`In local storage, the topology of model '${this.modelPath}' is missing.`);t.modelTopology=n;let r=JSON.parse(this.LS.getItem(this.keys.weightSpecs));if(r==null)throw new Error(`In local storage, the weight specs of model '${this.modelPath}' are missing.`);t.weightSpecs=r;let a=this.LS.getItem(this.keys.modelMetadata);if(a!=null){let i=JSON.parse(a);t.format=i.format,t.generatedBy=i.generatedBy,t.convertedBy=i.convertedBy,i.signature!=null&&(t.signature=i.signature),i.userDefinedMetadata!=null&&(t.userDefinedMetadata=i.userDefinedMetadata),i.modelInitializer!=null&&(t.modelInitializer=i.modelInitializer)}let s=this.LS.getItem(this.keys.weightData);if(s==null)throw new Error(`In local storage, the binary weight values of model '${this.modelPath}' are missing.`);return t.weightData=qk(s),t}};ai.URL_SCHEME="localstorage://";var b5=e=>J().getBool("IS_BROWSER")&&!Array.isArray(e)&&e.startsWith(ai.URL_SCHEME)?c9(e.slice(ai.URL_SCHEME.length)):null;Nt.registerSaveRouter(b5);Nt.registerLoadRouter(b5);function c9(e){return new ai(e)}var h9=class{constructor(){M(J().getBool("IS_BROWSER"),()=>"Current environment is not a web browser"),M(typeof window=="undefined"||typeof window.localStorage!="undefined",()=>"Current browser does not appear to support localStorage"),this.LS=window.localStorage}async listModels(){let e={},t=Qo+ea,n=ea+x5;for(let r=0;r"scheme must not be undefined or null."),e.endsWith(el)&&(e=e.slice(0,e.indexOf(el))),M(e.length>0,()=>"scheme must not be an empty string.");let n=jn.getInstance();M(n.managers[e]==null,()=>`A model store manager is already registered for scheme '${e}'.`),n.managers[e]=t}static getManager(e){let t=this.getInstance().managers[e];if(t==null)throw new Error(`Cannot find model manager for scheme '${e}'`);return t}static getSchemes(){return Object.keys(this.getInstance().managers)}};function id(e){if(e.indexOf(el)===-1)throw new Error(`The url string provided does not contain a scheme. Supported schemes are: ${jn.getSchemes().join(",")}`);return{scheme:e.split(el)[0],path:e.split(el)[1]}}async function _5(e,t,n=!1){M(e!==t,()=>`Old path and new path are the same: '${e}'`);let r=Nt.getLoadHandlers(e);M(r.length>0,()=>`Copying failed because no load handler is found for source URL ${e}.`),M(r.length<2,()=>`Copying failed because more than one (${r.length}) load handlers for source URL ${e}.`);let a=r[0],s=Nt.getSaveHandlers(t);M(s.length>0,()=>`Copying failed because no save handler is found for destination URL ${t}.`),M(s.length<2,()=>`Copying failed because more than one (${r.length}) save handlers for destination URL ${t}.`);let i=s[0],o=id(e).scheme,l=id(e).path,c=o===id(e).scheme,u=await a.load();n&&c&&await jn.getManager(o).removeModel(l);let h=await i.save(u);return n&&!c&&await jn.getManager(o).removeModel(l),h.modelArtifactsInfo}async function d9(){let e=jn.getSchemes(),t={};for(let n of e){let r=await jn.getManager(n).listModels();for(let a in r){let s=n+el+a;t[s]=r[a]}}return t}async function p9(e){let t=id(e);return jn.getManager(t.scheme).removeModel(t.path)}async function f9(e,t){return _5(e,t,!1)}async function m9(e,t){return _5(e,t,!0)}var A9=class{fetch(e,t){return fetch(e,t)}now(){return performance.now()}encode(e,t){if(t!=="utf-8"&&t!=="utf8")throw new Error(`Browser's encoder only supports utf-8, but got ${t}`);return this.textEncoder==null&&(this.textEncoder=new TextEncoder),this.textEncoder.encode(e)}decode(e,t){return new TextDecoder(t).decode(e)}};if(J().get("IS_BROWSER")){J().setPlatform("browser",new A9);try{jn.registerManager(ai.URL_SCHEME,new h9)}catch(e){}try{jn.registerManager(ri.URL_SCHEME,new r9)}catch(e){}}var y9={importFetch:()=>k8()},If,g9=class{constructor(){this.util=require("util"),this.textEncoder=new this.util.TextEncoder}fetch(e,t){return J().global.fetch!=null?J().global.fetch(e,t):(If==null&&(If=y9.importFetch()),If(e,t))}now(){let e=process.hrtime();return e[0]*1e3+e[1]/1e6}encode(e,t){if(t!=="utf-8"&&t!=="utf8")throw new Error(`Node built-in encoder only supports utf-8, but got ${t}`);return this.textEncoder.encode(e)}decode(e,t){return e.length===0?"":new this.util.TextDecoder(t).decode(e)}};J().get("IS_NODE")&&J().setPlatform("node",new g9);function Le(e,t="float32",n){return t=t||"float32",af(e),new $t(e,t,n)}function x9(e,t){let n=E(e,"x","cast");if(!qg(t))throw new Error(`Failed to cast to unknown dtype ${t}`);if(t==="string"&&n.dtype!=="string"||t!=="string"&&n.dtype==="string")throw new Error("Only strings can be casted to strings");let r={x:n},a={dtype:t};return $.runKernel(cs,r,a)}var me=D({cast_:x9});function w9(e){let t={x:E(e,"x","clone","string_or_numeric")};return $.runKernel(vs,t)}var Er=D({clone_:w9});function v5(e,t=!1){console.log(e.toString(t))}u5();var b9={buffer:Le,cast:me,clone:Er,print:v5};Fk(b9);var gn={};Oe(gn,{browserFiles:()=>_9,browserHTTPRequest:()=>k9,concatenateArrayBuffers:()=>bf,copyModel:()=>f9,decodeWeights:()=>f5,encodeWeights:()=>jk,fromMemory:()=>I9,getLoadHandlers:()=>e9,getModelArtifactsInfoForJSON:()=>Ou,getSaveHandlers:()=>Qk,http:()=>Sf,isHTTPScheme:()=>Nf,listModels:()=>d9,loadWeights:()=>v9,moveModel:()=>m9,registerLoadRouter:()=>Jk,registerSaveRouter:()=>Yk,removeModel:()=>p9,weightsLoaderFactory:()=>k5,withSaveHandler:()=>N9});var S9="model",T9=".json",C9=".weights.bin";function I5(e){return new Promise(t=>setTimeout(t)).then(e)}var tl=class{constructor(e){if(!J().getBool("IS_BROWSER"))throw new Error("browserDownloads() cannot proceed because the current environment is not a browser.");e.startsWith(tl.URL_SCHEME)&&(e=e.slice(tl.URL_SCHEME.length)),(e==null||e.length===0)&&(e=S9),this.modelTopologyFileName=e+T9,this.weightDataFileName=e+C9}async save(e){if(typeof document=="undefined")throw new Error("Browser downloads are not supported in this environment since `document` is not present");let t=window.URL.createObjectURL(new Blob([e.weightData],{type:"application/octet-stream"}));if(e.modelTopology instanceof ArrayBuffer)throw new Error("BrowserDownloads.save() does not support saving model topology in binary formats yet.");{let n=[{paths:["./"+this.weightDataFileName],weights:e.weightSpecs}],r={modelTopology:e.modelTopology,format:e.format,generatedBy:e.generatedBy,convertedBy:e.convertedBy,weightsManifest:n};e.signature!=null&&(r.signature=e.signature),e.userDefinedMetadata!=null&&(r.userDefinedMetadata=e.userDefinedMetadata),e.modelInitializer!=null&&(r.modelInitializer=e.modelInitializer);let a=window.URL.createObjectURL(new Blob([JSON.stringify(r)],{type:"application/json"})),s=this.jsonAnchor==null?document.createElement("a"):this.jsonAnchor;if(s.download=this.modelTopologyFileName,s.href=a,await I5(()=>s.dispatchEvent(new MouseEvent("click"))),e.weightData!=null){let i=this.weightDataAnchor==null?document.createElement("a"):this.weightDataAnchor;i.download=this.weightDataFileName,i.href=t,await I5(()=>i.dispatchEvent(new MouseEvent("click")))}return{modelArtifactsInfo:Ou(e)}}}};tl.URL_SCHEME="downloads://";var E9=class{constructor(e){if(e==null||e.length<1)throw new Error(`When calling browserFiles, at least 1 file is required, but received ${e}`);this.files=e}async load(){let e=this.files[0],t=this.files.slice(1);return new Promise((n,r)=>{let a=new FileReader;a.onload=s=>{let i=JSON.parse(s.target.result),o=i.modelTopology;if(o==null){r(new Error(`modelTopology field is missing from file ${e.name}`));return}t.length===0&&n({modelTopology:o});let l=i.weightsManifest;if(l==null){r(new Error(`weightManifest field is missing from file ${e.name}`));return}let c;try{c=this.checkManifestAndWeightFiles(l,t)}catch(p){r(p);return}let u=[],h=[],d=[];l.forEach(p=>{p.paths.forEach(f=>{h.push(f),d.push(null)}),u.push(...p.weights)}),l.forEach(p=>{p.paths.forEach(f=>{let m=new FileReader;m.onload=A=>{let y=A.target.result,g=h.indexOf(f);if(d[g]=y,d.indexOf(null)===-1){let w={modelTopology:o,weightSpecs:u,weightData:bf(d),format:i.format,generatedBy:i.generatedBy,convertedBy:i.convertedBy};i.signature!=null&&(w.signature=i.signature),i.userDefinedMetadata!=null&&(w.userDefinedMetadata=i.userDefinedMetadata),i.modelInitializer!=null&&(w.modelInitializer=i.modelInitializer),n(w)}},m.onerror=A=>r(`Failed to weights data from file of path '${f}'.`),m.readAsArrayBuffer(c[f])})})},a.onerror=s=>r(`Failed to read model topology and weights manifest JSON from file '${e.name}'. BrowserFiles supports loading Keras-style tf.Model artifacts only.`),a.readAsText(e)})}checkManifestAndWeightFiles(e,t){let n=[],r=t.map(s=>A5(s.name)),a={};for(let s of e)s.paths.forEach(i=>{let o=A5(i);if(n.indexOf(o)!==-1)throw new Error(`Duplicate file basename found in weights manifest: '${o}'`);if(n.push(o),r.indexOf(o)===-1)throw new Error(`Weight file with basename '${o}' is not provided.`);a[i]=t[r.indexOf(o)]});if(n.length!==t.length)throw new Error(`Mismatch in the number of files in weights manifest (${n.length}) and the number of weight files provided (${t.length}).`);return a}},M9=e=>J().getBool("IS_BROWSER")&&!Array.isArray(e)&&e.startsWith(tl.URL_SCHEME)?R9(e.slice(tl.URL_SCHEME.length)):null;Nt.registerSaveRouter(M9);function R9(e="model"){return new tl(e)}function _9(e){return new E9(e)}function N5(e,t,n,r){i(e),n=n==null?0:n,r=r==null?1:r,o(n,r);let a=0,s=l=>(l.then(c=>{let u=n+ ++a/e.length*(r-n);return t(u),c}),l);function i(l){M(l!=null&&Array.isArray(l)&&l.length>0,()=>"promises must be a none empty array")}function o(l,c){M(l>=0&&l<=1,()=>`Progress fraction must be in range [0, 1], but got startFraction ${l}`),M(c>=0&&c<=1,()=>`Progress fraction must be in range [0, 1], but got endFraction ${c}`),M(c>=l,()=>`startFraction must be no more than endFraction, but got startFraction ${l} and endFraction ${c}`)}return Promise.all(e.map(s))}async function S5(e,t){t==null&&(t={});let n=t.fetchFunc==null?J().platform.fetch:t.fetchFunc,r=e.map(c=>n(c,t.requestInit,{isBinary:!0})),a=0,s=.5,i=(t.onProgress==null?await Promise.all(r):await N5(r,t.onProgress,a,s)).map(c=>c.arrayBuffer()),o=.5,l=1;return t.onProgress==null?await Promise.all(i):await N5(i,t.onProgress,o,l)}async function v9(e,t="",n,r){return k5(a=>S5(a,{requestInit:r}))(e,t,n)}function k5(e){return async(t,n="",r)=>{let a=t.map(()=>!1),s={},i=r!=null?r.map(()=>!1):[],o=[];if(t.forEach((p,f)=>{let m=0;p.weights.forEach(A=>{let y="quantization"in A?A.quantization.dtype:A.dtype,g=xf[y]*Ft(A.shape),w=()=>{a[f]=!0,s[f]==null&&(s[f]=[]),s[f].push({manifestEntry:A,groupOffset:m,sizeBytes:g})};r!=null?r.forEach((b,_)=>{b===A.name&&(w(),i[_]=!0)}):w(),o.push(A.name),m+=g})}),!i.every(p=>p)){let p=r.filter((f,m)=>!i[m]);throw new Error(`Could not find weights in manifest with names: ${p.join(", ")}. -Manifest JSON has weights with names: ${o.join(", ")}.`)}let l=a.reduce((p,f,m)=>(f&&p.push(m),p),[]),c=[];l.forEach(p=>{t[p].paths.forEach(f=>{let m=n+(n.endsWith("/")?"":"/")+f;c.push(m)})});let u=await e(c),h={},d=0;return l.forEach(p=>{let f=t[p].paths.length,m=0;for(let w=0;w{let b=A.slice(w.groupOffset,w.groupOffset+w.sizeBytes),_=f5(b,[w.manifestEntry]);for(let x in _)h[x]=_[x]}),d+=f}),h}}var F9="application/octet-stream",$9="application/json",Tf=class{constructor(e,t){if(this.DEFAULT_METHOD="POST",t==null&&(t={}),this.weightPathPrefix=t.weightPathPrefix,this.onProgress=t.onProgress,this.weightUrlConverter=t.weightUrlConverter,t.fetchFunc!=null?(M(typeof t.fetchFunc=="function",()=>"Must pass a function that matches the signature of `fetch` (see https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API)"),this.fetch=t.fetchFunc):this.fetch=J().platform.fetch,M(e!=null&&e.length>0,()=>"URL path for http must not be null, undefined or empty."),Array.isArray(e)&&M(e.length===2,()=>`URL paths for http must have a length of 2, (actual length is ${e.length}).`),this.path=e,t.requestInit!=null&&t.requestInit.body!=null)throw new Error("requestInit is expected to have no pre-existing body, but has one.");this.requestInit=t.requestInit||{}}async save(e){if(e.modelTopology instanceof ArrayBuffer)throw new Error("BrowserHTTPRequest.save() does not support saving model topology in binary formats yet.");let t=Object.assign({method:this.DEFAULT_METHOD},this.requestInit);t.body=new FormData;let n=[{paths:["./model.weights.bin"],weights:e.weightSpecs}],r={modelTopology:e.modelTopology,format:e.format,generatedBy:e.generatedBy,convertedBy:e.convertedBy,weightsManifest:n};e.signature!=null&&(r.signature=e.signature),e.userDefinedMetadata!=null&&(r.userDefinedMetadata=e.userDefinedMetadata),e.modelInitializer!=null&&(r.modelInitializer=e.modelInitializer),t.body.append("model.json",new Blob([JSON.stringify(r)],{type:$9}),"model.json"),e.weightData!=null&&t.body.append("model.weights.bin",new Blob([e.weightData],{type:F9}),"model.weights.bin");let a=await this.fetch(this.path,t);if(a.ok)return{modelArtifactsInfo:Ou(e),responses:[a]};throw new Error(`BrowserHTTPRequest.save() failed due to HTTP response status ${a.status}.`)}async load(){let e=await this.fetch(this.path,this.requestInit);if(!e.ok)throw new Error(`Request to ${this.path} failed with status code ${e.status}. Please verify this URL points to the model JSON of the model to load.`);let t;try{t=await e.json()}catch(p){let f=`Failed to parse model JSON of response from ${this.path}.`;throw this.path.endsWith(".pb")?f+=" Your path contains a .pb file extension. Support for .pb models have been removed in TensorFlow.js 1.0 in favor of .json models. You can re-convert your Python TensorFlow model using the TensorFlow.js 1.0 conversion scripts or you can convert your.pb models with the 'pb2json'NPM script in the tensorflow/tfjs-converter repository.":f+=" Please make sure the server is serving valid JSON for this request.",new Error(f)}let n=t.modelTopology,r=t.weightsManifest,a=t.generatedBy,s=t.convertedBy,i=t.format,o=t.signature,l=t.userDefinedMetadata;if(n==null&&r==null)throw new Error(`The JSON from HTTP path ${this.path} contains neither model topology or manifest for weights.`);let c,u;r!=null&&([c,u]=await this.loadWeights(r));let h={modelTopology:n,weightSpecs:c,weightData:u,generatedBy:a,convertedBy:s,format:i};o!=null&&(h.signature=o),l!=null&&(h.userDefinedMetadata=l);let d=t.modelInitializer;return d&&(h.modelInitializer=d),h}async loadWeights(e){let t=Array.isArray(this.path)?this.path[1]:this.path,[n,r]=D9(t),a=this.weightPathPrefix||n,s=[];for(let c of e)s.push(...c.weights);let i=[],o=[];for(let c of e)for(let u of c.paths)this.weightUrlConverter!=null?o.push(this.weightUrlConverter(u)):i.push(a+u+r);this.weightUrlConverter&&i.push(...await Promise.all(o));let l=await S5(i,{requestInit:this.requestInit,fetchFunc:this.fetch,onProgress:this.onProgress});return[s,bf(l)]}};Tf.URL_SCHEME_REGEX=/^https?:\/\//;function D9(e){let t=e.lastIndexOf("/"),n=e.lastIndexOf("?"),r=e.substring(0,t),a=n>t?e.substring(n):"";return[r+"/",a]}function Nf(e){return e.match(Tf.URL_SCHEME_REGEX)!=null}var T5=(e,t)=>{if(typeof fetch=="undefined"&&(t==null||t.fetchFunc==null))return null;{let n=!0;if(Array.isArray(e)?n=e.every(r=>Nf(r)):n=Nf(e),n)return Sf(e,t)}return null};Nt.registerSaveRouter(T5);Nt.registerLoadRouter(T5);function Sf(e,t){return new Tf(e,t)}function k9(e,t){return Sf(e,t)}var Cf=class{constructor(e){this.modelArtifacts=e}async load(){return this.modelArtifacts}},O9=class{constructor(e){this.saveHandler=e}async save(e){return this.saveHandler(e)}};function I9(e,t,n,r){return arguments.length===1?e.modelTopology!=null||e.weightSpecs!=null?new Cf(e):(console.warn("Please call tf.io.fromMemory() with only one argument. The argument should be of type ModelArtifacts. The multi-argument signature of tf.io.fromMemory() has been deprecated and will be removed in a future release."),new Cf({modelTopology:e})):(console.warn("Please call tf.io.fromMemory() with only one argument. The argument should be of type ModelArtifacts. The multi-argument signature of tf.io.fromMemory() has been deprecated and will be removed in a future release."),new Cf({modelTopology:e,weightSpecs:t,weightData:n,trainingConfig:r}))}function N9(e){return new O9(e)}var C5={};Oe(C5,{confusionMatrix:()=>z9});function P9(e,t,n=!1,r=!1){let a=E(e,"a","matMul"),s=E(t,"b","matMul");[a,s]=bt(a,s);let i={a,b:s},o={transposeA:n,transposeB:r};return $.runKernel(us,i,o)}var Ge=D({matMul_:P9});function L9(e,t,n=1,r=0){if(t<2)throw new Error(`Error in oneHot: depth must be >=2, but it is ${t}`);let a={indices:E(e,"indices","oneHot","int32")},s={depth:t,onValue:n,offValue:r};return $.runKernel(Fs,a,s)}var nl=D({oneHot_:L9});function W9(e,t){let n=E(e,"x","transpose");if(t==null&&(t=n.shape.map((s,i)=>i).reverse()),M(n.rank===t.length,()=>`Error in transpose: rank of input ${n.rank} must match length of perm ${t}.`),t.forEach(s=>{M(s>=0&&s`All entries in 'perm' must be between 0 and ${n.rank-1} but got ${t}`)}),n.rank<=1)return n.clone();let r={x:n},a={perm:t};return $.runKernel(Ys,r,a)}var nt=D({transpose_:W9});function B9(e,t,n){let r=E(e,"labels","confusionMatrix"),a=E(t,"predictions","confusionMatrix");M(n==null||n>0&&Number.isInteger(n),()=>`If provided, numClasses must be a positive integer, but got ${n}`),M(r.rank===1,()=>`Expected the rank of labels to be 1, but got ${r.rank}`),M(a.rank===1,()=>`Expected the rank of predictions to be 1, but got ${a.rank}`),M(r.shape[0]===a.shape[0],()=>`Mismatch in the number of examples: ${r.shape[0]} vs. ${a.shape[0]}. Labels and predictions should have the same number of elements.`),M(n>0&&Number.isInteger(n),()=>`numClasses is required to be a positive integer, but got ${n}`);let s=nl(me(r,"int32"),n),i=nl(me(a,"int32"),n),o=nt(s),l=Ge(o,i);return me(l,"int32")}var z9=D({confusionMatrix_:B9}),rl={};Oe(rl,{fromPixels:()=>j9,fromPixelsAsync:()=>V9,toPixels:()=>U9});function od(e,t,n){if(as(e),t!=null&&t.length!==3)throw new Error("tensor3d() requires shape to have three numbers");let r=Cr(e,n);if(r.length!==3&&r.length!==1)throw new Error("tensor3d() requires values to be number[][][] or flat/TypedArray");if(r.length===1&&t==null)throw new Error("tensor3d() requires shape to be provided when `values` are a flat array");return Ta(e,t,r,n)}var al;function E5(e,t=3){if(t>4)throw new Error("Cannot construct Tensor with more than 4 channels from pixels.");if(e==null)throw new Error("pixels passed to tf.browser.fromPixels() can not be null");let n=!1,r=!1,a=!1,s=!1,i=!1,o=!1;if(e.data instanceof Uint8Array)n=!0;else if(typeof ImageData!="undefined"&&e instanceof ImageData)r=!0;else if(typeof HTMLVideoElement!="undefined"&&e instanceof HTMLVideoElement)a=!0;else if(typeof HTMLImageElement!="undefined"&&e instanceof HTMLImageElement)s=!0;else if(e.getContext!=null)i=!0;else if(typeof ImageBitmap!="undefined"&&e instanceof ImageBitmap)o=!0;else throw new Error(`pixels passed to tf.browser.fromPixels() must be either an HTMLVideoElement, HTMLImageElement, HTMLCanvasElement, ImageData in browser, or OffscreenCanvas, ImageData in webworker or {data: Uint32Array, width: number, height: number}, but was ${e.constructor.name}`);if(a){let d=2;if(a&&e.readyState element.")}if(ed(Qh,$.backendName)!=null){let d={pixels:e},p={numChannels:t};return $.runKernel(Qh,d,p)}let[l,c]=a?[e.videoWidth,e.videoHeight]:[e.width,e.height],u;i?u=e.getContext("2d").getImageData(0,0,l,c).data:r||n?u=e.data:(s||a||o)&&(al==null&&(al=document.createElement("canvas").getContext("2d")),al.canvas.width=l,al.canvas.height=c,al.drawImage(e,0,0,l,c),u=al.getImageData(0,0,l,c).data);let h;if(t===4)h=new Int32Array(u);else{let d=l*c;h=new Int32Array(d*t);for(let p=0;p4||s===2)throw new Error(`toPixels only supports depth of size 1, 3 or 4 but got ${s}`);if(n.dtype!=="float32"&&n.dtype!=="int32")throw new Error(`Unsupported type for toPixels: ${n.dtype}. Please use float32 or int32 tensors.`);let i=await n.data(),o=n.dtype==="float32"?255:1,l=new Uint8ClampedArray(a*r*4);for(let c=0;c1)throw new Error(`Tensor values for a float32 Tensor must be in the range [0 - 1] but encountered ${p}.`)}else if(n.dtype==="int32"&&(p<0||p>255))throw new Error(`Tensor values for a int32 Tensor must be in the range [0 - 255] but encountered ${p}.`);s===1?(u[0]=p*o,u[1]=p*o,u[2]=p*o):u[d]=p*o}let h=c*4;l[h+0]=Math.round(u[0]),l[h+1]=Math.round(u[1]),l[h+2]=Math.round(u[2]),l[h+3]=Math.round(u[3])}if(t!=null){t.width=a,t.height=r;let c=t.getContext("2d"),u=new ImageData(l,a,r);c.putImageData(u,0,0)}return n!==e&&n.dispose(),l}var j9=D({fromPixels_:E5}),Ef={};Oe(Ef,{prepareAndValidate:()=>R5});function R5(e,t){let n=e.shape.length,r=t.shape.length;if(n<1)throw new Error(`tf.gatherND() expects the input to be rank 1 or higher, but the rank was ${n}.`);if(r<1)throw new Error(`tf.gatherND() expects the indices to be rank 1 or higher, but the rank was ${r}.`);if(t.dtype!=="int32")throw new Error(`tf.gatherND() expects the indices to be int32 type, but the dtype was ${t.dtype}.`);if(t.shape[r-1]>n)throw new Error(`index innermost dimension length must be <= tensor rank; saw: ${t.shape[r-1]} vs. ${n}`);if(Ft(e.shape)===0)throw new Error(`Requested more than 0 entries, but input is empty. Input shape: ${e.shape}.`);let a=t.shape,s=a[a.length-1],i=1;for(let h=0;hh/c),1].slice(0,s);return[l,i,c,u]}var Rf={};Oe(Rf,{calculateShapes:()=>M5,validateInput:()=>Ff,validateUpdateShape:()=>Mf});function Mf(e,t,n){let r=t.rank>1?t.shape[t.rank-1]:1,a=t.rank>1?t.rank-1:1,s=`Must have updates.shape = indices.shape[:batchDim] + shape[sliceDim:], got updates.shape: ${n.shape}, indices.shape: ${t.shape}, shape: ${e}, sliceDim: ${r}, and batchDim: ${a}.`;if(n.rank1?t.shape[r-1]:1,s=n.length,i=1;for(let h=a;hK9,computeFlatOffset:()=>Y9,computeOutShape:()=>F5,getNormalizedAxes:()=>D5,isSliceContinous:()=>Z9,maskToAxes:()=>ld,parseSliceParams:()=>B5,sliceInfo:()=>J9,startForAxis:()=>L5,startIndicesWithElidedDims:()=>O5,stopForAxis:()=>W5,stopIndicesWithElidedDims:()=>z5,stridesForAxis:()=>P5,stridesWithElidedDims:()=>$5});function K9(e,t,n){let r=e.shape.length;M(r===t.length,()=>`Error in slice${r}D: Length of begin ${t} must match the rank of the array (${r}).`),M(r===n.length,()=>`Error in slice${r}D: Length of size ${n} must match the rank of the array (${r}).`);for(let a=0;a`Error in slice${r}D: begin[${a}] + size[${a}] (${t[a]+n[a]}) would overflow input.shape[${a}] (${e.shape[a]})`)}function ld(e){let t=[],n=0;for(;e>0;)e&1&&t.push(n),e/=2,n++;return t}function F5(e,t,n){let r=[];for(let a=0;a0){let p=t[0],f=n+1;u=O5(i,p,f,r,e),h=z5(o,p,f,a,e),d=$5(s,p,f,e)}else for(let p=0;p-1)s[o]=0;else{let l=V5(t,n,o),c=r[l];e&1<-1)s[o]=Number.MAX_SAFE_INTEGER;else{let l=V5(t,n,o),c=r[l];e&1<0?i=Number.MIN_SAFE_INTEGER:i=Number.MAX_SAFE_INTEGER);let l=r[a];return i<0&&(i+=l),i=ou(0,i,l-1),i}function W5(e,t,n,r,a,s){let i=t[a],o=n[a]||1;(e&1<0?i=Number.MAX_SAFE_INTEGER:i=Number.MIN_SAFE_INTEGER);let l=r[a];return i<0&&(i+=l),o>0?i=ou(0,i,l):i=ou(-1,i,l-1),i}function Z9(e,t,n){let r=n.length;for(let a=0;a1){r=a;break}for(let a=r+1;a0||n[a]!==e[a])return!1;return!0}function Y9(e,t){let n=e.length>0?e[e.length-1]:1;for(let r=0;r{M(i!==-1,()=>"slice() does not support negative begin indexing.")});let s;return n==null?s=new Array(a).fill(-1):typeof n=="number"?s=[n,...new Array(a-1).fill(-1)]:n.lengthi>=0?i:(M(i===-1,()=>`Negative size values should be exactly -1 but got ${i} for the slice() size at index ${o}.`),e.shape[o]-r[o])),[r,s]}function J9(e,t,n,r,a,s,i,o,l){let c=t.slice(),u=n.slice(),h=r;r==null&&(h=new Array(c.length));let d=ld(i);if(d.length>1)throw new Error("Multiple ellipses in slice is not allowed.");if(i!==0&&o!==0)throw new Error("Using both ellipsisMask and newAxisMask is not yet supported.");if(i!==0&&l!==0)throw new Error("Using both ellipsisMask and shrinkAxisMask is not yet supported.");let p=e.length-c.length,f=ld(o),m=e.slice();f.forEach(x=>{c[x]=0,u[x]=1,m.splice(x,0,1)});let{begin:A,end:y,strides:g}=D5(m,d,p,c,u,h,a,s,i);c=A,u=y,h=g;let w=ld(l);w.forEach(x=>{u[x]=c[x]+1,h[x]=1});let b=F5(c,u,h),_=b.filter((x,N)=>w.indexOf(N)===-1);return{nonStrided:h.every(x=>x===1),$begin:c,$end:u,$strides:h,size:b,newShape:m,outShape:_}}var re={};Oe(re,{Serializable:()=>j5,SerializationMap:()=>si,registerClass:()=>Ea});var j5=class{getClassName(){return this.constructor.className}static fromConfig(e,t){return new e(t)}},si=class{constructor(){this.classNameMap={}}static getMap(){return si.instance==null&&(si.instance=new si),si.instance}static register(e){si.getMap().classNameMap[e.className]=[e,e.fromConfig]}};function Ea(e){M(e.className!=null,()=>"Class being registered does not have the static className property defined."),M(typeof e.className=="string",()=>"className is required to be a string, but got type "+typeof e.className),M(e.className.length>0,()=>"Class being registered has an empty-string as its className, which is disallowed."),si.register(e)}var H5={};Oe(H5,{TEST_EPSILON_FLOAT16:()=>G5,encodeStrings:()=>q5,expectArrayBuffersEqual:()=>aI,expectArraysClose:()=>Q9,expectArraysEqual:()=>tI,expectNumbersClose:()=>nI,expectPromiseToFail:()=>eI,expectValuesInRange:()=>rI,testEpsilon:()=>$f});var sI=.001,G5=.1;function Q9(e,t,n){return n==null&&(n=$f()),Df(e,t,(r,a)=>Of(r,a,n))}function $f(){return $.backend.floatPrecision()===32?sI:G5}function Df(e,t,n){let r=!0;if((rn(e)||rn(t))&&(r=!1),rn(e)&&rn(t)&&(r=!0),r){let i=e.constructor.name,o=t.constructor.name;if(i!==o)throw new Error(`Arrays are of different type. Actual: ${i}. Expected: ${o}`)}if(Array.isArray(e)&&Array.isArray(t)){let i=Cr(e),o=Cr(t);if(!Qr(i,o))throw new Error(`Arrays have different shapes. Actual: [${i}]. Expected: [${o}]`)}let a=rn(e)?e:ss(e),s=rn(t)?t:ss(t);if(a.length!==s.length)throw new Error(`Arrays have different lengths actual: ${a.length} vs expected: ${s.length}. -Actual: ${a}. -Expected: ${s}.`);for(let i=0;it.fail(),()=>t())}function tI(e,t){let n=typeof t=="string"||typeof t=="number"||typeof t=="boolean"?[t]:t;return ba(e)||ba(e[0])||ba(t)||ba(t[0])?Df(e,n,(r,a)=>r==a):Df(e,t,(r,a)=>Of(r,a,0))}function nI(e,t,n){if(n==null&&(n=$f()),!Of(e,t,n))throw new Error(`Numbers differ: actual === ${e}, expected === ${t}`)}function Of(e,t,n){return!isFinite(e)&&!isFinite(t)?!0:!(isNaN(e)||isNaN(t)||Math.abs(e-t)>n)}function rI(e,t,n){for(let r=0;rn)throw new Error(`Value out of range:${e[r]} low: ${t}, high: ${n}`)}function aI(e,t){expect(new Float32Array(e)).toEqual(new Float32Array(t))}function q5(e){for(let t=0;tt.dispose())}function Ut(e){return $.keep(e)}function hI(e){return $.time(e)}function dI(e){return $.setBackend(e)}function pI(){return $.ready()}function fI(){return $.backendName}function mI(e){$.removeBackend(e)}function Pf(e){return $.findBackend(e)}function AI(e){return $.findBackendFactory(e)}function sl(e,t,n=1){return $.registerBackend(e,t,n)}function X5(){return $.backend}function yI(e,t){J().setPlatform(e,t)}function gI(e,t){let n=E(e,"a","add"),r=E(t,"b","add");[n,r]=bt(n,r);let a={a:n,b:r};return $.runKernel(va,a)}var se=D({add_:gI});function xI(e,t){let n=E(e,"a","floorDiv"),r=E(t,"b","floorDiv");[n,r]=bt(n,r);let a={a:n,b:r};return $.runKernel(ws,a)}var cd=D({floorDiv_:xI});function wI(e,t){let n=E(e,"a","div"),r=E(t,"b","div");if([n,r]=bt(n,r),n.dtype==="int32"&&r.dtype==="int32")return cd(n,r);let a={a:n,b:r},s={};return $.runKernel(ys,a,s)}var ge=D({div_:wI});function bI(e,t){let n=E(e,"a","mul"),r=E(t,"b","mul");[n,r]=bt(n,r);let a={a:n,b:r};return $.runKernel(Ms,a)}var P=D({mul_:bI});function _I(e){let t=E(e,"x","abs");if(t.dtype==="complex64"){let n={x:t};return $.runKernel(du,n)}else{let n={x:t};return $.runKernel(Zi,n)}}var Dt=D({abs_:_I});function vI(e){let t={x:E(e,"x","acos")};return $.runKernel(Yi,t)}var Lf=D({acos_:vI});function kI(e){let t={x:E(e,"x","acosh")};return $.runKernel(Ji,t)}var Wf=D({acosh_:kI});function II(e){M(Array.isArray(e),()=>"The argument passed to tf.addN() must be a list of tensors"),M(e.length>=1,()=>`Must pass at least one tensor to tf.addN(), but got ${e.length}`);let t=e.map((a,s)=>E(a,`tensors${s}`,"addN")),n=t[0];t.forEach(a=>{if(a.dtype!==n.dtype)throw new Error("All tensors passed to tf.addN() must have the same dtype")}),t.forEach(a=>{if(!Qr(a.shape,n.shape))throw new Error("All tensors passed to tf.addN() must have the same shape")});let r=t;return $.runKernel(is,r)}var Ra=D({addN_:II});function NI(e,t=null,n=!1){let r={x:E(e,"x","all","bool")},a={axis:t,keepDims:n};return $.runKernel(_h,r,a)}var hd=D({all_:NI});function SI(e,t=null,n=!1){let r={x:E(e,"x","any","bool")},a={axis:t,keepDims:n};return $.runKernel(vh,r,a)}var zu=D({any_:SI});function TI(e,t=0){let n={x:E(e,"x","argMax")},r={axis:t};return $.runKernel(os,n,r)}var Pu=D({argMax_:TI});function CI(e,t=0){let n={x:E(e,"x","argMin")},r={axis:t};return $.runKernel(uu,n,r)}var Bf=D({argMin_:CI});function EI(e){let t={x:E(e,"x","asin")};return $.runKernel(Qi,t)}var Vf=D({asin_:EI});function RI(e){let t={x:E(e,"x","asinh")};return $.runKernel(eo,t)}var Uf=D({asinh_:RI});function MI(e){let t={x:E(e,"x","atan")};return $.runKernel(to,t)}var jf=D({atan_:MI});function FI(e,t){let n=E(e,"a","atan2"),r=E(t,"b","atan2");[n,r]=bt(n,r);let a={a:n,b:r};return $.runKernel(ro,a)}var Hf=D({atan2_:FI});function $I(e){let t={x:E(e,"x","atanh")};return $.runKernel(no,t)}var Gf=D({atanh_:$I});function DI(e,t,n,r,a="NHWC",s){let i=e[3],o=[...t,i],l=K5(a);return Lu(e,o,n,s,r,null,null,l)}function Z5(e,t,n,r,a,s,i="channelsLast"){let[o,l]=dd(t),c;if(i==="channelsLast")c=[o,l,e[3],e[3]];else if(i==="channelsFirst")c=[o,l,e[1],e[1]];else throw new Error(`Unknown dataFormat ${i}`);return Lu(e,c,n,r,a,s,!1,i)}function OI(e,t,n,r,a,s,i="NDHWC"){let[o,l,c]=qf(t),u,h;if(i==="NDHWC")h="channelsLast",u=[o,l,c,e[4],e[4]];else if(i==="NCDHW")h="channelsFirst",u=[o,l,c,e[1],e[1]];else throw new Error(`Unknown dataFormat ${i}`);return Y5(e,u,n,r,a,!1,h,s)}function Lu(e,t,n,r,a,s,i=!1,o="channelsLast"){let[l,c,u,h]=[-1,-1,-1,-1];if(o==="channelsLast")[l,c,u,h]=e;else if(o==="channelsFirst")[l,h,c,u]=e;else throw new Error(`Unknown dataFormat ${o}`);let[d,p,,f]=t,[m,A]=dd(n),[y,g]=dd(r),w=il(d,y),b=il(p,g),{padInfo:_,outHeight:x,outWidth:N}=zI(a,c,u,m,A,w,b,s,o),T=i?f*h:f,C;return o==="channelsFirst"?C=[l,T,x,N]:o==="channelsLast"&&(C=[l,x,N,T]),{batchSize:l,dataFormat:o,inHeight:c,inWidth:u,inChannels:h,outHeight:x,outWidth:N,outChannels:T,padInfo:_,strideHeight:m,strideWidth:A,filterHeight:d,filterWidth:p,effectiveFilterHeight:w,effectiveFilterWidth:b,dilationHeight:y,dilationWidth:g,inShape:e,outShape:C,filterShape:t}}function Y5(e,t,n,r,a,s=!1,i="channelsLast",o){let[l,c,u,h,d]=[-1,-1,-1,-1,-1];if(i==="channelsLast")[l,c,u,h,d]=e;else if(i==="channelsFirst")[l,d,c,u,h]=e;else throw new Error(`Unknown dataFormat ${i}`);let[p,f,m,,A]=t,[y,g,w]=qf(n),[b,_,x]=qf(r),N=il(p,b),T=il(f,_),C=il(m,x),{padInfo:F,outDepth:O,outHeight:W,outWidth:V}=PI(a,c,u,h,y,g,w,N,T,C,o),U=s?A*d:A,j;return i==="channelsFirst"?j=[l,U,O,W,V]:i==="channelsLast"&&(j=[l,O,W,V,U]),{batchSize:l,dataFormat:i,inDepth:c,inHeight:u,inWidth:h,inChannels:d,outDepth:O,outHeight:W,outWidth:V,outChannels:U,padInfo:F,strideDepth:y,strideHeight:g,strideWidth:w,filterDepth:p,filterHeight:f,filterWidth:m,effectiveFilterDepth:N,effectiveFilterHeight:T,effectiveFilterWidth:C,dilationDepth:b,dilationHeight:_,dilationWidth:x,inShape:e,outShape:j,filterShape:t}}function LI(e,t,n,r,a){r==null&&(r=Xf(e,t,n));let s=e[0],i=e[1],o=ii((s-t+2*r)/n+1,a),l=ii((i-t+2*r)/n+1,a);return[o,l]}function WI(e,t,n,r,a,s){a==null&&(a=Xf(e,t,r));let i=e[0],o=e[1],l=e[2],c=ii((i-t+2*a)/r+1,s),u=ii((o-t+2*a)/r+1,s),h=ii((l-t+2*a)/r+1,s);return[c,u,h,n]}function Xf(e,t,n,r=1){let a=il(t,r);return Math.floor((e[0]*(n-1)-n+a)/2)}function dd(e){return typeof e=="number"?[e,e,e]:e.length===2?[e[0],e[1],1]:e}function qf(e){return typeof e=="number"?[e,e,e]:e}function il(e,t){return t<=1?e:e+(e-1)*(t-1)}function zI(e,t,n,r,a,s,i,o,l){let c,u,h;if(typeof e=="number"){c={top:e,bottom:e,left:e,right:e,type:e===0?"VALID":"NUMBER"};let d=LI([t,n],s,r,e,o);u=d[0],h=d[1]}else if(e==="same"){u=Math.ceil(t/r),h=Math.ceil(n/a);let d=Math.max(0,(u-1)*r+s-t),p=Math.max(0,(h-1)*a+i-n),f=Math.floor(d/2),m=d-f,A=Math.floor(p/2),y=p-A;c={top:f,bottom:m,left:A,right:y,type:"SAME"}}else if(e==="valid")c={top:0,bottom:0,left:0,right:0,type:"VALID"},u=Math.ceil((t-s+1)/r),h=Math.ceil((n-i+1)/a);else if(typeof e=="object"){let d=l==="channelsLast"?e[1][0]:e[2][0],p=l==="channelsLast"?e[1][1]:e[2][1],f=l==="channelsLast"?e[2][0]:e[3][0],m=l==="channelsLast"?e[2][1]:e[3][1];c={top:d,bottom:p,left:f,right:m,type:d===0&&p===0&&f===0&&m===0?"VALID":"EXPLICIT"},u=ii((t-s+d+p)/r+1,o),h=ii((n-i+f+m)/a+1,o)}else throw Error(`Unknown padding parameter: ${e}`);return{padInfo:c,outHeight:u,outWidth:h}}function PI(e,t,n,r,a,s,i,o,l,c,u){let h,d,p,f;if(typeof e=="number"){h={top:e,bottom:e,left:e,right:e,front:e,back:e,type:e===0?"VALID":"NUMBER"};let m=WI([t,n,r,1],o,1,a,e,u);d=m[0],p=m[1],f=m[2]}else if(e==="same"){d=Math.ceil(t/a),p=Math.ceil(n/s),f=Math.ceil(r/i);let m=(d-1)*a+o-t,A=(p-1)*s+l-n,y=(f-1)*i+c-r,g=Math.floor(m/2),w=m-g,b=Math.floor(A/2),_=A-b,x=Math.floor(y/2),N=y-x;h={top:b,bottom:_,left:x,right:N,front:g,back:w,type:"SAME"}}else if(e==="valid")h={top:0,bottom:0,left:0,right:0,front:0,back:0,type:"VALID"},d=Math.ceil((t-o+1)/a),p=Math.ceil((n-l+1)/s),f=Math.ceil((r-c+1)/i);else throw Error(`Unknown padding parameter: ${e}`);return{padInfo:h,outDepth:d,outHeight:p,outWidth:f}}function ii(e,t){if(!t)return Math.trunc(e);switch(t){case"round":return Math.round(e);case"ceil":return Math.ceil(e);case"floor":return Math.floor(e);default:throw new Error(`Unknown roundingMode ${t}`)}}function Ma(e){let[t,n,r]=dd(e);return t===1&&n===1&&r===1}function Mr(e,t){return Ma(e)||Ma(t)}function K5(e){if(e==="NHWC")return"channelsLast";if(e==="NCHW")return"channelsFirst";throw new Error(`Unknown dataFormat ${e}`)}function BI(e,t){let n={x:E(e,"x","reshape","string_or_numeric")},r={shape:t};return $.runKernel(Do,n,r)}var H=D({reshape_:BI});function VI(e,t,n,r,a){let s=E(e,"x","avgPool","float32"),i=1;M(Mr(n,i),()=>`Error in avgPool: Either strides or dilations must be 1. Got strides ${n} and dilations '${i}'`);let o=s,l=!1;s.rank===3&&(l=!0,o=H(s,[1,s.shape[0],s.shape[1],s.shape[2]])),M(o.rank===4,()=>`Error in avgPool: x must be rank 4 but got rank ${o.rank}.`),a!=null&&M(Vt(r),()=>`Error in avgPool: pad must be an integer when using, dimRoundingMode ${a} but got pad ${r}.`);let c={x:o},u={filterSize:t,strides:n,pad:r,dimRoundingMode:a},h=$.runKernel(ls,c,u);return h=me(h,s.dtype),l?H(h,[h.shape[1],h.shape[2],h.shape[3]]):h}var Wu=D({avgPool_:VI});function UI(e,t,n,r,a,s="NDHWC"){let i=E(e,"x","avgPool3d","float32"),o=i,l=!1;i.rank===4&&(l=!0,o=H(i,[1,i.shape[0],i.shape[1],i.shape[2],i.shape[3]])),M(o.rank===5,()=>`Error in avgPool3d: x must be rank 5 but got rank ${o.rank}.`),M(s==="NDHWC",()=>`Error in avgPool3d: Only NDHWC is currently supported, but got dataFormat of ${s}`),a!=null&&M(Vt(r),()=>`Error in avgPool3d: pad must be an integer when using, dimRoundingMode ${a} but got pad ${r}.`);let c={x:o},u={filterSize:t,strides:n,pad:r,dimRoundingMode:a,dataFormat:s},h=$.runKernel(cu,c,u);return h=me(h,o.dtype),l?H(h,[h.shape[1],h.shape[2],h.shape[3],h.shape[4]]):h}var Kf=D({avgPool3d_:UI});function jI(e,t=0){M(e.length>=1,()=>"Pass at least one tensor to concat");let n=Du(e,"tensors","concat","string_or_numeric");if(n[0].dtype==="complex64"&&n.forEach(s=>{if(s.dtype!=="complex64")throw new Error(`Cannot concatenate complex64 tensors with a tensor - with dtype ${s.dtype}. `)}),n.length===1)return Er(n[0]);let r=n,a={axis:t};return $.runKernel(ao,r,a)}var rt=D({concat_:jI});function HI(e){let t={x:E(e,"x","sigmoid")};return $.runKernel(js,t)}var Cn=D({sigmoid_:HI});function GI(e,t,n){let r=E(e,"x","slice","string_or_numeric");if(r.rank===0)throw new Error("Slicing scalar is not possible");let a={x:r},s={begin:t,size:n};return $.runKernel(Lo,a,s)}var Ee=D({slice_:GI});function qI(e){let t={x:E(e,"x","tanh")};return $.runKernel(Zs,t)}var ol=D({tanh_:qI});function XI(e,t,n,r,a,s){let i=E(e,"forgetBias","basicLSTMCell"),o=E(t,"lstmKernel","basicLSTMCell"),l=E(n,"lstmBias","basicLSTMCell"),c=E(r,"data","basicLSTMCell"),u=E(a,"c","basicLSTMCell"),h=E(s,"h","basicLSTMCell"),d=rt([c,h],1),p=Ge(d,o),f=se(p,l),m=f.shape[0],A=f.shape[1]/4,y=[m,A],g=Ee(f,[0,0],y),w=Ee(f,[0,A],y),b=Ee(f,[0,A*2],y),_=Ee(f,[0,A*3],y),x=se(P(Cn(g),ol(w)),P(u,Cn(se(i,b)))),N=P(ol(x),Cn(_));return[x,N]}var KI=D({basicLSTMCell_:XI});function ZI(e,t,n){let r=E(e,"x","batchToSpaceND"),a=t.reduce((o,l)=>o*l);M(r.rank>=1+t.length,()=>`input rank is ${r.rank} but should be > than blockShape.length ${t.length}`),M(n.length===t.length,()=>`crops.length is ${n.length} but should be equal to blockShape.length ${t.length}`),M(r.shape[0]%a==0,()=>`input tensor batch is ${r.shape[0]} but is not divisible by the product of the elements of blockShape ${t.join(" * ")} === ${a}`);let s={x:r},i={blockShape:t,crops:n};return $.runKernel(hu,s,i)}var Bu=D({batchToSpaceND_:ZI});function YI(e){let t;return e.rank===0||e.rank===1?t=H(e,[1,1,1,e.size]):e.rank===2?t=H(e,[1,1,e.shape[0],e.shape[1]]):e.rank===3?t=H(e,[1,e.shape[0],e.shape[1],e.shape[2]]):t=e,t}function JI(e,t,n,r,a,s){s==null&&(s=.001);let i=E(e,"x","batchNorm"),o=E(t,"mean","batchNorm"),l=E(n,"variance","batchNorm"),c;a!=null&&(c=E(a,"scale","batchNorm"));let u;r!=null&&(u=E(r,"offset","batchNorm")),M(o.rank===l.rank,()=>"Batch normalization gradient requires mean and variance to have equal ranks."),M(u==null||o.rank===u.rank,()=>"Batch normalization gradient requires mean and offset to have equal ranks."),M(c==null||o.rank===c.rank,()=>"Batch normalization gradient requires mean and scale to have equal ranks.");let h={x:YI(i),scale:c,offset:u,mean:o,variance:l},d={varianceEpsilon:s},p=$.runKernel(bs,h,d);return H(p,i.shape)}var oi=D({batchNorm_:JI});function QI(e,t,n,r,a,s){let i=E(e,"x","batchNorm"),o=E(t,"mean","batchNorm"),l=E(n,"variance","batchNorm"),c;a!=null&&(c=E(a,"scale","batchNorm"));let u;return r!=null&&(u=E(r,"offset","batchNorm")),M(i.rank===2,()=>`Error in batchNorm2D: x must be rank 2 but got rank ${i.rank}.`),M(o.rank===2||o.rank===1,()=>`Error in batchNorm2D: mean must be rank 2 or rank 1 but got rank ${o.rank}.`),M(l.rank===2||l.rank===1,()=>`Error in batchNorm2D: variance must be rank 2 or rank 1 but got rank ${l.rank}.`),c!=null&&M(c.rank===2||c.rank===1,()=>`Error in batchNorm2D: scale must be rank 2 or rank 1 but got rank ${c.rank}.`),u!=null&&M(u.rank===2||u.rank===1,()=>`Error in batchNorm2D: offset must be rank 2 or rank 1 but got rank ${u.rank}.`),oi(i,o,l,u,c,s)}var J5=D({batchNorm2d_:QI});function eN(e,t,n,r,a,s){let i=E(e,"x","batchNorm"),o=E(t,"mean","batchNorm"),l=E(n,"variance","batchNorm"),c;a!=null&&(c=E(a,"scale","batchNorm"));let u;return r!=null&&(u=E(r,"offset","batchNorm")),M(i.rank===3,()=>`Error in batchNorm3D: x must be rank 3 but got rank ${i.rank}.`),M(o.rank===3||o.rank===1,()=>`Error in batchNorm3D: mean must be rank 3 or rank 1 but got rank ${o.rank}.`),M(l.rank===3||l.rank===1,()=>`Error in batchNorm3D: variance must be rank 3 or rank 1 but got rank ${l.rank}.`),c!=null&&M(c.rank===3||c.rank===1,()=>`Error in batchNorm3D: scale must be rank 3 or rank 1 but got rank ${c.rank}.`),u!=null&&M(u.rank===3||u.rank===1,()=>`Error in batchNorm3D: offset must be rank 3 or rank 1 but got rank ${u.rank}.`),oi(i,o,l,u,c,s)}var Q5=D({batchNorm3d_:eN});function tN(e,t,n,r,a,s){let i=E(e,"x","batchNorm"),o=E(t,"mean","batchNorm"),l=E(n,"variance","batchNorm"),c;a!=null&&(c=E(a,"scale","batchNorm"));let u;return r!=null&&(u=E(r,"offset","batchNorm")),M(i.rank===4,()=>`Error in batchNorm4D: x must be rank 4 but got rank ${i.rank}.`),M(o.rank===4||o.rank===1,()=>`Error in batchNorm4D: mean must be rank 4 or rank 1 but got rank ${o.rank}.`),M(l.rank===4||l.rank===1,()=>`Error in batchNorm4D: variance must be rank 4 or rank 1 but got rank ${l.rank}.`),c!=null&&M(c.rank===4||c.rank===1,()=>`Error in batchNorm4D: scale must be rank 4 or rank 1 but got rank ${c.rank}.`),u!=null&&M(u.rank===4||u.rank===1,()=>`Error in batchNorm4D: offset must be rank 4 or rank 1 but got rank ${u.rank}.`),oi(i,o,l,u,c,s)}var ex=D({batchNorm4d_:tN});function nN(e,t,n){let r=E(e,"x","bincount"),a=E(t,"weights","bincount");M(r.dtype==="int32",()=>`Error in bincount: input dtype must be int32, but got ${r.dtype}`),M(n>=0,()=>`size must be non-negative, but got ${n}.`),M(a.size===r.size||a.size===0,()=>`Error in bincount: weights must have the same size as input or0-length, but got input shape: ${r.shape}, weights shape: ${a.shape}.`);let s={x:r,weights:a},i={size:n};return $.runKernel(Nh,s,i)}var tx=D({bincount_:nN});function rN(e,t){let n=E(e,"broadcastTo","x"),r=n.shape;if(t.some(l=>!(l>0)||l%1!=0))throw new Error(`broadcastTo(): Invalid broadcast shape [${t}].`);if(t.lengthn.rank){let l=n.shape.slice();for(;l.length=0;l--)if(a[l]===t[l])s[l]=1;else if(n.shape[l]!==1)throw new Error(`broadcastTo(): [${r}] cannot be broadcast to [${t}].`);if(s.map((l,c)=>l>1?c:-1).filter(l=>l>=0).length===0)return Er(n);let i={x:n},o={reps:s};return $.runKernel(Ia,i,o)}var Vu=D({broadcastTo_:rN});function aN(e){let t={x:E(e,"x","ceil")};return $.runKernel(hs,t)}var Zf=D({ceil_:aN});function sN(e,t,n){let r=E(e,"x","clipByValue");M(t<=n,()=>`Error in clip: min (${t}) must be less than or equal to max (${n}).`);let a={x:r},s={clipValueMin:t,clipValueMax:n};return $.runKernel(ka,a,s)}var wn=D({clipByValue_:sN});function iN(e){return rt(e,0)}var nx=D({concat1d_:iN});function oN(e,t){return rt(e,t)}var ll=D({concat2d_:oN});function lN(e,t){return rt(e,t)}var rx=D({concat3d_:lN});function uN(e,t){return rt(e,t)}var ax=D({concat4d_:uN});function cN(e,t,n,r,a="NHWC",s=[1,1],i){let o=E(e,"x","conv2d"),l=E(t,"filter","conv2d"),c=o,u=!1;o.rank===3&&(u=!0,c=H(o,[1,o.shape[0],o.shape[1],o.shape[2]])),M(c.rank===4,()=>`Error in conv2d: input must be rank 4, but got rank ${c.rank}.`),M(l.rank===4,()=>`Error in conv2d: filter must be rank 4, but got rank ${l.rank}.`),i!=null&&M(Vt(r),()=>`Error in conv2d: pad must be an integer when using, dimRoundingMode ${i} but got pad ${r}.`);let h=a==="NHWC"?c.shape[3]:c.shape[1];M(h===l.shape[2],()=>`Error in conv2d: depth of input (${h}) must match input depth for filter ${l.shape[2]}.`),M(Mr(n,s),()=>`Error in conv2D: Either strides or dilations must be 1. Got strides ${n} and dilations '${s}'`);let d={x:c,filter:l},p={strides:n,pad:r,dataFormat:a,dilations:s,dimRoundingMode:i},f=$.runKernel(ds,d,p);return u?H(f,[f.shape[1],f.shape[2],f.shape[3]]):f}var ta=D({conv2d_:cN});function hN(e,t,n,r,a="NWC",s=1,i){let o=E(e,"x","conv1d"),l=E(t,"filter","conv1d"),c=o,u=!1;o.rank===2&&(u=!0,c=H(o,[1,o.shape[0],o.shape[1]])),M(c.rank===3,()=>`Error in conv1d: input must be rank 3, but got rank ${c.rank}.`),M(l.rank===3,()=>`Error in conv1d: filter must be rank 3, but got rank ${l.rank}.`),i!=null&&M(Vt(r),()=>`Error in conv1d: pad must be an integer when using, dimRoundingMode ${i} but got pad ${r}.`),M(c.shape[2]===l.shape[1],()=>`Error in conv1d: depth of input (${c.shape[2]}) must match input depth for filter ${l.shape[1]}.`),M(Mr(n,s),()=>`Error in conv1D: Either stride or dilation must be 1. Got stride ${n} and dilation '${s}'`),M(a==="NWC",()=>`Error in conv1d: got dataFormat of ${a} but only NWC is currently supported.`);let h=H(l,[1,l.shape[0],l.shape[1],l.shape[2]]),d=H(c,[c.shape[0],1,c.shape[1],c.shape[2]]),p=ta(d,h,[1,n],r,"NHWC",[1,s],i);return u?H(p,[p.shape[2],p.shape[3]]):H(p,[p.shape[0],p.shape[2],p.shape[3]])}var pd=D({conv1d_:hN});function dN(e,t,n,r,a,s="NHWC",i){M(e.length===t.rank,()=>`Length of inShape (${e.length}) and rank of dy (${t.rank}) must match`);let o=e,l=t,c=!1;t.rank===3&&(c=!0,l=H(t,[1,t.shape[0],t.shape[1],t.shape[2]]),o=[1,e[0],e[1],e[2]]),M(o.length===4,()=>`Error in conv2dDerInput: inShape must be length 4, but got length ${o.length}.`),M(l.rank===4,()=>`Error in conv2dDerInput: dy must be rank 4, but got rank ${l.rank}`),M(n.rank===4,()=>`Error in conv2dDerInput: filter must be rank 4, but got rank ${n.rank}`);let u=s==="NHWC"?o[3]:o[1],h=s==="NHWC"?l.shape[3]:l.shape[1];M(u===n.shape[2],()=>`Error in conv2dDerInput: depth of input (${u}) must match input depth for filter ${n.shape[2]}.`),M(h===n.shape[3],()=>`Error in conv2dDerInput: depth of output (${h}) must match output depth for filter ${n.shape[3]}.`),i!=null&&M(Vt(a),()=>`Error in conv2dDerInput: pad must be an integer when using, dimRoundingMode ${i} but got pad ${a}.`);let d={dy:l,filter:n},p={strides:r,pad:a,dataFormat:s,dimRoundingMode:i,inputShape:o},f=$.runKernel(ps,d,p);return c?H(f,[f.shape[1],f.shape[2],f.shape[3]]):f}var Yf=D({conv2DBackpropInput_:dN});function pN(e,t,n,r,a,s){let i=E(e,"x","conv2dTranspose"),o=E(t,"filter","conv2dTranspose");return Yf(n,i,o,r,a,"NHWC",s)}var fd=D({conv2dTranspose_:pN});function fN(e,t,n,r,a="NDHWC",s=[1,1,1]){let i=E(e,"x","conv3d"),o=E(t,"filter","conv3d"),l=i,c=!1;i.rank===4&&(c=!0,l=H(i,[1,i.shape[0],i.shape[1],i.shape[2],i.shape[3]])),M(l.rank===5,()=>`Error in conv3d: input must be rank 5, but got rank ${l.rank}.`),M(o.rank===5,()=>`Error in conv3d: filter must be rank 5, but got rank ${o.rank}.`),M(l.shape[4]===o.shape[3],()=>`Error in conv3d: depth of input (${l.shape[4]}) must match input depth for filter ${o.shape[3]}.`),M(Mr(n,s),()=>`Error in conv3D: Either strides or dilations must be 1. Got strides ${n} and dilations '${s}'`),M(a==="NDHWC",()=>`Error in conv3d: got dataFormat of ${a} but only NDHWC is currently supported.`);let u={x:l,filter:o},h={strides:n,pad:r,dataFormat:a,dilations:s},d=$.runKernel(pu,u,h);return c?H(d,[d.shape[1],d.shape[2],d.shape[3],d.shape[4]]):d}var Jf=D({conv3d_:fN});function mN(e,t,n,r,a){M(e.length===t.rank,()=>`Length of inShape (${e.length}) and rank of dy (${t.rank}) must match`);let s=e,i=t,o=!1;t.rank===4&&(o=!0,i=H(t,[1,t.shape[0],t.shape[1],t.shape[2],t.shape[3]]),s=[1,e[0],e[1],e[2],e[3]]);let l=s[4],c=i.shape[4];M(s.length===5,()=>`Error in conv3dDerInput: inShape must be length 5, but got length ${s.length}.`),M(i.rank===5,()=>`Error in conv3dDerInput: dy must be rank 5, but got rank ${i.rank}`),M(n.rank===5,()=>`Error in conv3dDerInput: filter must be rank 5, but got rank ${n.rank}`),M(l===n.shape[3],()=>`Error in conv3dDerInput: depth of input (${l}) must match input depth for filter ${n.shape[3]}.`),M(c===n.shape[4],()=>`Error in conv3dDerInput: depth of output (${c}) must match output depth for filter ${n.shape[4]}.`);let u={dy:i,filter:n},h={pad:a,strides:r,inputShape:s},d=$.runKernel(Eh,u,h);return o?H(d,[d.shape[1],d.shape[2],d.shape[3],d.shape[4]]):d}var sx=D({conv3DBackpropInput_:mN});function AN(e,t,n,r,a){let s=E(e,"x","conv3dTranspose"),i=E(t,"filter","conv3dTranspose");return sx(n,s,i,r,a)}var yN=D({conv3dTranspose_:AN});function gN(e){let t={x:E(e,"x","cos")};return $.runKernel(fs,t)}var Uu=D({cos_:gN});function xN(e){let t={x:E(e,"x","cosh")};return $.runKernel(so,t)}var md=D({cosh_:xN});function wN(e,t=0,n=!1,r=!1){let a={x:E(e,"x","cumsum")},s={axis:t,exclusive:n,reverse:r};return $.runKernel(ms,a,s)}var Ad=D({cumsum_:wN});function bN(e,t,n,r=!1){let a=E(e,"x","denseBincount"),s=E(t,"weights","denseBincount");M(a.dtype==="int32",()=>`Error in denseBincount: input dtype must be int32, but got ${a.dtype}`),M(a.rank<=2,()=>`Error in denseBincount: input must be at most rank 2, but got rank ${a.rank}.`),M(n>=0,()=>`size must be non-negative, but got ${n}.`),M(s.size===a.size||s.size===0,()=>`Error in denseBincount: weights must have the same shape as x or 0-length, but got x shape: ${a.shape}, weights shape: ${s.shape}.`);let i={x:a,weights:s},o={size:n,binaryOutput:r};return $.runKernel(Rh,i,o)}var ix=D({denseBincount_:bN});function _N(e,t,n="NHWC"){let r=E(e,"x","depthToSpace"),a=n==="NHWC"?r.shape[1]:r.shape[2],s=n==="NHWC"?r.shape[2]:r.shape[3],i=n==="NHWC"?r.shape[3]:r.shape[1];M(a*t>=0,()=>`Negative dimension size caused by overflow when multiplying - ${a} and ${t} for depthToSpace with input shape - ${r.shape}`),M(s*t>=0,()=>`Negative dimension size caused by overflow when multiplying - ${s} and ${t} for depthToSpace with input shape - ${r.shape}`),M(i%(t*t)==0,()=>`Dimension size must be evenly divisible by ${t*t} but is ${i} for depthToSpace with input shape ${r.shape}`);let o={x:r},l={blockSize:t,dataFormat:n};return $.runKernel(oo,o,l)}var Qf=D({depthToSpace_:_N});function vN(e,t,n,r,a="NHWC",s=[1,1],i){let o=E(e,"x","depthwiseConv2d"),l=E(t,"filter","depthwiseConv2d"),c=o,u=!1;o.rank===3&&(u=!0,c=H(o,[1,o.shape[0],o.shape[1],o.shape[2]])),M(c.rank===4,()=>`Error in depthwiseConv2d: input must be rank 4, but got rank ${c.rank}.`),M(l.rank===4,()=>`Error in depthwiseConv2d: filter must be rank 4, but got rank ${l.rank}.`),M(c.shape[3]===l.shape[2],()=>`Error in depthwiseConv2d: number of input channels (${c.shape[3]}) must match the inChannels dimension in filter ${l.shape[2]}.`),i!=null&&M(Vt(r),()=>`Error in depthwiseConv2d: pad must be an integer when using, dimRoundingMode ${i} but got pad ${r}.`);let h={x:c,filter:l},d={strides:n,pad:r,dataFormat:a,dilations:s,dimRoundingMode:i},p=$.runKernel(As,h,d);return u?H(p,[p.shape[1],p.shape[2],p.shape[3]]):p}var ul=D({depthwiseConv2d_:vN});function kN(e){let t={x:E(e,"x","diag")};return $.runKernel($h,t)}var IN=D({diag_:kN});function NN(e,t,n,r,a=[1,1],s="NHWC"){let i=E(e,"x","dilation2d"),o=E(t,"filter","dilation2d");M(i.rank===3||i.rank===4,()=>`Error in dilation2d: input must be rank 3 or 4, but got rank ${i.rank}.`),M(o.rank===3,()=>`Error in dilation2d: filter must be rank 3, but got rank ${o.rank}.`),M(s==="NHWC",()=>`Error in dilation2d: Only NHWC is currently supported, but got dataFormat of ${s}`);let l=i,c=!1;i.rank===3&&(l=H(i,[1,i.shape[0],i.shape[1],i.shape[2]]),c=!0);let u={x:l,filter:o},h={strides:n,pad:r,dilations:a},d=$.runKernel(fu,u,h);return c?H(d,[d.shape[1],d.shape[2],d.shape[3]]):d}var em=D({dilation2d_:NN});function SN(e,t){let n=e.length,r=[];for(let a=0;a1&&i===1&&r.unshift(s)}return r}function Ot(e,t){let n=[];for(let r=0;r1)&&n.unshift(s)}return n}function ft(e,t){let n=[],r=Math.max(e.length,t.length);for(let a=0;a"The first dimension of `a` must match the size of `condition`."),s.rank!==1&&nn(s.shape,l.shape,"Error in where: ");let c={condition:s,t:o,e:l};return $.runKernel(zo,c)}var bn=D({where_:CN});function EN(e){let t={x:E(e,"x","zerosLike")};return $.runKernel(Xo,t)}var je=D({zerosLike_:EN});function RN(e,t){let n=E(e,"a","div"),r=E(t,"b","div");[n,r]=bt(n,r);let a=ge(n,r),s=je(a),i=Fa(r,s);return bn(i,s,a)}var tm=D({divNoNan_:RN});function MN(e,t){let n=E(e,"t1","dot"),r=E(t,"t2","dot");M((n.rank===1||n.rank===2)&&(r.rank===1||r.rank===2),()=>`Error in dot: inputs must all be rank 1 or 2, but got ranks ${n.rank} and ${r.rank}.`);let a=n.rank===1?n.size:n.shape[1],s=r.rank===1?r.size:r.shape[0];if(M(a===s,()=>`Error in dot: inner dimensions of inputs must match, but got ${a} and ${s}.`),n.rank===1&&r.rank===1){let i=H(n,[1,-1]),o=H(r,[-1,1]),l=Ge(i,o);return H(l,[])}else if(n.rank===1&&r.rank===2){let i=H(n,[1,-1]),o=H(r,[r.shape[0],r.shape[1]]),l=Ge(i,o);return H(l,[l.size])}else if(n.rank===2&&r.rank===1){let i=H(r,[-1,1]),o=Ge(n,i);return H(o,[o.size])}else{let i=H(r,[r.shape[0],r.shape[1]]);return Ge(n,i)}}var ox=D({dot_:MN});function FN(e){let t={x:E(e,"x","elu")};return $.runKernel(lo,t)}var cl=D({elu_:FN});function $N(e){let t=E(e,"x","erf");M(t.dtype==="int32"||t.dtype==="float32",()=>"Input dtype must be `int32` or `float32`."),t.dtype==="int32"&&(t=me(t,"float32"));let n={x:t};return $.runKernel(uo,n)}var nm=D({erf_:$N});function DN(e){let t={x:E(e,"x","exp")};return $.runKernel(gs,t)}var Hn=D({exp_:DN});function ON(e,t=0){let n=E(e,"x","expandDims","string_or_numeric");M(t<=n.rank,()=>"Axis must be <= rank of the tensor");let r={input:n},a={dim:t};return $.runKernel(ho,r,a)}var Yt=D({expandDims_:ON});function zN(e){let t={x:E(e,"x","expm1")};return $.runKernel(po,t)}var rm=D({expm1_:zN});function PN(e,t){let n=E(e,"x","tile","string_or_numeric");M(n.rank===t.length,()=>`Error in transpose: rank of input ${n.rank} must match length of reps ${t}.`);let r={x:n},a={reps:t};return $.runKernel(Ia,r,a)}var $a=D({tile_:PN});function LN(e,t,n,r="float32"){t==null&&(t=e);let a=Le([e,t],r),s=e<=t?e:t;for(let o=0;o`Error in localResponseNormalization: x must be rank 3 or 4 but got - rank ${s.rank}.`),M(Vt(t),()=>`Error in localResponseNormalization: depthRadius must be an integer but got depthRadius ${t}.`);let i=s,o=!1;s.rank===3&&(o=!0,i=H(s,[1,s.shape[0],s.shape[1],s.shape[2]]));let l={x:i},c={depthRadius:t,bias:n,alpha:r,beta:a},u=$.runKernel(gu,l,c);return o?H(u,[u.shape[1],u.shape[2],u.shape[3]]):u}var sm=D({localResponseNormalization_:YN});function JN(e){let t={x:E(e,"x","log")};return $.runKernel(Is,t)}var En=D({log_:JN});function QN(e){let t={x:E(e,"x","log1p")};return $.runKernel(vo,t)}var xd=D({log1p_:QN});function eS(e){return M(_a(e),()=>"The f passed in grad(f) must be a function"),(t,n)=>{let r=E(t,"x","tf.grad","string_or_numeric"),a=n!=null?E(n,"dy","tf.grad"):null;return $.tidy(()=>{let{value:s,grads:i}=$.gradients(()=>e(r),[r],a);return a!=null&&nn(s.shape,a.shape,"The shape of dy passed in grad(f)(x, dy) must match the shape returned by f(x)"),wd(i),i[0]})}}function tS(e){return M(_a(e),()=>"The f passed in grads(f) must be a function"),(t,n)=>{M(Array.isArray(t),()=>"The args passed in grads(f)(args) must be an array of `Tensor`s or `TensorLike`s");let r=Du(t,"args","tf.grads","string_or_numeric"),a=n!=null?E(n,"dy","tf.grads"):null;return $.tidy(()=>{let{value:s,grads:i}=$.gradients(()=>e(...r),r,a);return a!=null&&nn(s.shape,a.shape,"The shape of dy passed in grads(f)([x1,...], dy) must match the shape returned by f([x1,...])"),wd(i),i})}}function nS(e){return M(_a(e),()=>"The f passed in valueAndGrad(f) must be a function"),(t,n)=>{M(t instanceof Ve,()=>"The x passed in valueAndGrad(f)(x) must be a tensor"),M(n==null||n instanceof Ve,()=>"The dy passed in valueAndGrad(f)(x, dy) must be a tensor");let{grads:r,value:a}=$.gradients(()=>e(t),[t],n);return wd(r),{grad:r[0],value:a}}}function rS(e){return M(_a(e),()=>"The f passed in valueAndGrads(f) must be a function"),(t,n)=>{M(Array.isArray(t)&&t.every(a=>a instanceof Ve),()=>"The args passed in valueAndGrads(f)(args) must be array of tensors"),M(n==null||n instanceof Ve,()=>"The dy passed in valueAndGrads(f)(args, dy) must be a tensor");let r=$.gradients(()=>e(...t),t,n);return n!=null&&nn(r.value.shape,n.shape,"The shape of dy passed in valueAndGrads(f)([x1,...], dy) must match the shape returned by f([x1,...])"),wd(r.grads),r}}function dx(e,t){M(_a(e),()=>"The f passed in variableGrads(f) must be a function"),M(t==null||Array.isArray(t)&&t.every(c=>c instanceof Mu),()=>"The varList passed in variableGrads(f, varList) must be an array of variables");let n=t!=null;if(!n){t=[];for(let c in $.registeredVariables)t.push($.registeredVariables[c])}let r=n?t.filter(c=>!c.trainable):null,a=t.length;t=t.filter(c=>c.trainable),M(t.length>0,()=>`variableGrads() expects at least one of the input variables to be trainable, but none of the ${a} variables is trainable.`);let s=!0,{value:i,grads:o}=$.gradients(e,t,null,s);M(o.some(c=>c!=null),()=>"Cannot find a connection between any variable and the result of the loss function y=f(x). Please make sure the operations that use variables are inside the function f passed to minimize()."),M(i.rank===0,()=>`The f passed in variableGrads(f) must return a scalar, but it returned a rank-${i.rank} tensor`);let l={};return t.forEach((c,u)=>{o[u]!=null&&(l[c.name]=o[u])}),r!=null&&r.forEach(c=>l[c.name]=null),{value:i,grads:l}}function Fr(e){return $.customGrad(e)}function wd(e){if(e.filter(t=>t==null).length>0)throw new Error(`Cannot compute gradient of y=f(x) with respect to x. Make sure that - the f you passed encloses all operations that lead from x to y.`)}function aS(e){let t={x:E(e,"x","neg")};return $.runKernel(No,t)}var _t=D({neg_:aS});function sS(e){let t={x:E(e,"x","softplus")};return $.runKernel(Vo,t)}var dl=D({softplus_:sS});function iS(e){let t=E(e,"x","logSigmoid");return Fr(n=>({value:_t(dl(_t(n))),gradFunc:r=>P(r,Cn(_t(n)))}))(t)}var px=D({logSigmoid_:iS});function oS(e,t=null,n=!1){let r={x:E(e,"x","max")},a={reductionIndices:t,keepDims:n};return $.runKernel(Ns,r,a)}var Gn=D({max_:oS});function lS(e,t){let n=E(e,"a","sub"),r=E(t,"b","sub");[n,r]=bt(n,r);let a={a:n,b:r};return $.runKernel(Ks,a)}var ye=D({sub_:lS});function uS(e,t=null,n=!1){let r=E(e,"x","sum");r.dtype==="bool"&&(r=me(r,"int32"));let a={x:r},s={axis:t,keepDims:n};return $.runKernel(Gs,a,s)}var Ce=D({sum_:uS});function cS(e,t=-1){let n=E(e,"logits","logSoftmax");if(t===-1&&(t=n.rank-1),t!==n.rank-1)throw Error(`Log Softmax along a non-last dimension is not yet supported. Logits was rank ${n.rank} and axis was ${t}`);return Fr((r,a)=>{let s=!0,i=Gn(r,t,!0),o=ye(r,i),l=ye(me(o,"float32"),En(Ce(Hn(o),t,s)));return a([l]),{value:l,gradFunc:(c,u)=>{let[h]=u,d=!0,p=Hn(h);return ye(c,P(Ce(c,t,d),p))}}})(n)}var bd=D({logSoftmax_:cS});function im(e,t){for(let n=0;ne[s]);return[n,a]}function ci(e,t){let n=t.map(r=>1);return fx(e,n,t)}function hS(e,t,n){M(im(t,n),()=>`${e} supports only inner-most axes for now. Got axes ${t} and rank-${n} input.`)}function Ax(e,t){if(im(e,t))return null;let n=[];for(let r=0;rn.push(r)),n}function om(e){return e.map((t,n)=>[n,t]).sort((t,n)=>t[1]-n[1]).map(t=>t[0])}function dS(e,t){let n=[];for(let r=t-e;r`Error in maxPool: input must be rank 4 but got rank ${o.rank}.`),M(Mr(n,i),()=>`Error in maxPool: Either strides or dilations must be 1. Got strides ${n} and dilations '${i}'`),a!=null&&M(Vt(r),()=>`Error in maxPool: pad must be an integer when using, dimRoundingMode ${a} but got pad ${r}.`);let c={x:o},u={filterSize:t,strides:n,pad:r,dimRoundingMode:a},h=$.runKernel(Ts,c,u);return l?H(h,[h.shape[1],h.shape[2],h.shape[3]]):h}var qu=D({maxPool_:gS});function xS(e,t=[1,1,1],n,r,a,s="NDHWC"){let i=E(e,"x","maxPool3d"),o=i,l=!1;i.rank===4&&(l=!0,o=H(i,[1,i.shape[0],i.shape[1],i.shape[2],i.shape[3]])),M(o.rank===5,()=>`Error in maxPool3d: x must be rank 5 but got rank ${o.rank}.`),M(s==="NDHWC",()=>`Error in maxPool3d: Only NDHWC is currently supported, but got dataFormat of ${s}`),a!=null&&M(Vt(r),()=>`Error in maxPool3d: pad must be an integer when using, dimRoundingMode ${a} but got pad ${r}.`);let c={x:o},u={filterSize:t,strides:n,pad:r,dimRoundingMode:a,dataFormat:s},h=$.runKernel(xu,c,u);return l?H(h,[h.shape[1],h.shape[2],h.shape[3],h.shape[4]]):h}var um=D({maxPool3d_:xS});function wS(e,t,n,r,a=!1){let s={x:E(e,"x","maxPoolWithArgmax")},i={filterSize:t,strides:n,pad:r,includeBatchInIndex:a},o=$.runKernel(Hh,s,i);return{result:o[0],indexes:o[1]}}var gx=D({maxPoolWithArgmax_:wS});function bS(e,t){let n=E(e,"a","maximum"),r=E(t,"b","maximum");[n,r]=bt(n,r),n.dtype==="bool"&&(n=me(n,"int32"),r=me(r,"int32")),ft(n.shape,r.shape);let a={a:n,b:r};return $.runKernel(Ss,a)}var $r=D({maximum_:bS});function _S(e,t=null,n=!1){let r={x:E(e,"x","mean")},a={axis:t,keepDims:n};return $.runKernel(Cs,r,a)}var vt=D({mean_:_S});function vS(e,t=null,n=!1){let r={x:E(e,"x","min")},a={axis:t,keepDims:n};return $.runKernel(Es,r,a)}var pl=D({min_:vS});function kS(e,t){let n=E(e,"a","minimum"),r=E(t,"b","minimum");[n,r]=bt(n,r),n.dtype==="bool"&&(n=me(n,"int32"),r=me(r,"int32")),ft(n.shape,r.shape);let a={a:n,b:r};return $.runKernel(Rs,a)}var fl=D({minimum_:kS});function IS(e,t,n){M(n==="reflect"||n==="symmetric",()=>`Invalid mode. Mode must be either reflect or symmetric. Got ${n}.`);let r=E(e,"x","mirrorPad");if(r.rank===0)throw new Error("mirrorPad(scalar) is not defined. Pass non-scalar to mirrorPad");M(t.length===r.rank,()=>`Padding doesn't match input. Must be ${r.rank}. Got ${t.length}.`);let a=n==="reflect"?1:0;for(let o=0;o"Invalid number of paddings. Must be length of 2 each."),M(t[o][0]>=0&&t[o][0]<=r.shape[o]-a&&t[o][1]>=0&&t[o][1]<=r.shape[o]-a,()=>`Padding in dimension ${o} cannot be greater than or equal to ${r.shape[o]-a} or less than 0 for input of shape ${r.shape}`);let s={paddings:t,mode:n},i={x:r};return $.runKernel(wu,i,s)}var cm=D({mirrorPad_:IS});function NS(e,t){let n=E(e,"a","mod"),r=E(t,"b","mod");[n,r]=bt(n,r);let a={a:n,b:r};return $.runKernel(Io,a)}var hm=D({mod_:NS});function SS(e){let t=E(e,"x","square"),n={};return $.runKernel("Square",{x:t},n)}var it=D({square_:SS});function TS(e,t=null,n=!1){e=E(e,"x","moments");let r=tr(t,e.shape),a=vt(e,r,n),s=a.shape;n||(s=ci(a.shape,r));let i=it(ye(me(e,"float32"),H(a,s))),o=vt(i,r,n);return{mean:a,variance:o}}var vd=D({moments_:TS});function CS(e,t,n,r){let a=E(t,"data","multiRNNCell"),s=Du(n,"c","multiRNNCell"),i=Du(r,"h","multiRNNCell"),o=a,l=[];for(let h=0;h2)throw new Error(`Rank of probabilities must be 1 or 2, but is ${i}`);n=n||Math.random();let o={logits:i===1?H(a,[1,-1]):a},l={numSamples:t,seed:n,normalized:r},c=$.runKernel(Gh,o,l);return i===1?H(c,[c.size]):c}var xx=D({multinomial_:RS});function MS(e,t){let n=E(e,"a","notEqual"),r=E(t,"b","notEqual");[n,r]=bt(n,r),ft(n.shape,r.shape);let a={a:n,b:r};return $.runKernel(So,a)}var hi=D({notEqual_:MS});function Ct(e,t="float32"){if(t==="complex64"){let r=Ct(e,"float32"),a=Ct(e,"float32");return Sa(r,a)}let n=bh(Ft(e),t);return $.makeTensor(n,e,t)}function Dr(e,t="float32"){if(t==="complex64"){let r=Dr(e,"float32"),a=Ct(e,"float32");return Sa(r,a)}let n=rf(Ft(e),t);return $.makeTensor(n,e,t)}function FS(e){let t={x:E(e,"x","onesLike")};return $.runKernel(Ro,t)}var Rn=D({onesLike_:FS});function $S(e,t){let n=E(e,"v1","outerProduct"),r=E(t,"v2","outerProduct");M(n.rank===1&&r.rank===1,()=>`Error in outerProduct: inputs must be rank 1, but got ranks ${n.rank} and ${r.rank}.`);let a=H(n,[-1,1]),s=H(r,[1,-1]);return Ge(a,s)}var DS=D({outerProduct_:$S});function OS(e,t,n=0){let r=E(e,"x","pad");if(r.rank===0)throw new Error("pad(scalar) is not defined. Pass non-scalar to pad");let a={paddings:t,constantValue:n},s={x:r};return $.runKernel($s,s,a)}var na=D({pad_:OS});function zS(e,t,n=0){return M(t.length===2,()=>"Invalid number of paddings. Must be length of 2."),na(e,[t],n)}var PS=D({pad1d_:zS});function LS(e,t,n=0){return M(t.length===2&&t[0].length===2&&t[1].length===2,()=>"Invalid number of paddings. Must be length of 2 each."),na(e,t,n)}var WS=D({pad2d_:LS});function BS(e,t,n=0){return M(t.length===3&&t[0].length===2&&t[1].length===2&&t[2].length===2,()=>"Invalid number of paddings. Must be length of 2 each."),na(e,t,n)}var VS=D({pad3d_:BS});function US(e,t,n=0){return M(t.length===4&&t[0].length===2&&t[1].length===2&&t[2].length===2&&t[3].length===2,()=>"Invalid number of paddings. Must be length of 2 each."),na(e,t,n)}var jS=D({pad4d_:US});function HS(e,t,n){let r=E(e,"x","spaceToBatchND");M(r.rank>=1+t.length,()=>`input rank ${r.rank} should be > than [blockShape] ${t.length}`),M(n.length===t.length,()=>`paddings.shape[0] ${n.length} must be equal to [blockShape] ${t.length}`),M(r.shape.reduce((i,o,l)=>l>0&&l<=t.length?i&&(o+n[l-1][0]+n[l-1][1])%t[l-1]==0:i,!0),()=>`input spatial dimensions ${r.shape.slice(1)} with paddings ${n.toString()} must be divisible by blockShapes ${t.toString()}`);let a={x:r},s={blockShape:t,paddings:n};return $.runKernel(vu,a,s)}var Xu=D({spaceToBatchND_:HS});function XS(e,t,n,r,a,s){a==null&&(a=[1,1]),s==null&&(s=1),r===0&&(r="valid");let i=E(e,"x","maxPool"),o=i,l=!1;i.rank===3&&(l=!0,o=H(i,[1,i.shape[0],i.shape[1],i.shape[2]])),M(Mr(s,a),()=>`Error in pool: Either strides or dilations must be 1. Got strides ${s} and dilations '${a}'`);let c=Z5(o.shape,t,s,a,r),u=[c.dilationHeight,c.dilationWidth],h;r==="same"?h=qS([c.filterHeight,c.filterWidth],u):h=[[0,0],[0,0]];let d=u[0]===1&&u[1]===1,[p,f]=GS([c.inHeight,c.inWidth],u,h),m=d?r:"valid",A=d?o:Xu(o,u,p),y=(n==="avg"?()=>Wu(A,t,s,m):()=>qu(A,t,s,m))(),g=d?y:Bu(y,u,f);return l?H(g,[g.shape[1],g.shape[2],g.shape[3]]):g}function GS(e,t,n){let r=n.map(u=>u[0]),a=n.map(u=>u[1]),s=e.concat(r,a),i=t.map((u,h)=>(u-s[h]%u)%u),o=a.map((u,h)=>u+i[h]),l=t.map((u,h)=>[r[h],o[h]]),c=t.map((u,h)=>[0,i[h]]);return[l,c]}function qS(e,t){let n=e.map((s,i)=>s+(s-1)*(t[i]-1)).map(s=>s-1),r=n.map(s=>Math.floor(s/2)),a=n.map((s,i)=>s-r[i]);return n.map((s,i)=>[r[i],a[i]])}var wx=D({pool_:XS});function KS(e,t){let n=E(e,"base","pow"),r=E(t,"exp","pow");[n,r]=bt(n,r);let a={a:n,b:r};return $.runKernel(Ds,a)}var ra=D({pow_:KS});function ZS(e,t){let n=E(e,"x","prelu"),r=E(t,"alpha","prelu"),a={x:n,alpha:r};return $.runKernel(Os,a)}var Ku=D({prelu_:ZS});function YS(e,t=null,n=!1){let r=E(e,"x","prod");r.dtype==="bool"&&(r=me(r,"int32"));let a={x:r},s={axis:t,keepDims:n};return $.runKernel(Fo,a,s)}var kd=D({prod_:YS});function JS(e,t,n){let r=Ft(e),a=null;if(n==null||n==="float32")a=new Float32Array(r);else if(n==="int32")a=new Int32Array(r);else if(n==="bool")a=new Uint8Array(r);else throw new Error(`Unknown data type ${n}`);for(let s=0;s=1||s===0);let i=Math.sqrt(-2*Math.log(s)/s);e=this.mean+this.stdDev*r*i,t=this.mean+this.stdDev*a*i,(!this.truncated||this.isValidTruncated(e))&&(n=!0)}return(!this.truncated||this.isValidTruncated(t))&&(this.nextVal=this.convertValue(t)),this.convertValue(e)}convertValue(e){return this.dtype==null||this.dtype==="float32"?e:Math.round(e)}isValidTruncated(e){return e<=this.upper&&e>=this.lower}},eT=class{constructor(e,t,n,r){this.alpha=e,this.beta=1/t,this.dtype=n;let a=r||Math.random();this.randu=dm.alea(a.toString()),this.randn=new pm(0,1,n,!1,this.randu()),e<1?this.d=e+2/3:this.d=e-1/3,this.c=1/Math.sqrt(9*this.d)}nextValue(){let e,t,n,r,a,s;for(;;){do r=this.randn.nextValue(),s=1+this.c*r;while(s<=0);if(s*=s*s,e=r*r,t=1-.331*e*e,n=.5*e+this.d*(1-s+Math.log(s)),a=this.randu(),athis.dtype==null||this.dtype==="float32",this.min=e,this.range=t-e,this.dtype=n,r==null&&(r=Math.random()),typeof r=="number"&&(r=r.toString()),!this.canReturnFloat()&&this.range<=1)throw new Error(`The difference between ${e} - ${t} <= 1 and dtype is not float`);this.random=dm.alea(r)}convertValue(e){return this.canReturnFloat()?e:Math.round(e)}nextValue(){return this.convertValue(this.min+this.range*this.random())}};function nT(e,t,n=1,r="float32",a){if(n==null&&(n=1),r==null&&(r="float32"),r!=="float32"&&r!=="int32")throw new Error(`Unsupported data type ${r}`);let s=new eT(t,n,r,a),i=Le(e,r);for(let o=0;o`Error in reverse1D: x must be rank 1 but got rank ${t.rank}.`),Mn(t,0)}var dT=D({reverse1d_:hT});function pT(e,t){let n=E(e,"x","reverse");return M(n.rank===2,()=>`Error in reverse2D: x must be rank 2 but got rank ${n.rank}.`),Mn(n,t)}var fT=D({reverse2d_:pT});function mT(e,t){let n=E(e,"x","reverse");return M(n.rank===3,()=>`Error in reverse3D: x must be rank 3 but got rank ${n.rank}.`),Mn(n,t)}var AT=D({reverse3d_:mT});function yT(e,t){let n=E(e,"x","reverse");return M(n.rank===4,()=>`Error in reverse4D: x must be rank 4 but got rank ${n.rank}.`),Mn(n,t)}var gT=D({reverse4d_:yT});function xT(e){let t={x:E(e,"x","round")};return $.runKernel(Bs,t)}var mm=D({round_:xT});function wT(e){let t={x:E(e,"x","rsqrt")};return $.runKernel(Vs,t)}var Sd=D({rsqrt_:wT});function _e(e,t){if((rn(e)&&t!=="string"||Array.isArray(e))&&t!=="complex64")throw new Error("Error creating a new Scalar: value must be a primitive (number|boolean|string)");if(t==="string"&&rn(e)&&!(e instanceof Uint8Array))throw new Error("When making a scalar from encoded string, the value must be `Uint8Array`.");return Ta(e,[],[],t)}function bT(e){let t={x:E(e,"x","selu")};return $.runKernel(Po,t)}var Td=D({selu_:bT});function _T(e,t,n,r,a,s=[1,1],i="NHWC"){let o=E(e,"x","separableConv2d"),l=E(t,"depthwiseFilter","separableConv2d"),c=E(n,"pointwiseFilter","separableConv2d"),u=o,h=!1;if(o.rank===3&&(h=!0,u=H(o,[1,o.shape[0],o.shape[1],o.shape[2]])),i==="NCHW")throw new Error("separableConv2d currently does not support dataFormat NCHW; only NHWC is supported");M(u.rank===4,()=>`Error in separableConv2d: input must be rank 4, but got rank ${u.rank}.`),M(l.rank===4,()=>`Error in separableConv2d: depthwise filter must be rank 4, but got rank ${l.rank}.`),M(c.rank===4,()=>`Error in separableConv2d: pointwise filter must be rank 4, but got rank ${l.rank}.`),M(c.shape[0]===1,()=>`Error in separableConv2d: the first dimension of pointwise filter must be 1, but got ${c.shape[0]}.`),M(c.shape[1]===1,()=>`Error in separableConv2d: the second dimension of pointwise filter must be 1, but got ${c.shape[1]}.`);let d=l.shape[2],p=l.shape[3];M(c.shape[2]===d*p,()=>`Error in separableConv2d: the third dimension of pointwise filter must be ${d*p}, but got ${c.shape[2]}.`);let f=ul(u,l,r,a,i,s),m=ta(f,c,1,"valid",i);return h?H(m,[m.shape[1],m.shape[2],m.shape[3]]):m}var Am=D({separableConv2d_:_T});async function vT(e,t){let n=E(e,"x","setdiff1d"),r=E(t,"y","setdiff1d");M(n.dtype===r.dtype,()=>`x and y should have the same dtype, but got x (${n.dtype}) and y (${r.dtype}).`),M(n.rank===1,()=>`x should be 1D tensor, but got x (${n.shape}).`),M(r.rank===1,()=>`y should be 1D tensor, but got y (${r.shape}).`);let a=await n.data(),s=await r.data(),i=new Set(s),o=0;for(let u=0;u`slice1d expects a rank-1 tensor, but got a rank-${r.rank} tensor`),Ee(r,[t],[n])}var Rd=D({slice1d_:ST});function TT(e,t,n){let r=E(e,"x","slice2d");return M(r.rank===2,()=>`slice2d expects a rank-2 tensor, but got a rank-${r.rank} tensor`),Ee(r,t,n)}var gm=D({slice2d_:TT});function CT(e,t,n){let r=E(e,"x","slice3d");return M(r.rank===3,()=>`slice3d expects a rank-3 tensor, but got a rank-${r.rank} tensor`),Ee(r,t,n)}var Md=D({slice3d_:CT});function ET(e,t,n){let r=E(e,"x","slice4d");return M(r.rank===4,()=>`slice4d expects a rank-4 tensor, but got a rank-${r.rank} tensor`),Ee(r,t,n)}var Yu=D({slice4d_:ET});function RT(e,t=-1){let n=E(e,"logits","softmax","float32");if(t===-1&&(t=n.rank-1),t!==n.rank-1)throw Error(`Softmax along a non-last dimension is not yet supported. Logits was rank ${n.rank} and dim was ${t}`);let r={logits:n},a={dim:t};return $.runKernel(qs,r,a)}var Ju=D({softmax_:RT});function MT(e){M(e.dtype==="complex64",()=>`The dtype for tf.spectral.fft() must be complex64 but got ${e.dtype}.`);let t={input:e};return $.runKernel(Ph,t)}var Qu=D({fft_:MT});function FT(e){M(e.dtype==="complex64",()=>`The dtype for tf.spectral.ifft() must be complex64 but got ${e.dtype}.`);let t={input:e};return $.runKernel(Lh,t)}var Al=D({ifft_:FT});function $T(e){let t=e.shape[e.shape.length-1],n=e.size/t,r;if(t<=2){let a=H(e,[n,t]);r=Al(a)}else{let a=[n,2*(t-1)],s=H(Zu(e),[n,t]),i=H(yd(e),[n,t]),o=Mn(Ee(s,[0,1],[n,t-2]),1),l=P(Mn(Ee(i,[0,1],[n,t-2]),1),_e(-1)),c=rt([s,o],1),u=rt([i,l],1),h=H(Sa(c,u),[a[0],a[1]]);r=Al(h)}if(r=Zu(r),e.rank===3&&e.shape[0]!==0){let a=r,s=e.shape[0];r=H(r,[s,r.shape[0]/s,r.shape[1]]),a.dispose()}return r}var Fd=D({irfft_:$T});function DT(e,t,n=0){let r={x:E(e,"x","split")},a={numOrSizeSplits:t,axis:n};return $.runKernel(Uo,r,a)}var zt=D({split_:DT});function OT(e,t){M(e.dtype==="float32",()=>`The dtype for rfft() must be real value but got ${e.dtype}`);let n=e.shape[e.shape.length-1],r=e.size/n,a;if(t!=null&&t0),m=e.shape.map(A=>A);m[e.shape.length-1]=t,a=Ee(e,f,m),n=t}else if(t!=null&&t>n){let f=e.shape.map(m=>m);f[e.shape.length-1]=t-n,a=rt([e,Ct(f)],e.shape.length-1),n=t}else a=e;let s=je(a),i=H(Sa(a,s),[r,n]),o=Qu(i),l=Math.floor(n/2)+1,c=Zu(o),u=yd(o),h=zt(c,[l,n-l],c.shape.length-1),d=zt(u,[l,n-l],u.shape.length-1),p=a.shape.slice();return p[a.shape.length-1]=l,H(Sa(h[0],d[0]),p)}var ec=D({rfft_:OT});function zT(e){let t={x:E(e,"x","sqrt")};return $.runKernel(Hs,t)}var Jt=D({sqrt_:zT});function PT(e,t){let n=E(e,"a","squaredDifference"),r=E(t,"b","squaredDifference");[n,r]=bt(n,r),ft(n.shape,r.shape);let a={a:n,b:r},s={};return $.runKernel(Xs,a,s)}var $d=D({squaredDifference_:PT});function LT(e,t){let n=E(e,"x","squeeze");return H(n,Ug(n.shape,t).newShape)}var Oa=D({squeeze_:LT});function WT(e,t=0){let n=Du(e,"tensors","stack","string_or_numeric");M(n.length>=1,()=>"Pass at least one tensor to tf.stack"),n.length>0&&M(t<=n[0].rank,()=>"Axis must be <= rank of the tensor");let r=n,a={axis:t};return $.runKernel(Mo,r,a)}var ln=D({stack_:WT});function BT(e,t=0){let n={x:E(e,"x","step")},r={alpha:t};return $.runKernel(Na,n,r)}var yl=D({step_:BT});function VT(e,t,n,r,a=0,s=0,i=0,o=0,l=0){let c={x:E(e,"x","stridedSlice")},u={begin:t,end:n,strides:r,beginMask:a,endMask:s,ellipsisMask:i,newAxisMask:o,shrinkAxisMask:l};return $.runKernel(jo,c,u)}var xm=D({stridedSlice_:VT});function UT(e){let t={x:E(e,"x","tan")};return $.runKernel(Ho,t)}var wm=D({tan_:UT});function an(e,t){as(e);let n=Cr(e,t);if(n.length!==1)throw new Error("tensor1d() requires values to be a flat/TypedArray");return Ta(e,null,n,t)}function _n(e,t,n){if(as(e),t!=null&&t.length!==2)throw new Error("tensor2d() requires shape to have two numbers");let r=Cr(e,n);if(r.length!==2&&r.length!==1)throw new Error("tensor2d() requires values to be number[][] or flat/TypedArray");if(r.length===1&&t==null)throw new Error("tensor2d() requires shape to be provided when `values` are a flat/TypedArray");return Ta(e,t,r,n)}function jT(e,t,n){if(as(e),t!=null&&t.length!==4)throw new Error("tensor4d() requires shape to have four numbers");let r=Cr(e,n);if(r.length!==4&&r.length!==1)throw new Error("tensor4d() requires values to be number[][][][] or flat/TypedArray");if(r.length===1&&t==null)throw new Error("tensor4d() requires shape to be provided when `values` are a flat array");return Ta(e,t,r,n)}function HT(e,t,n){if(as(e),t!=null&&t.length!==5)throw new Error("tensor5d() requires shape to have five numbers");let r=Cr(e,n);if(r.length!==5&&r.length!==1)throw new Error("tensor5d() requires values to be number[][][][][] or flat/TypedArray");if(r.length===1&&t==null)throw new Error("tensor5d() requires shape to be provided when `values` are a flat array");return Ta(e,t,r,n)}function GT(e,t,n){if(as(e),t!=null&&t.length!==6)throw new Error("tensor6d() requires shape to have six numbers");let r=Cr(e,n);if(r.length!==6&&r.length!==1)throw new Error("tensor6d() requires values to be number[][][][][][] or flat/TypedArray");if(r.length===1&&t==null)throw new Error("tensor6d() requires shape to be provided when `values` are a flat array");return t=t||r,Ta(e,t,r,n)}function qT(e,t=1,n=!0){let r=E(e,"x","topk");if(r.rank===0)throw new Error("topk() expects the input to be of rank 1 or higher");let a=r.shape[r.shape.length-1];if(t>a)throw new Error(`'k' passed to topk() must be <= the last dimension (${a}) but got ${t}`);let s={x:r},i={k:t,sorted:n},[o,l]=$.runKernel(Go,s,i);return{values:o,indices:l}}var bm=D({topk_:qT});function XT(e,t=0,n=1,r,a){if(r!=null&&r==="bool")throw new Error("Unsupported data type $ { dtype }");let s=new pm(t,n,r,!0,a),i=Le(e,r);for(let o=0;o0,()=>"The input tensor must be at least 1D");let r={x:n},a={axis:t},[s,i]=$.runKernel(Jh,r,a);return{values:s,indices:i}}var Od=D({unique_:KT});function ZT(e,t,n){let r=E(e,"x","unsortedSegmentSum"),a=E(t,"segmentIds","unsortedSegmentSum","int32");M(Vt(n),()=>"numSegments must be of dtype int");let s={x:r,segmentIds:a},i={numSegments:n};return $.runKernel(Iu,s,i)}var _m=D({unsortedSegmentSum_:ZT});function YT(e,t=0){let n=E(e,"x","unstack","string_or_numeric");M(t>=-n.shape.length&&t`Axis = ${t} is not in [-${n.shape.length}, ${n.shape.length})`);let r={value:n},a={axis:t};return $.runKernel(qo,r,a)}var sr=D({unstack_:YT});function vx(e,t=!0,n,r){return $.makeVariable(e,t,n,r)}function kx(e,t){let n=[];for(let s=0;s0,()=>"mask cannot be scalar"),nn(o.slice(s,s+i),a.shape,"mask's shape must match the first K dimensions of tensor's shape,");let l=1;for(let m=s;m"Shape mismatch in v and x");let l=_e(1),c=ye(l,o),u=P(ye(i,s),c);if(a){M(r!=null,()=>"When using zeroDebias: true, step is required.");let h=E(r,"step","movingAverage");u=ge(u,ye(l,ra(o,h)))}return se(s,u)}var rC=D({movingAverage_:nC});function aC(e,t,n){let r=E(e,"indices","scatterND","int32"),a=E(t,"updates","scatterND");Ff(a,r,n);let s={indices:r,updates:a},i={shape:n};return $.runKernel(Oo,s,i)}var Nx=D({scatterND_:aC});function sC(e,t,n,r){if(e.dtype!=="int32")throw new Error(`tf.sparseToDense() expects the indices to be int32 type, but the dtype was ${e.dtype}.`);if(e.rank>2)throw new Error(`sparseIndices should be a scalar, vector, or matrix, but got shape ${e.shape}.`);let a=e.rank>0?e.shape[0]:1,s=e.rank>1?e.shape[1]:1;if(n.length!==s)throw new Error(`outputShape has incorrect number of elements:, ${n.length}, should be: ${s}.`);let i=t.size;if(!(t.rank===0||t.rank===1&&i===a))throw new Error(`sparseValues has incorrect shape ${t.shape}, should be [] or [${a}]`);if(t.dtype!==r.dtype)throw new Error("sparseValues.dtype must match defaultValues.dtype")}function iC(e,t,n,r=0){let a=E(e,"sparseIndices","sparseToDense","int32"),s=E(t,"sparseValues","sparseToDense"),i=E(r,"defaultValue","sparseToDense",s.dtype);sC(a,s,n,i);let o={sparseIndices:a,sparseValues:s,defaultValue:i},l={outputShape:n};return $.runKernel(Zh,o,l)}var km=D({sparseToDense_:iC});function oC(e,t){let n=E(t,"indices","gatherND","int32"),r={params:E(e,"x","gatherND"),indices:n};return $.runKernel(Ao,r)}var Sx=D({gatherND_:oC});function lC(e,t){if(t==null)return e.shape.slice();if(Qr(e.shape,t))return t;if(e.shape.length===t.length){let n=[];for(let r=0;r`x has to be a floating point tensor since it's going to be scaled, but got a ${a.dtype} tensor instead.`),M(t>=0&&t<1,()=>`rate must be a float in the range [0, 1), but got ${t}.`),t===0)return e instanceof Ve?a.clone():a;let s=lC(a,n),i=1-t,o=ge(hl(se(ml(s,0,1,"float32",r),i)),i);return P(a,o)}var Tx=D({dropout_:uC});function Cx(e){return Math.floor(Math.pow(2,Math.ceil(Math.log(e)/Math.log(2))))}function Im(e,t,n){let r=1-e%2,a=new Float32Array(e);for(let s=0;s1,()=>`inTopK() expects the predictions to be of rank 2 or higher, but got ${r.rank}`),M(r.rank-1===a.rank,()=>`predictions rank should be 1 larger than targets rank, but got predictions rank ${r.rank} and targets rank ${a.rank}`),nn(r.shape.slice(0,r.shape.length-1),a.shape,"predictions's shape should be align with the targets' shape, except the last dimension.");let s=r.shape[r.shape.length-1];M(n>0&&n<=s,()=>`'k' passed to inTopK() must be > 0 && <= the predictions last dimension (${s}), but got ${n}`);let i=await r.data(),o=await a.data(),[l,c]=[i.length/s,s],u=jg("bool",l);for(let h=0;hA.value-m.value),u[h]=0;for(let m=0;mdC,depthwiseConv2d:()=>pC,matMul:()=>fC});function mC(e,t,n,r,a,s="NHWC",i){let o=e;e.rank===3&&(o=H(e,[1,e.shape[0],e.shape[1],e.shape[2]]));let l=t;l.rank===3&&(l=H(t,[1,t.shape[0],t.shape[1],t.shape[2]])),M(o.rank===4,()=>`Error in conv2dDerFilter: input must be rank 4, but got shape ${o.shape}.`),M(l.rank===4,()=>`Error in conv2dDerFilter: dy must be rank 4, but got shape ${l.shape}.`),M(n.length===4,()=>`Error in conv2dDerFilter: filterShape must be length 4, but got ${n}.`);let c=s==="NHWC"?o.shape[3]:o.shape[1],u=s==="NHWC"?l.shape[3]:l.shape[1];M(c===n[2],()=>`Error in conv2dDerFilter: depth of input ${c}) must match input depth in filter (${n[2]}.`),M(u===n[3],()=>`Error in conv2dDerFilter: depth of dy (${u}) must match output depth for filter (${n[3]}).`),i!=null&&M(Vt(a),()=>`Error in conv2dDerFilter: pad must be an integer when using, dimRoundingMode ${i} but got pad ${a}.`);let h={x:o,dy:l},d={strides:r,pad:a,dataFormat:s,dimRoundingMode:i,filterShape:n};return $.runKernel(Th,h,d)}var Nm=D({conv2DBackpropFilter_:mC});function Pd(e,t,n){if(n==null||n==="linear")return e;if(n==="relu")return P(e,yl(t));throw new Error(`Cannot compute gradient for fused activation ${n}.`)}function Ld(e,t){let n=t,r=Ot(e.shape,t.shape);return r.length>0&&(n=Ce(n,r)),H(n,e.shape)}function Wd(e,t,n,r){if(t==="linear")return e;if(t==="relu")return Or(e);if(t==="elu")return cl(e);if(t==="relu6")return Nd(e);if(t==="prelu")return Ku(e,n);if(t==="leakyrelu")return Hu(e,r);throw new Error(`Unknown fused activation ${t}.`)}var Bd=(e,t)=>!(e>0)||t==="linear";function AC({x:e,filter:t,strides:n,pad:r,dataFormat:a="NHWC",dilations:s=[1,1],dimRoundingMode:i,bias:o,activation:l="linear",preluActivationWeights:c,leakyreluAlpha:u}){if(l=l||"linear",Bd($.state.gradientDepth,l)===!1){let _=ta(e,t,n,r,a,s,i);return o!=null&&(_=se(_,o)),Wd(_,l,c,u)}let h=E(e,"x","conv2d"),d=E(t,"filter","conv2d"),p=h,f=!1;h.rank===3&&(f=!0,p=H(h,[1,h.shape[0],h.shape[1],h.shape[2]])),M(p.rank===4,()=>`Error in fused conv2d: input must be rank 4, but got rank ${p.rank}.`),M(d.rank===4,()=>`Error in fused conv2d: filter must be rank 4, but got rank ${d.rank}.`),i!=null&&M(Vt(r),()=>`Error in fused conv2d: pad must be an integer when using, dimRoundingMode ${i} but got pad ${r}.`),M(p.shape[3]===d.shape[2],()=>`Error in conv2d: depth of input (${p.shape[3]}) must match input depth for filter ${d.shape[2]}.`),M(Mr(n,s),()=>`Error in conv2D: Either strides or dilations must be 1. Got strides ${n} and dilations '${s}'`),M(a==="NHWC",()=>`Error in conv2d: got dataFormat of ${a} but only NHWC is currently supported.`);let m=Lu(p.shape,d.shape,n,s,r,i),A;o!=null&&(A=E(o,"bias","fused conv2d"),[A]=bt(A,h),ft(m.outShape,A.shape));let y;c!=null&&(y=E(c,"prelu weights","fused conv2d"));let g=(_,x)=>{let[N,T,C,F]=x,O=Pd(_,C,l);M(Ma(s),()=>`Error in gradient of fused conv2D: dilation rates greater than 1 are not yet supported in gradients. Got dilations '${s}'`);let W=Yf(T.shape,O,N,n,r),V=Nm(T,O,N.shape,n,r),U=[W,V];if(F!=null){let j=Ld(F,O);U.push(j)}return U},w={x:p,filter:d,bias:A,preluActivationWeights:y},b={strides:n,pad:r,dataFormat:a,dilations:s,dimRoundingMode:i,activation:l,leakyreluAlpha:u};return o==null?Fr((_,x,N)=>{let T=$.runKernel(Qs,w,b);return N([x,_,T]),f&&(T=H(T,[T.shape[1],T.shape[2],T.shape[3]])),{value:T,gradFunc:g}})(p,d):Fr((_,x,N,T)=>{let C=$.runKernel(Qs,w,b);return T([x,_,C,N]),f&&(C=H(C,[C.shape[1],C.shape[2],C.shape[3]])),{value:C,gradFunc:g}})(p,d,A)}var dC=D({fusedConv2d_:AC});function yC(e,t,n,r,a,s=[1,1],i){let o=e;e.rank===3&&(o=H(e,[1,e.shape[0],e.shape[1],e.shape[2]]));let l=t;l.rank===3&&(l=H(t,[1,t.shape[0],t.shape[1],t.shape[2]]));let c={x:o,dy:l},u={strides:r,pad:a,dimRoundingMode:i,dilations:s,filterShape:n};return $.runKernel(Mh,c,u)}var Ex=D({depthwiseConv2dNativeBackpropFilter_:yC});function gC(e,t,n,r,a,s=[1,1],i){let o=t,l=!1;t.rank===3&&(l=!0,o=H(t,[1,t.shape[0],t.shape[1],t.shape[2]]));let c={dy:o,filter:n},u={strides:r,pad:a,dimRoundingMode:i,dilations:s,inputShape:e},h=$.runKernel(Fh,c,u);return l?H(h,[h.shape[1],h.shape[2],h.shape[3]]):h}var Rx=D({depthwiseConv2dNativeBackpropInput_:gC});function xC({x:e,filter:t,strides:n,pad:r,dataFormat:a="NHWC",dilations:s=[1,1],dimRoundingMode:i,bias:o,activation:l="linear",preluActivationWeights:c,leakyreluAlpha:u}){if(Bd($.state.gradientDepth,l)===!1){let _=ul(e,t,n,r,a,s,i);return o!=null&&(_=se(_,o)),Wd(_,l,c,u)}let h=E(e,"x","depthwiseConv2d"),d=E(t,"filter","depthwiseConv2d"),p=h,f=!1;h.rank===3&&(f=!0,p=H(h,[1,h.shape[0],h.shape[1],h.shape[2]])),M(p.rank===4,()=>`Error in fused depthwiseConv2d: input must be rank 4, but got rank ${p.rank}.`),M(d.rank===4,()=>`Error in fused depthwiseConv2d: filter must be rank 4, but got rank ${d.rank}.`),M(p.shape[3]===d.shape[2],()=>`Error in fused depthwiseConv2d: number of input channels (${p.shape[3]}) must match the inChannels dimension in filter ${d.shape[2]}.`),s==null&&(s=[1,1]),M(Mr(n,s),()=>`Error in fused depthwiseConv2d: Either strides or dilations must be 1. Got strides ${n} and dilations '${s}'`),i!=null&&M(Vt(r),()=>`Error in fused depthwiseConv2d: pad must be an integer when using dimRoundingMode ${i} but got pad ${r}.`);let m=Lu(p.shape,d.shape,n,s,r,i,!0),A;o!=null&&(A=E(o,"bias","fused conv2d"),[A]=bt(A,h),ft(m.outShape,A.shape));let y;c!=null&&(y=E(c,"prelu weights","fused depthwiseConv2d"));let g=(_,x)=>{M(Ma(s),()=>`Error in gradient of fused depthwiseConv2d: dilation rates greater than 1 are not yet supported. Got dilations '${s}'`);let[N,T,C,F]=x,O=Pd(_,C,l),W=Rx(T.shape,O,N,n,r,s,i),V=Ex(T,O,N.shape,n,r,s,i);if(F!=null){let U=Ld(A,O);return[W,V,U]}return[W,V]},w={x:p,filter:d,bias:A,preluActivationWeights:y},b={strides:n,pad:r,dataFormat:a,dilations:s,dimRoundingMode:i,activation:l,leakyreluAlpha:u};return o==null?Fr((_,x,N)=>{let T=$.runKernel(ei,w,b);return N([x,_,T]),f&&(T=H(T,[T.shape[1],T.shape[2],T.shape[3]])),{value:T,gradFunc:g}})(p,d):Fr((_,x,N,T)=>{let C=$.runKernel(ei,w,b);return T([x,_,C,N]),f&&(C=H(C,[C.shape[1],C.shape[2],C.shape[3]])),{value:C,gradFunc:g}})(p,d,A)}var pC=D({fusedDepthwiseConv2d_:xC});function wC({a:e,b:t,transposeA:n=!1,transposeB:r=!1,bias:a,activation:s="linear",preluActivationWeights:i,leakyreluAlpha:o}){if(Bd($.state.gradientDepth,s)===!1){let F=Ge(e,t,n,r);return a!=null&&(F=se(F,a)),Wd(F,s,i,o)}let l=E(e,"a","fused matMul"),c=E(t,"b","fused matMul");[l,c]=bt(l,c);let u=n?l.shape[l.rank-2]:l.shape[l.rank-1],h=r?c.shape[c.rank-1]:c.shape[c.rank-2],d=n?l.shape[l.rank-1]:l.shape[l.rank-2],p=r?c.shape[c.rank-2]:c.shape[c.rank-1],f=l.shape.slice(0,-2),m=c.shape.slice(0,-2),A=Ft(f),y=Ft(m);M(l.rank>=2&&c.rank>=2&&l.rank===c.rank,()=>`Error in fused matMul: inputs must have the same rank of at least 2, got ranks ${l.rank} and ${c.rank}.`),M(Qr(f,m),()=>`Error in fused matMul: outer dimensions (${f}) and (${m}) of Tensors with shapes ${l.shape} and ${c.shape} must match.`),M(u===h,()=>`Error in fused matMul: inner shapes (${u}) and (${h}) of Tensors with shapes ${l.shape} and ${c.shape} and transposeA=${n} and transposeB=${r} must match.`);let g=l.shape.slice(0,-2).concat([d,p]),w=n?H(l,[A,u,d]):H(l,[A,d,u]),b=r?H(c,[y,p,h]):H(c,[y,h,p]),_;a!=null&&(_=E(a,"bias","fused matMul"),[_]=bt(_,l),ft(g,_.shape));let x;i!=null&&(x=E(i,"prelu weights","fused matMul"));let N=(F,O)=>{let[W,V,U,j]=O,X=Pd(H(F,U.shape),U,s),G,ee;if(!n&&!r?(G=Ge(X,V,!1,!0),ee=Ge(W,X,!0,!1)):!n&&r?(G=Ge(X,V,!1,!1),ee=Ge(X,W,!0,!1)):n&&!r?(G=Ge(V,X,!1,!0),ee=Ge(W,X,!1,!1)):(G=Ge(V,X,!0,!0),ee=Ge(X,W,!0,!0)),a!=null){let Y=Ld(j,X);return[G,ee,Y]}else return[G,ee]},T={a:w,b,bias:_,preluActivationWeights:x},C={transposeA:n,transposeB:r,activation:s,leakyreluAlpha:o};return a==null?Fr((F,O,W)=>{let V=$.runKernel(Js,T,C);return W([F,O,V]),{value:H(V,g),gradFunc:N}})(w,b):Fr((F,O,W,V)=>{let U=$.runKernel(Js,T,C);return V([F,O,U,W]),{value:H(U,g),gradFunc:N}})(w,b,_)}var fC=D({fusedMatMul_:wC});function bC(e){return Im(e,.54,.46)}var _C=D({hammingWindow_:bC});function vC(e){return Im(e,.5,.5)}var Mx=D({hannWindow_:vC});function kC(e,t,n,r=!1,a=0){let s=0,i=[];for(;s+t<=e.size;)i.push(Ee(e,s,t)),s+=n;if(r)for(;s`Error in cropAndResize: image must be rank 4,but got rank ${i.rank}.`),M(o.rank===2&&o.shape[1]===4,()=>`Error in cropAndResize: boxes must be have size [${c},4] but had shape ${o.shape}.`),M(l.rank===1&&l.shape[0]===c,()=>`Error in cropAndResize: boxInd must be have size [${c}] but had shape ${o.shape}.`),M(r.length===2,()=>`Error in cropAndResize: cropSize must be of length 2, but got length ${r.length}.`),M(r[0]>=1&&r[1]>=1,()=>`cropSize must be atleast [1,1], but was ${r}`),M(a==="bilinear"||a==="nearest",()=>`method must be bilinear or nearest, but was ${a}`);let u={image:i,boxes:o,boxInd:l},h={method:a,extrapolationValue:s,cropSize:r};return $.runKernel(io,u,h)}var TC=D({cropAndResize_:SC});function CC(e){let t=E(e,"image","flipLeftRight","float32");M(t.rank===4,()=>`Error in flipLeftRight: image must be rank 4,but got rank ${t.rank}.`);let n={image:t};return $.runKernel(fo,n,{})}var EC=D({flipLeftRight_:CC});function RC(e,t,n=0,r=.5){let a=E(e,"image","rotateWithOffset","float32");M(a.rank===4,()=>`Error in rotateWithOffset: image must be rank 4,but got rank ${a.rank}.`);let s={image:a},i={radians:t,fillValue:n,center:r};return $.runKernel(Ko,s,i)}var MC=D({rotateWithOffset_:RC});function gl(e,t,n,r,a,s){r==null&&(r=.5),a==null&&(a=Number.NEGATIVE_INFINITY),s==null&&(s=0);let i=e.shape[0];return n=Math.min(n,i),M(0<=r&&r<=1,()=>`iouThreshold must be in [0, 1], but was '${r}'`),M(e.rank===2,()=>`boxes must be a 2D tensor, but was of rank '${e.rank}'`),M(e.shape[1]===4,()=>`boxes must have 4 columns, but 2nd dimension was ${e.shape[1]}`),M(t.rank===1,()=>"scores must be a 1D tensor"),M(t.shape[0]===i,()=>`scores has incompatible shape with boxes. Expected ${i}, but was ${t.shape[0]}`),M(0<=s&&s<=1,()=>`softNmsSigma must be in [0, 1], but was '${s}'`),{maxOutputSize:n,iouThreshold:r,scoreThreshold:a,softNmsSigma:s}}function FC(e,t,n,r=.5,a=Number.NEGATIVE_INFINITY){let s=E(e,"boxes","nonMaxSuppression"),i=E(t,"scores","nonMaxSuppression"),o=gl(s,i,n,r,a);n=o.maxOutputSize,r=o.iouThreshold,a=o.scoreThreshold;let l={maxOutputSize:n,iouThreshold:r,scoreThreshold:a};return $.runKernel(To,{boxes:s,scores:i},l)}var $C=D({nonMaxSuppression_:FC});function OC(e,t,n){let r=DC(e,t,n),a=r<0?-(r+1):r;e.splice(a,0,t)}function DC(e,t,n){return PC(e,t,n||zC)}function zC(e,t){return e>t?1:e>>1);let o=n(t,e[s]);o>0?r=s+1:(a=s,i=!o)}return i?r:-r-1}function $x(e,t,n,r,a){return Sm(e,t,n,r,a,0)}function Dx(e,t,n,r,a,s){return Sm(e,t,n,r,a,0,!1,s,!0)}function Ox(e,t,n,r,a,s){return Sm(e,t,n,r,a,s,!0)}function Sm(e,t,n,r,a,s,i=!1,o=!1,l=!1){let c=[];for(let A=0;Aa&&c.push({score:t[A],boxIndex:A,suppressBeginIndex:0});c.sort(zx);let u=s>0?-.5/s:0,h=[],d=[];for(;h.length0;){let A=c.pop(),{score:y,boxIndex:g,suppressBeginIndex:w}=A;if(y=w;--_){let x=LC(e,g,h[_]);if(x>=r){b=!0;break}if(A.score=A.score*WC(r,u,x),A.score<=a)break}A.suppressBeginIndex=h.length,b||(A.score===y?(h.push(g),d.push(A.score)):A.score>a&&OC(c,A,zx))}let p=h.length,f=n-p;o&&f>0&&(h.push(...new Array(f).fill(0)),d.push(...new Array(f).fill(0)));let m={selectedIndices:h};return i&&(m.selectedScores=d),l&&(m.validOutputs=p),m}function LC(e,t,n){let r=e.subarray(t*4,t*4+4),a=e.subarray(n*4,n*4+4),s=Math.min(r[0],r[2]),i=Math.min(r[1],r[3]),o=Math.max(r[0],r[2]),l=Math.max(r[1],r[3]),c=Math.min(a[0],a[2]),u=Math.min(a[1],a[3]),h=Math.max(a[0],a[2]),d=Math.max(a[1],a[3]),p=(o-s)*(l-i),f=(h-c)*(d-u);if(p<=0||f<=0)return 0;let m=Math.max(s,c),A=Math.max(i,u),y=Math.min(o,h),g=Math.min(l,d),w=Math.max(y-m,0)*Math.max(g-A,0);return w/(p+f-w)}function WC(e,t,n){let r=Math.exp(t*n*n);return n<=e?r:0}function zx(e,t){return e.score-t.score||e.score===t.score&&t.boxIndex-e.boxIndex}async function BC(e,t,n,r=.5,a=Number.NEGATIVE_INFINITY){let s=E(e,"boxes","nonMaxSuppressionAsync"),i=E(t,"scores","nonMaxSuppressionAsync"),o=gl(s,i,n,r,a);n=o.maxOutputSize,r=o.iouThreshold,a=o.scoreThreshold;let l=await Promise.all([s.data(),i.data()]),c=l[0],u=l[1],{selectedIndices:h}=$x(c,u,n,r,a);return s!==e&&s.dispose(),i!==t&&i.dispose(),an(h,"int32")}var VC=BC;function UC(e,t,n,r=.5,a=Number.NEGATIVE_INFINITY,s=0){let i=E(e,"boxes","nonMaxSuppression"),o=E(t,"scores","nonMaxSuppression"),l=gl(i,o,n,r,a,s);n=l.maxOutputSize,r=l.iouThreshold,a=l.scoreThreshold,s=l.softNmsSigma;let c={boxes:i,scores:o},u={maxOutputSize:n,iouThreshold:r,scoreThreshold:a,softNmsSigma:s},h=$.runKernel(Eo,c,u);return{selectedIndices:h[0],selectedScores:h[1]}}var jC=D({nonMaxSuppressionWithScore_:UC});async function HC(e,t,n,r=.5,a=Number.NEGATIVE_INFINITY,s=0){let i=E(e,"boxes","nonMaxSuppressionAsync"),o=E(t,"scores","nonMaxSuppressionAsync"),l=gl(i,o,n,r,a,s);n=l.maxOutputSize,r=l.iouThreshold,a=l.scoreThreshold,s=l.softNmsSigma;let c=await Promise.all([i.data(),o.data()]),u=c[0],h=c[1],{selectedIndices:d,selectedScores:p}=Ox(u,h,n,r,a,s);return i!==e&&i.dispose(),o!==t&&o.dispose(),{selectedIndices:an(d,"int32"),selectedScores:an(p)}}var GC=HC;function qC(e,t,n,r=.5,a=Number.NEGATIVE_INFINITY,s=!1){let i=E(e,"boxes","nonMaxSuppression"),o=E(t,"scores","nonMaxSuppression"),l=gl(i,o,n,r,a,null),c=l.maxOutputSize,u=l.iouThreshold,h=l.scoreThreshold,d={boxes:i,scores:o},p={maxOutputSize:c,iouThreshold:u,scoreThreshold:h,padToMaxOutputSize:s},f=$.runKernel(Co,d,p);return{selectedIndices:f[0],validOutputs:f[1]}}var XC=D({nonMaxSuppressionPadded_:qC});async function KC(e,t,n,r=.5,a=Number.NEGATIVE_INFINITY,s=!1){let i=E(e,"boxes","nonMaxSuppressionAsync"),o=E(t,"scores","nonMaxSuppressionAsync"),l=gl(i,o,n,r,a,null),c=l.maxOutputSize,u=l.iouThreshold,h=l.scoreThreshold,[d,p]=await Promise.all([i.data(),o.data()]),{selectedIndices:f,validOutputs:m}=Dx(d,p,c,u,h,s);return i!==e&&i.dispose(),o!==t&&o.dispose(),{selectedIndices:an(f,"int32"),validOutputs:_e(m,"int32")}}var ZC=KC;function YC(e,t,n=!1,r=!1){let a=E(e,"images","resizeBilinear");M(a.rank===3||a.rank===4,()=>`Error in resizeBilinear: x must be rank 3 or 4, but got rank ${a.rank}.`),M(t.length===2,()=>`Error in resizeBilinear: new shape must 2D, but got shape ${t}.`),M(r===!1||n===!1,()=>"Error in resizeBilinear: If halfPixelCenters is true, alignCorners must be false.");let s=a,i=!1;a.rank===3&&(i=!0,s=H(a,[1,a.shape[0],a.shape[1],a.shape[2]]));let[]=t,o={images:s},l={alignCorners:n,halfPixelCenters:r,size:t},c=$.runKernel(Ps,o,l);return i?H(c,[c.shape[1],c.shape[2],c.shape[3]]):c}var Px=D({resizeBilinear_:YC});function JC(e,t,n=!1,r=!1){let a=E(e,"images","resizeNearestNeighbor");M(a.rank===3||a.rank===4,()=>`Error in resizeNearestNeighbor: x must be rank 3 or 4, but got rank ${a.rank}.`),M(t.length===2,()=>`Error in resizeNearestNeighbor: new shape must 2D, but got shape ${t}.`),M(a.dtype==="float32"||a.dtype==="int32",()=>"`images` must have `int32` or `float32` as dtype"),M(r===!1||n===!1,()=>"Error in resizeNearestNeighbor: If halfPixelCenters is true, alignCorners must be false.");let s=a,i=!1;a.rank===3&&(i=!0,s=H(a,[1,a.shape[0],a.shape[1],a.shape[2]]));let[]=t,o={images:s},l={alignCorners:n,halfPixelCenters:r,size:t},c=$.runKernel(_u,o,l);return i?H(c,[c.shape[1],c.shape[2],c.shape[3]]):c}var Lx=D({resizeNearestNeighbor_:JC});function QC(e,t,n="nearest",r="constant",a=0,s){let i=E(e,"image","transform","float32"),o=E(t,"transforms","transform","float32");M(i.rank===4,()=>`Error in transform: image must be rank 4,but got rank ${i.rank}.`),M(o.rank===2&&(o.shape[0]===i.shape[0]||o.shape[0]===1)&&o.shape[1]===8,()=>"Error in transform: Input transform should be batch x 8 or 1 x 8"),M(s==null||s.length===2,()=>`Error in transform: outputShape must be [height, width] or null, but got ${s}.`);let l={image:i,transforms:o},c={interpolation:n,fillMode:r,fillValue:a,outputShape:s};return $.runKernel(Yh,l,c)}var eE=D({transform_:QC});function tE(e,t,n){M(t%1==0,()=>`bandPart(): numLower must be an integer, got ${t}.`),M(n%1==0,()=>`bandPart(): numUpper must be an integer, got ${n}.`);let r=E(e,"a","bandPart");M(r.rank>=2,()=>`bandPart(): Rank must be at least 2, got ${r.rank}.`);let a=r.shape,[s,i]=r.shape.slice(-2);if(!(t<=s))throw new Error(`bandPart(): numLower (${t}) must not be greater than the number of rows (${s}).`);if(!(n<=i))throw new Error(`bandPart(): numUpper (${n}) must not be greater than the number of columns (${i}).`);t<0&&(t=s),n<0&&(n=i);let o=H(Id(0,s,1,"int32"),[-1,1]),l=Id(0,i,1,"int32"),c=ye(o,l),u=ar(ui(c,_e(+t,"int32")),Da(c,_e(-n,"int32"))),h=Ct([s,i],r.dtype);return H(ln(sr(H(r,[-1,s,i])).map(d=>bn(u,d,h))),a)}var nE=D({bandPart_:tE});function rE(e){let t;if(Array.isArray(e)){t=!1,M(e!=null&&e.length>0,()=>"Gram-Schmidt process: input must not be null, undefined, or empty");let a=e[0].shape[0];for(let s=1;s`Gram-Schmidt: Non-unique lengths found in the input vectors: (${e[s].shape[0]} vs. ${a})`)}else t=!0,e=zt(e,e.shape[0],0).map(a=>Oa(a,[0]));M(e.length<=e[0].shape[0],()=>`Gram-Schmidt: Number of vectors (${e.length}) exceeds number of dimensions (${e[0].shape[0]}).`);let n=[],r=e;for(let a=0;a{let s=r[a];if(a>0)for(let i=0;i=2,()=>`qr() requires input tensor to have a rank >= 2, but got rank ${e.rank}`),e.rank===2)return Wx(e,t);{let n=e.shape.slice(0,e.shape.length-2).reduce((l,c)=>l*c),r=sr(H(e,[n,e.shape[e.shape.length-2],e.shape[e.shape.length-1]]),0),a=[],s=[];r.forEach(l=>{let[c,u]=Wx(l,t);a.push(c),s.push(u)});let i=H(ln(a,0),e.shape),o=H(ln(s,0),e.shape);return[i,o]}}function Wx(e,t=!1){return $.tidy(()=>{M(e.shape.length===2,()=>`qr2d() requires a 2D Tensor, but got a ${e.shape.length}D Tensor.`);let n=e.shape[0],r=e.shape[1],a=am(n),s=Er(e),i=_n([[1]],[1,1]),o=Er(i),l=n>=r?r:n;for(let c=0;c{let p=Ee(s,[c,c],[n-c,1]),f=zd(p),m=Ee(s,[c,c],[1,1]),A=bn(rr(m,0),_n([[-1]]),_n([[1]])),y=ye(m,P(A,f)),g=ge(p,y);g.shape[0]===1?o=Er(i):o=rt([i,Ee(g,[1,0],[g.shape[0]-1,g.shape[1]])],0);let w=_t(ge(Ge(A,y),f)),b=Ee(s,[c,0],[n-c,r]),_=P(w,o),x=nt(o);if(c===0)s=ye(b,Ge(_,Ge(x,b)));else{let C=ye(b,Ge(_,Ge(x,b)));s=rt([Ee(s,[0,0],[c,r]),C],0)}let N=nt(_),T=Ee(a,[0,c],[n,a.shape[1]-c]);if(c===0)a=ye(T,Ge(Ge(T,o),N));else{let C=ye(T,Ge(Ge(T,o),N));a=rt([Ee(a,[0,0],[n,c]),C],1)}return[o,s,a]}),Ie([u,h,d])}return!t&&n>r&&(a=Ee(a,[0,0],[n,r]),s=Ee(s,[0,0],[r,r])),[a,s]})}var iE=D({qr_:sE}),un;(function(e){e[e.NONE=0]="NONE",e[e.MEAN=1]="MEAN",e[e.SUM=2]="SUM",e[e.SUM_BY_NONZERO_WEIGHTS=3]="SUM_BY_NONZERO_WEIGHTS"})(un||(un={}));function oE(e,t,n=un.SUM_BY_NONZERO_WEIGHTS){let r=E(e,"losses","computeWeightedLoss"),a=null;t!=null&&(a=E(t,"weights","computeWeightedLoss"));let s=a==null?r:P(r,a);if(n===un.NONE)return s;if(n===un.SUM)return Ce(s);if(n===un.MEAN){if(a==null)return vt(s);{let i=r.size/a.size,o=ge(Ce(s),Ce(a));return i>1?ge(o,_e(i)):o}}if(n===un.SUM_BY_NONZERO_WEIGHTS){if(a==null)return ge(Ce(s),_e(r.size));{let i=P(a,Dr(r.shape)),o=me(Ce(hi(i,_e(0))),"float32");return ge(Ce(s),o)}}throw Error(`Unknown reduction: ${n}`)}var aa=D({computeWeightedLoss_:oE});function lE(e,t,n,r=un.SUM_BY_NONZERO_WEIGHTS){let a=E(e,"labels","absoluteDifference"),s=E(t,"predictions","absoluteDifference"),i=null;n!=null&&(i=E(n,"weights","absoluteDifference")),nn(a.shape,s.shape,"Error in absoluteDifference: ");let o=Dt(ye(a,s));return aa(o,i,r)}var uE=D({absoluteDifference_:lE});function cE(e,t,n,r,a=un.SUM_BY_NONZERO_WEIGHTS){let s=E(e,"labels","cosineDistance"),i=E(t,"predictions","cosineDistance"),o=null;r!=null&&(o=E(r,"weights","cosineDistance")),nn(s.shape,i.shape,"Error in cosineDistance: ");let l=_e(1),c=ye(l,Ce(P(s,i),n,!0));return aa(c,o,a)}var hE=D({cosineDistance_:cE});function dE(e,t,n,r=un.SUM_BY_NONZERO_WEIGHTS){let a=E(e,"labels","hingeLoss"),s=E(t,"predictions","hingeLoss"),i=null;n!=null&&(i=E(n,"weights","hingeLoss")),nn(a.shape,s.shape,"Error in hingeLoss: ");let o=_e(1);a=ye(P(_e(2),a),o);let l=Or(ye(o,P(a,s)));return aa(l,i,r)}var pE=D({hingeLoss_:dE});function fE(e,t,n,r=1,a=un.SUM_BY_NONZERO_WEIGHTS){let s=E(e,"labels","huberLoss"),i=E(t,"predictions","huberLoss"),o=null;n!=null&&(o=E(n,"weights","huberLoss")),nn(s.shape,i.shape,"Error in huberLoss: ");let l=_e(r),c=Dt(ye(i,s)),u=fl(c,l),h=ye(c,u),d=se(P(_e(.5),it(u)),P(l,h));return aa(d,o,a)}var mE=D({huberLoss_:fE});function AE(e,t,n,r=1e-7,a=un.SUM_BY_NONZERO_WEIGHTS){let s=E(e,"labels","logLoss"),i=E(t,"predictions","logLoss"),o=null;n!=null&&(o=E(n,"weights","logLoss")),nn(s.shape,i.shape,"Error in logLoss: ");let l=_e(1),c=_e(r),u=_t(P(s,En(se(i,c)))),h=P(ye(l,s),En(se(ye(l,i),c))),d=ye(u,h);return aa(d,o,a)}var yE=D({logLoss_:AE});function gE(e,t,n,r=un.SUM_BY_NONZERO_WEIGHTS){let a=E(e,"labels","meanSquaredError"),s=E(t,"predictions","meanSquaredError"),i=null;n!=null&&(i=E(n,"weights","meanSquaredError")),nn(a.shape,s.shape,"Error in meanSquaredError: ");let o=$d(a,s);return aa(o,i,r)}var xE=D({meanSquaredError_:gE});function wE(e,t){let n=E(e,"labels","sigmoidCrossEntropyWithLogits"),r=E(t,"logits","sigmoidCrossEntropyWithLogits");nn(n.shape,r.shape,"Error in sigmoidCrossEntropyWithLogits: ");let a=Or(r),s=P(r,n),i=xd(Hn(_t(Dt(r))));return se(ye(a,s),i)}function bE(e,t,n,r=0,a=un.SUM_BY_NONZERO_WEIGHTS){let s=E(e,"multiClassLabels","sigmoidCrossEntropy"),i=E(t,"logits","sigmoidCrossEntropy"),o=null;if(n!=null&&(o=E(n,"weights","sigmoidCrossEntropy")),nn(s.shape,i.shape,"Error in sigmoidCrossEntropy: "),r>0){let c=_e(r),u=_e(1),h=_e(.5);s=se(P(s,ye(u,c)),P(h,c))}let l=wE(s,i);return aa(l,o,a)}var _E=D({sigmoidCrossEntropy_:bE});function vE(e,t,n=-1){if(n===-1&&(n=t.rank-1),n!==t.rank-1)throw Error(`Softmax cross entropy along a non-last dimension is not yet supported. Labels / logits was rank ${t.rank} and dim was ${n}`);return Fr((r,a,s)=>{let i=lm(a,[n],!0),o=ye(me(a,"float32"),i);s([r,o]);let l=_t(P(o,r));return{value:Ce(l,[n]),gradFunc:(c,u)=>{let[h,d]=u,p=ci(c.shape,[n]);return[P(H(c,p),ye(me(h,"float32"),Hn(d))),P(H(c,p),ye(Hn(d),me(h,"float32")))]}}})(e,t)}function kE(e,t,n,r=0,a=un.SUM_BY_NONZERO_WEIGHTS){let s=E(e,"onehotLabels","softmaxCrossEntropy"),i=E(t,"logits","softmaxCrossEntropy"),o=null;if(n!=null&&(o=E(n,"weights","softmaxCrossEntropy")),nn(s.shape,i.shape,"Error in softmaxCrossEntropy: "),r>0){let c=_e(r),u=_e(1),h=_e(s.shape[1]);s=se(P(s,ye(u,c)),ge(c,h))}let l=vE(s,i);return aa(l,o,a)}var IE=D({softmaxCrossEntropy_:kE}),NE={fft:Qu,ifft:Al,rfft:ec,irfft:Fd},SE={hammingWindow:_C,hannWindow:Mx,frame:Fx,stft:NC},We={flipLeftRight:EC,resizeNearestNeighbor:Lx,resizeBilinear:Px,rotateWithOffset:MC,cropAndResize:TC,nonMaxSuppression:$C,nonMaxSuppressionAsync:VC,nonMaxSuppressionWithScore:jC,nonMaxSuppressionWithScoreAsync:GC,nonMaxSuppressionPadded:XC,nonMaxSuppressionPaddedAsync:ZC,transform:eE},Bx={bandPart:nE,gramSchmidt:aE,qr:iE},TE={absoluteDifference:uE,computeWeightedLoss:aa,cosineDistance:hE,hingeLoss:pE,huberLoss:mE,logLoss:yE,meanSquaredError:xE,sigmoidCrossEntropy:_E,softmaxCrossEntropy:IE},sa=class extends j5{minimize(e,t=!1,n){let{value:r,grads:a}=this.computeGradients(e,n);if(n!=null){let s=n.map(i=>({name:i.name,tensor:a[i.name]}));this.applyGradients(s)}else this.applyGradients(a);return Ie(a),t?r:(r.dispose(),null)}get iterations(){return this.iterations_==null&&(this.iterations_=0),this.iterations_}incrementIterations(){this.iterations_=this.iterations+1}computeGradients(e,t){return dx(e,t)}dispose(){this.iterations_!=null&&Ie(this.iterations_)}async saveIterations(){return this.iterations_==null&&(this.iterations_=0),{name:"iter",tensor:_e(this.iterations_,"int32")}}async getWeights(){throw new Error("getWeights() is not implemented for this optimizer yet.")}async setWeights(e){throw new Error(`setWeights() is not implemented for this optimizer class ${this.getClassName()}`)}async extractIterations(e){return this.iterations_=(await e[0].tensor.data())[0],e.slice(1)}};Object.defineProperty(sa,Symbol.hasInstance,{value:e=>e.minimize!=null&&e.computeGradients!=null&&e.applyGradients!=null});var Vd=class extends sa{constructor(e,t,n=null){super();this.learningRate=e,this.rho=t,this.epsilon=n,this.accumulatedGrads=[],this.accumulatedUpdates=[],n==null&&(this.epsilon=$.backend.epsilon())}applyGradients(e){(Array.isArray(e)?e.map(t=>t.name):Object.keys(e)).forEach((t,n)=>{let r=$.registeredVariables[t],a=!1;this.accumulatedGrads[n]==null&&(this.accumulatedGrads[n]={originalName:`${t}/accum_grad`,variable:z(()=>je(r).variable(a))}),this.accumulatedUpdates[n]==null&&(this.accumulatedUpdates[n]={originalName:`${t}/accum_var`,variable:z(()=>je(r).variable(a))});let s=Array.isArray(e)?e[n].tensor:e[t];if(s==null)return;let i=this.accumulatedGrads[n].variable,o=this.accumulatedUpdates[n].variable;z(()=>{let l=se(P(i,this.rho),P(it(s),1-this.rho)),c=P(ge(Jt(se(o,this.epsilon)),Jt(se(i,this.epsilon))),s),u=se(P(o,this.rho),P(it(c),1-this.rho));i.assign(l),o.assign(u);let h=se(P(c,-this.learningRate),r);r.assign(h)})}),this.incrementIterations()}dispose(){this.accumulatedUpdates!=null&&(Ie(this.accumulatedGrads.map(e=>e.variable)),Ie(this.accumulatedUpdates.map(e=>e.variable)))}async getWeights(){let e=[...this.accumulatedGrads,...this.accumulatedUpdates];return[await this.saveIterations()].concat(e.map(t=>({name:t.originalName,tensor:t.variable})))}async setWeights(e){e=await this.extractIterations(e);let t=e.length/2,n=!1;this.accumulatedGrads=e.slice(0,t).map(r=>({originalName:r.name,variable:r.tensor.variable(n)})),this.accumulatedUpdates=e.slice(t,t*2).map(r=>({originalName:r.name,variable:r.tensor.variable(n)}))}getConfig(){return{learningRate:this.learningRate,rho:this.rho,epsilon:this.epsilon}}static fromConfig(e,t){return new e(t.learningRate,t.rho,t.epsilon)}};Vd.className="Adadelta";Ea(Vd);var Ud=class extends sa{constructor(e,t=.1){super();this.learningRate=e,this.initialAccumulatorValue=t,this.accumulatedGrads=[]}applyGradients(e){(Array.isArray(e)?e.map(t=>t.name):Object.keys(e)).forEach((t,n)=>{let r=$.registeredVariables[t];if(this.accumulatedGrads[n]==null){let i=!1;this.accumulatedGrads[n]={originalName:`${t}/accumulator`,variable:z(()=>ju(r.shape,this.initialAccumulatorValue).variable(i))}}let a=Array.isArray(e)?e[n].tensor:e[t];if(a==null)return;let s=this.accumulatedGrads[n].variable;z(()=>{let i=se(s,it(a));s.assign(i);let o=se(P(ge(a,Jt(se(i,$.backend.epsilon()))),-this.learningRate),r);r.assign(o)})}),this.incrementIterations()}dispose(){this.accumulatedGrads!=null&&Ie(this.accumulatedGrads.map(e=>e.variable))}async getWeights(){return[await this.saveIterations()].concat(this.accumulatedGrads.map(e=>({name:e.originalName,tensor:e.variable})))}async setWeights(e){e=await this.extractIterations(e);let t=!1;this.accumulatedGrads=e.map(n=>({originalName:n.name,variable:n.tensor.variable(t)}))}getConfig(){return{learningRate:this.learningRate,initialAccumulatorValue:this.initialAccumulatorValue}}static fromConfig(e,t){return new e(t.learningRate,t.initialAccumulatorValue)}};Ud.className="Adagrad";Ea(Ud);var jd=class extends sa{constructor(e,t,n,r=null){super();this.learningRate=e,this.beta1=t,this.beta2=n,this.epsilon=r,this.accumulatedFirstMoment=[],this.accumulatedSecondMoment=[],z(()=>{this.accBeta1=_e(t).variable(),this.accBeta2=_e(n).variable()}),r==null&&(this.epsilon=$.backend.epsilon())}applyGradients(e){let t=Array.isArray(e)?e.map(n=>n.name):Object.keys(e);z(()=>{let n=ye(1,this.accBeta1),r=ye(1,this.accBeta2);t.forEach((a,s)=>{let i=$.registeredVariables[a],o=!1;this.accumulatedFirstMoment[s]==null&&(this.accumulatedFirstMoment[s]={originalName:`${a}/m`,variable:z(()=>je(i).variable(o))}),this.accumulatedSecondMoment[s]==null&&(this.accumulatedSecondMoment[s]={originalName:`${a}/v`,variable:z(()=>je(i).variable(o))});let l=Array.isArray(e)?e[s].tensor:e[a];if(l==null)return;let c=this.accumulatedFirstMoment[s].variable,u=this.accumulatedSecondMoment[s].variable,h=se(P(c,this.beta1),P(l,1-this.beta1)),d=se(P(u,this.beta2),P(it(l),1-this.beta2)),p=ge(h,n),f=ge(d,r);c.assign(h),u.assign(d);let m=se(P(ge(p,se(Jt(f),this.epsilon)),-this.learningRate),i);i.assign(m)}),this.accBeta1.assign(P(this.accBeta1,this.beta1)),this.accBeta2.assign(P(this.accBeta2,this.beta2))}),this.incrementIterations()}dispose(){this.accBeta1.dispose(),this.accBeta2.dispose(),this.accumulatedFirstMoment!=null&&Ie(this.accumulatedFirstMoment.map(e=>e.variable)),this.accumulatedSecondMoment!=null&&Ie(this.accumulatedSecondMoment.map(e=>e.variable))}async getWeights(){let e=[...this.accumulatedFirstMoment,...this.accumulatedSecondMoment];return[await this.saveIterations()].concat(e.map(t=>({name:t.originalName,tensor:t.variable})))}async setWeights(e){e=await this.extractIterations(e),z(()=>{this.accBeta1.assign(ra(this.beta1,this.iterations_+1)),this.accBeta2.assign(ra(this.beta2,this.iterations_+1))});let t=e.length/2,n=!1;this.accumulatedFirstMoment=e.slice(0,t).map(r=>({originalName:r.name,variable:r.tensor.variable(n)})),this.accumulatedSecondMoment=e.slice(t,t*2).map(r=>({originalName:r.name,variable:r.tensor.variable(n)}))}getConfig(){return{learningRate:this.learningRate,beta1:this.beta1,beta2:this.beta2,epsilon:this.epsilon}}static fromConfig(e,t){return new e(t.learningRate,t.beta1,t.beta2,t.epsilon)}};jd.className="Adam";Ea(jd);var Hd=class extends sa{constructor(e,t,n,r=null,a=0){super();this.learningRate=e,this.beta1=t,this.beta2=n,this.epsilon=r,this.decay=a,this.accumulatedFirstMoment=[],this.accumulatedWeightedInfNorm=[],z(()=>{this.iteration=_e(0).variable(),this.accBeta1=_e(t).variable()}),r==null&&(this.epsilon=$.backend.epsilon())}applyGradients(e){let t=Array.isArray(e)?e.map(n=>n.name):Object.keys(e);z(()=>{let n=ye(1,this.accBeta1),r=ge(-this.learningRate,se(P(this.iteration,this.decay),1));t.forEach((a,s)=>{let i=$.registeredVariables[a],o=!1;this.accumulatedFirstMoment[s]==null&&(this.accumulatedFirstMoment[s]={originalName:`${a}/m`,variable:je(i).variable(o)}),this.accumulatedWeightedInfNorm[s]==null&&(this.accumulatedWeightedInfNorm[s]={originalName:`${a}/v`,variable:je(i).variable(o)});let l=Array.isArray(e)?e[s].tensor:e[a];if(l==null)return;let c=this.accumulatedFirstMoment[s].variable,u=this.accumulatedWeightedInfNorm[s].variable,h=se(P(c,this.beta1),P(l,1-this.beta1)),d=P(u,this.beta2),p=Dt(l),f=$r(d,p);c.assign(h),u.assign(f);let m=se(P(ge(r,n),ge(h,se(f,this.epsilon))),i);i.assign(m)}),this.iteration.assign(se(this.iteration,1)),this.accBeta1.assign(P(this.accBeta1,this.beta1))}),this.incrementIterations()}dispose(){this.accBeta1.dispose(),this.iteration.dispose(),this.accumulatedFirstMoment!=null&&Ie(this.accumulatedFirstMoment.map(e=>e.variable)),this.accumulatedWeightedInfNorm!=null&&Ie(this.accumulatedWeightedInfNorm.map(e=>e.variable))}async getWeights(){throw new Error("getWeights() is not implemented for Adamax yet.")}async setWeights(e){throw new Error("setWeights() is not implemented for Adamax yet.")}getConfig(){return{learningRate:this.learningRate,beta1:this.beta1,beta2:this.beta2,epsilon:this.epsilon,decay:this.decay}}static fromConfig(e,t){return new e(t.learningRate,t.beta1,t.beta2,t.epsilon,t.decay)}};Hd.className="Adamax";Ea(Hd);var tc=class extends sa{constructor(e){super();this.learningRate=e,this.setLearningRate(e)}applyGradients(e){(Array.isArray(e)?e.map(t=>t.name):Object.keys(e)).forEach((t,n)=>{let r=Array.isArray(e)?e[n].tensor:e[t];if(r==null)return;let a=$.registeredVariables[t];z(()=>{let s=se(P(this.c,r),a);a.assign(s)})}),this.incrementIterations()}setLearningRate(e){this.learningRate=e,this.c!=null&&this.c.dispose(),this.c=Ut(_e(-e))}dispose(){this.c.dispose()}async getWeights(){return[await this.saveIterations()]}async setWeights(e){if(e=await this.extractIterations(e),e.length!==0)throw new Error("SGD optimizer does not have settable weights.")}getConfig(){return{learningRate:this.learningRate}}static fromConfig(e,t){return new e(t.learningRate)}};tc.className="SGD";Ea(tc);var Gd=class extends tc{constructor(e,t,n=!1){super(e);this.learningRate=e,this.momentum=t,this.useNesterov=n,this.accumulations=[],this.m=_e(this.momentum)}applyGradients(e){(Array.isArray(e)?e.map(t=>t.name):Object.keys(e)).forEach((t,n)=>{let r=$.registeredVariables[t];if(this.accumulations[n]==null){let i=!1;this.accumulations[n]={originalName:`${t}/momentum`,variable:z(()=>je(r).variable(i))}}let a=this.accumulations[n].variable,s=Array.isArray(e)?e[n].tensor:e[t];s!=null&&z(()=>{let i,o=se(P(this.m,a),s);this.useNesterov?i=se(P(this.c,se(s,P(o,this.m))),r):i=se(P(this.c,o),r),a.assign(o),r.assign(i)})}),this.incrementIterations()}dispose(){this.m.dispose(),this.accumulations!=null&&Ie(this.accumulations.map(e=>e.variable))}setMomentum(e){this.momentum=e}async getWeights(){return[await this.saveIterations()].concat(this.accumulations.map(e=>({name:e.originalName,tensor:e.variable})))}async setWeights(e){e=await this.extractIterations(e);let t=!1;this.accumulations=e.map(n=>({originalName:n.name,variable:n.tensor.variable(t)}))}getConfig(){return{learningRate:this.learningRate,momentum:this.momentum,useNesterov:this.useNesterov}}static fromConfig(e,t){return new e(t.learningRate,t.momentum,t.useNesterov)}};Gd.className="Momentum";Ea(Gd);var qd=class extends sa{constructor(e,t=.9,n=0,r=null,a=!1){super();if(this.learningRate=e,this.decay=t,this.momentum=n,this.epsilon=r,this.accumulatedMeanSquares=[],this.accumulatedMoments=[],this.accumulatedMeanGrads=[],this.centered=a,r==null&&(this.epsilon=$.backend.epsilon()),e==null)throw new Error("learningRate for RMSPropOptimizer must be defined.")}applyGradients(e){(Array.isArray(e)?e.map(t=>t.name):Object.keys(e)).forEach((t,n)=>{let r=$.registeredVariables[t],a=!1;this.accumulatedMeanSquares[n]==null&&(this.accumulatedMeanSquares[n]={originalName:`${t}/rms`,variable:z(()=>je(r).variable(a))}),this.accumulatedMoments[n]==null&&(this.accumulatedMoments[n]={originalName:`${t}/momentum`,variable:z(()=>je(r).variable(a))}),this.accumulatedMeanGrads[n]==null&&this.centered&&(this.accumulatedMeanGrads[n]={originalName:`${t}/mg`,variable:z(()=>je(r).variable(a))});let s=Array.isArray(e)?e[n].tensor:e[t];if(s==null)return;let i=this.accumulatedMeanSquares[n].variable,o=this.accumulatedMoments[n].variable;z(()=>{let l=se(P(i,this.decay),P(it(s),1-this.decay));if(this.centered){let c=this.accumulatedMeanGrads[n].variable,u=se(P(c,this.decay),P(s,1-this.decay)),h=ge(P(s,this.learningRate),Jt(ye(l,se(it(u),this.epsilon)))),d=se(P(o,this.momentum),h);i.assign(l),c.assign(u),o.assign(d);let p=ye(r,d);r.assign(p)}else{let c=se(P(i,this.decay),P(it(s),1-this.decay)),u=se(P(o,this.momentum),ge(P(s,this.learningRate),Jt(se(c,this.epsilon))));i.assign(c),o.assign(u);let h=ye(r,u);r.assign(h)}})}),this.incrementIterations()}dispose(){this.accumulatedMeanSquares!=null&&Ie(this.accumulatedMeanSquares.map(e=>e.variable)),this.accumulatedMeanGrads!=null&&this.centered&&Ie(this.accumulatedMeanGrads.map(e=>e.variable)),this.accumulatedMoments!=null&&Ie(this.accumulatedMoments.map(e=>e.variable))}async getWeights(){let e=[...this.accumulatedMeanSquares,...this.accumulatedMoments];return this.centered&&e.push(...this.accumulatedMeanGrads),[await this.saveIterations()].concat(e.map(t=>({name:t.originalName,tensor:t.variable})))}async setWeights(e){e=await this.extractIterations(e);let t=this.centered?e.length/3:e.length/2,n=!1;this.accumulatedMeanSquares=e.slice(0,t).map(r=>({originalName:r.name,variable:r.tensor.variable(n)})),this.accumulatedMoments=e.slice(t,t*2).map(r=>({originalName:r.name,variable:r.tensor.variable(n)})),this.centered&&(this.accumulatedMeanGrads=e.slice(t*2,t*3).map(r=>({originalName:r.name,variable:r.tensor.variable(n)})))}getConfig(){return{learningRate:this.learningRate,decay:this.decay,momentum:this.momentum,epsilon:this.epsilon,centered:this.centered}}static fromConfig(e,t){return new e(t.learningRate,t.decay,t.momentum,t.epsilon,t.centered)}};qd.className="RMSProp";Ea(qd);var di=class{static sgd(e){return new tc(e)}static momentum(e,t,n=!1){return new Gd(e,t,n)}static rmsprop(e,t=.9,n=0,r=null,a=!1){return new qd(e,t,n,r,a)}static adam(e=.001,t=.9,n=.999,r=null){return new jd(e,t,n,r)}static adadelta(e=.001,t=.95,n=null){return new Vd(e,t,n)}static adamax(e=.002,t=.9,n=.999,r=null,a=0){return new Hd(e,t,n,r,a)}static adagrad(e,t=.1){return new Ud(e,t)}},pi={sgd:di.sgd,momentum:di.momentum,adadelta:di.adadelta,adagrad:di.adagrad,rmsprop:di.rmsprop,adamax:di.adamax,adam:di.adam},CE=(()=>typeof requestAnimationFrame!="undefined"?requestAnimationFrame:typeof setImmediate!="undefined"?setImmediate:e=>e())();function Xd(){return new Promise(e=>CE(()=>e()))}var R={};Oe(R,{ERF_A1:()=>WE,ERF_A2:()=>BE,ERF_A3:()=>VE,ERF_A4:()=>UE,ERF_A5:()=>jE,ERF_P:()=>LE,PARALLELIZE_THRESHOLD:()=>Tm,SELU_SCALE:()=>Ux,SELU_SCALEALPHA:()=>Vx,applyActivation:()=>Wd,assertAndGetBroadcastShape:()=>ft,assertAxesAreInnerMostDims:()=>hS,assertParamsConsistent:()=>EE,assignToTypedArray:()=>JE,axesAreInnerMostDims:()=>im,calculateShapes:()=>M5,combineLocations:()=>fx,complexWithEvenIndex:()=>KE,complexWithOddIndex:()=>ZE,computeConv2DInfo:()=>Lu,computeConv3DInfo:()=>Y5,computeDefaultPad:()=>Xf,computeDilation2DInfo:()=>DI,computeOptimalWindowSize:()=>ME,computeOutAndReduceShapes:()=>mx,computeOutShape:()=>RE,computePool2DInfo:()=>Z5,computePool3DInfo:()=>OI,convertConv2DDataFormat:()=>K5,eitherStridesOrDilationsAreOne:()=>Mr,expandShapeToKeepDim:()=>ci,exponent:()=>eR,exponents:()=>QE,fromStringArrayToUint8:()=>rR,fromUint8ToStringArray:()=>nR,getAxesPermutation:()=>Ax,getBroadcastDims:()=>SN,getComplexWithIndex:()=>YE,getFusedBiasGradient:()=>Ld,getFusedDyActivation:()=>Pd,getImageCenter:()=>FE,getInnerMostAxes:()=>dS,getPermuted:()=>DE,getReductionAxes:()=>Ot,getReshaped:()=>$E,getReshapedPermuted:()=>OE,getSliceBeginCoords:()=>zE,getSliceSize:()=>PE,getUndoAxesPermutation:()=>om,log:()=>GE,mergeRealAndImagArrays:()=>qE,prepareAndValidate:()=>R5,prepareSplitSize:()=>tR,segment_util:()=>jx,shouldFuse:()=>Bd,slice_util:()=>on,splitRealAndImagArrays:()=>XE,tupleValuesAreOne:()=>Ma,upcastType:()=>nr,validateInput:()=>Ff,validateUpdateShape:()=>Mf,warn:()=>HE});function EE(e,t){let n=e[0].length;e.forEach((a,s)=>{M(a.length===n,()=>`Error in concat${n}D: rank of tensors[${s}] must be the same as the rank of the rest (${n})`)}),M(t>=0&&t`Error in concat${n}D: axis must be between 0 and ${n-1}.`);let r=e[0];e.forEach((a,s)=>{for(let i=0;i`Error in concat${n}D: Shape of tensors[${s}] (${a}) does not match the shape of the rest (${r}) along the non-concatenated axis ${s}.`)})}function RE(e,t){let n=e[0].slice();for(let r=1;r=t*2+1||i%2==1?s.push(i):a.push(i);r.push(...a),r.push(0),r.push(...s)}return r}function OE(e,t,n,r=!0){let a=[];r?a.push(e[0]/n):a.push(e[0]*n);for(let s=1;s"Number of splits must evenly divide the axis."),r=new Array(t).fill(e.shape[n]/t);else{let a=t.reduce((i,o)=>(o===-1&&(i+=1),i),0);M(a<=1,()=>"There should be only one negative value in split array.");let s=t.indexOf(-1);if(s!==-1){let i=t.reduce((o,l)=>l>0?o+l:o);t[s]=e.shape[n]-i}M(e.shape[n]===t.reduce((i,o)=>i+o),()=>"The sum of sizes must match the size of the axis dimension."),r=t}return r}var jx={};Oe(jx,{collectGatherOpShapeInfo:()=>iR,computeOutShape:()=>sR,segOpComputeOptimalWindowSize:()=>aR});function aR(e,t){let n=!1,r;for(e<=Tm?(r=e,n=!0):r=wh(e,Math.floor(Math.sqrt(e)));!n;)r>t||r===e?n=!0:r=wh(e,r+1);return r}function sR(e,t,n){let r=[],a=e.length;for(let s=0;sa))throw new Error(`Expect batchDims in the range of [-${a}, ${a}], but got ${r}`);if(r<0&&(r+=a),r>s)throw new Error(`batchDims (${r}) must be less than rank(x) ( - ${s}).`);if(nnd(t))}catch(t){throw new Error(`Failed to decode encoded string bytes into utf-8, error: ${t}`)}}function rR(e){return e.map(t=>Tu(t))}var zr={};Oe(zr,{nonMaxSuppressionV3Impl:()=>$x,nonMaxSuppressionV4Impl:()=>Dx,nonMaxSuppressionV5Impl:()=>Ox,whereImpl:()=>kx});function be(e,t){Array.isArray(e)||(e=[e]),e.forEach(n=>{n!=null&&v.assert(n.dtype!=="complex64",()=>`${t} does not support complex64 tensors in the CPU backend.`)})}var oR=zr.whereImpl,Kd=class extends iu{constructor(){super();this.blockSize=48,this.firstUse=!0,this.data=new gh(this,Rr())}nextDataId(){return Kd.nextDataId++}write(e,t,n){this.firstUse&&(this.firstUse=!1,J().get("IS_NODE")&&R.warn(` -============================ -Hi there \u{1F44B}. Looks like you are running TensorFlow.js in Node.js. To speed things up dramatically, install our node backend, which binds to TensorFlow C++, by running npm i @tensorflow/tfjs-node, or npm i @tensorflow/tfjs-node-gpu if you have CUDA. Then call require('@tensorflow/tfjs-node'); (-gpu suffix for CUDA) at the start of your program. Visit https://github.com/tensorflow/tfjs-node for more details. -============================`));let r={id:this.nextDataId()};return this.data.set(r,{values:e,dtype:n,refCount:1}),r}makeTensorInfo(e,t,n){let r;if(t==="string"&&n!=null&&n.length>0&&v.isString(n[0])){let a=n.map(s=>v.encodeString(s));r=this.write(a,e,t)}else r=this.write(n,e,t);return{dataId:r,shape:e,dtype:t}}refCount(e){return this.data.has(e)?this.data.get(e).refCount:0}incRef(e){let t=this.data.get(e);t.refCount++}decRef(e){if(this.data.has(e)){let t=this.data.get(e);t.refCount--}}move(e,t,n,r,a){this.data.set(e,{values:t,dtype:r,refCount:a})}numDataIds(){return this.data.numDataIds()}async read(e){return this.readSync(e)}readSync(e){let{dtype:t,complexTensorInfos:n}=this.data.get(e);if(t==="complex64"){let r=this.readSync(n.real.dataId),a=this.readSync(n.imag.dataId);return R.mergeRealAndImagArrays(r,a)}return this.data.get(e).values}bufferSync(e){let t=this.readSync(e.dataId),n=t;if(e.dtype==="string")try{n=t.map(r=>v.decodeString(r))}catch(r){throw new Error("Failed to decode encoded string bytes into utf-8")}return Le(e.shape,e.dtype,n)}makeOutput(e,t,n){let r=this.write(e,t,n);return Rr().makeTensorFromDataId(r,t,n,this)}disposeData(e,t=!1){if(this.data.has(e)){if(this.data.get(e).refCount--,!t&&this.data.get(e).refCount>0)return!1;let{complexTensorInfos:n}=this.data.get(e);n!=null&&(this.disposeData(n.real.dataId,!0),this.disposeData(n.imag.dataId,!0)),this.data.delete(e)}return!0}disposeIntermediateTensorInfo(e){this.disposeData(e.dataId)}async time(e){let t=v.now();return e(),{kernelMs:v.now()-t}}memory(){return{unreliable:!0,reasons:["The reported memory is an upper bound. Due to automatic garbage collection, the true allocated memory may be less."]}}where(e){be([e],"where");let t=this.readSync(e.dataId);return oR(e.shape,t)}dispose(){}floatPrecision(){return 32}epsilon(){return super.epsilon()}};Kd.nextDataId=0;var Cm={};Oe(Cm,{addImpl:()=>Gx,bincountImpl:()=>Em,bincountReduceImpl:()=>qx,ceilImpl:()=>Xx,concatImpl:()=>Rm,expImpl:()=>Kx,expm1Impl:()=>Zx,floorImpl:()=>Yx,gatherV2Impl:()=>Jx,greaterImpl:()=>Qx,lessImpl:()=>ew,linSpaceImpl:()=>tw,logImpl:()=>nw,maxImpl:()=>rw,maximumImpl:()=>aw,minimumImpl:()=>sw,multiplyImpl:()=>Mm,negImpl:()=>iw,notEqualImpl:()=>ow,prodImpl:()=>lw,rangeImpl:()=>$m,rsqrtImpl:()=>uw,simpleAbsImpl:()=>Hx,sliceImpl:()=>Zd,squaredDifferenceImpl:()=>cw,stridedSliceImpl:()=>hw,subImpl:()=>dw,tileImpl:()=>pw,topKImpl:()=>fw,transposeImpl:()=>Fm,uniqueImpl:()=>mw});function Hx(e){let t=new Float32Array(e.length);for(let n=0;n{let{x:t}=e.inputs,n=e.backend;be(t,"abs");let r=new Float32Array(v.sizeFromShape(t.shape)),a=n.data.get(t.dataId).values;return r=Hx(a),n.makeOutput(r,t.shape,"float32")},uR={kernelName:Zi,backendName:"cpu",kernelFunc:lR};function Et(e){return(t,n,r,a,s)=>{let i=R.assertAndGetBroadcastShape(t,n),o=i.length,l=v.computeStrides(i),c=v.sizeFromShape(i),u=v.getTypedArrayFromDType(s,c),h=t.length,d=n.length,p=v.computeStrides(t),f=v.computeStrides(n),m=R.getBroadcastDims(t,i),A=R.getBroadcastDims(n,i);if(m.length+A.length===0)for(let y=0;yw[N]=0);let b=v.locToIndex(w,h,p),_=g.slice(-d);A.forEach(N=>_[N]=0);let x=v.locToIndex(_,d,f);u[y]=e(r[b],a[x])}return[u,i]}}function Fn(e){let{inputs:t,backend:n}=e,{real:r,imag:a}=t,s=n.data.get(r.dataId).values,i=n.data.get(a.dataId).values,o=n.makeTensorInfo(r.shape,"complex64"),l=n.data.get(o.dataId);return l.complexTensorInfos={real:n.makeTensorInfo(r.shape,"float32",s),imag:n.makeTensorInfo(a.shape,"float32",i)},o}var cR={kernelName:Sh,backendName:"cpu",kernelFunc:Fn};function Yd(e,t,n="float32"){if(n==="complex64"){let a=Yd(e,t,"float32"),s=Yd(e,t,"float32");return Fn({inputs:{real:a,imag:s},backend:e})}let r=v.makeZerosTypedArray(v.sizeFromShape(t),n);return e.makeTensorInfo(t,n,r)}function Pr(e){let{inputs:t,backend:n}=e,{x:r}=t;return n.incRef(r.dataId),{dataId:r.dataId,shape:r.shape,dtype:r.dtype}}var hR={kernelName:vs,backendName:"cpu",kernelFunc:Pr};function fi(e){let{inputs:t,backend:n}=e,{input:r}=t,a=n.data.get(r.dataId).complexTensorInfos.real,s=n.data.get(a.dataId).values;return n.makeTensorInfo(a.shape,a.dtype,s)}var dR={kernelName:qh,backendName:"cpu",kernelFunc:fi};function Pa(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{dtype:s}=r;if(s==="complex64"){if(a.dtype==="complex64")return Pr({inputs:{x:a},backend:n});let i=Yd(n,a.shape,a.dtype),o=Pa({inputs:{x:a},backend:n,attrs:{dtype:"float32"}}),l=Fn({inputs:{real:o,imag:i},backend:n});return n.disposeIntermediateTensorInfo(i),n.disposeIntermediateTensorInfo(o),l}if(a.dtype==="complex64"){let i=fi({inputs:{input:a},backend:n}),o=Pa({inputs:{x:i},backend:n,attrs:{dtype:s}});return n.disposeIntermediateTensorInfo(i),o}if(!v.hasEncodingLoss(a.dtype,s)){let i=Pr({inputs:{x:a},backend:n});return{dataId:i.dataId,shape:i.shape,dtype:s}}if(s==="int32"){let i=n.data.get(a.dataId).values,o=Int32Array.from(i);return n.makeTensorInfo(a.shape,"int32",o)}if(s==="bool"){let i=n.data.get(a.dataId).values,o=v.toTypedArray([0],a.dtype),[l,c]=Et((u,h)=>u!==h?1:0)(a.shape,[],i,o,"bool");return n.makeTensorInfo(c,"bool",l)}throw new Error(`Error in Cast: failed to cast ${a.dtype} to ${s}`)}var pR={kernelName:cs,backendName:"cpu",kernelFunc:Pa};function jt(e,t,n,r){return n==null?({inputs:a,backend:s})=>{let{a:i,b:o}=a,l=s;be([i,o],e);let c=l.data.get(i.dataId).values,u=l.data.get(o.dataId).values,h=r||i.dtype,[d,p]=t(i.shape,o.shape,c,u,h);return l.makeTensorInfo(p,h,d)}:({inputs:a,backend:s})=>{let{a:i,b:o}=a,l=s;if(i.dtype==="complex64"||o.dtype==="complex64"){let c=Pa({inputs:{x:i},backend:l,attrs:{dtype:"complex64"}}),u=l.data.get(c.dataId),h=u.complexTensorInfos.real,d=u.complexTensorInfos.imag,p=l.data.get(h.dataId).values,f=l.data.get(d.dataId).values,m=Pa({inputs:{x:o},backend:l,attrs:{dtype:"complex64"}}),A=l.data.get(m.dataId),y=A.complexTensorInfos.real,g=A.complexTensorInfos.imag,w=l.data.get(y.dataId).values,b=l.data.get(g.dataId).values,[_,x,N]=n(i.shape,o.shape,p,f,w,b),T=l.makeTensorInfo(N,"float32",_),C=l.makeTensorInfo(N,"float32",x),F=Fn({inputs:{real:T,imag:C},backend:l});return l.disposeIntermediateTensorInfo(c),l.disposeIntermediateTensorInfo(m),l.disposeIntermediateTensorInfo(T),l.disposeIntermediateTensorInfo(C),F}else{let c=l.data.get(i.dataId).values,u=l.data.get(o.dataId).values,h=r||i.dtype,[d,p]=t(i.shape,o.shape,c,u,h);return l.makeTensorInfo(p,h,d)}}}function Dm(e){return(t,n,r,a,s,i)=>{let o=R.assertAndGetBroadcastShape(t,n),l=v.sizeFromShape(o),c=o.length,u=v.computeStrides(o),h=v.getTypedArrayFromDType("float32",l),d=v.getTypedArrayFromDType("float32",l),p=R.getBroadcastDims(t,o),f=R.getBroadcastDims(n,o),m=R.mergeRealAndImagArrays(r,a),A=R.mergeRealAndImagArrays(s,i),y=t.length,g=v.computeStrides(t),w=n.length,b=v.computeStrides(n);if(p.length+f.length===0)for(let _=0;_N[W]=0);let T=v.locToIndex(N,y,g),C=x.slice(-w);f.forEach(W=>C[W]=0);let F=v.locToIndex(C,w,b),O=e(m[T*2],m[T*2+1],A[F*2],A[F*2+1]);h[_]=O.real,d[_]=O.imag}return[h,d,o]}}var Gx=Et((e,t)=>e+t),fR=Dm((e,t,n,r)=>({real:e+n,imag:t+r})),nc=jt(va,Gx,fR),mR={kernelName:va,backendName:"cpu",kernelFunc:nc};function Em(e,t,n,r,a){let s=v.sizeFromShape(r),i=v.makeZerosTypedArray(a,n);for(let o=0;o=a||(s>0?i[l]+=t[o]:i[l]+=1)}return i}function qx(e,t,n,r=!1){let a=e.shape[0],s=e.shape[1],i=Le([a,n],t.dtype);for(let o=0;o=n||(r?i.set(1,o,c):t.size>0?i.set(i.get(o,c)+t.get(o,l),o,c):i.set(i.get(o,c)+1,o,c))}return i}function xl(e){return(t,n,r)=>{let a=v.getTypedArrayFromDType(n,t.length);for(let s=0;s{let{x:i}=r;if(be(i,e),i.dtype==="string"||n==="string")throw new Error("unaryKernelFunc does not support string input/output");let o=s,l=o.data.get(i.dataId).values,c=v.sizeFromShape(i.shape),u=n||i.dtype,h=v.getArrayFromDType(u,c);for(let d=0;d{let{x:i}=r;if(be(i,e),i.dtype==="string"||n==="string")throw new Error("unaryKernelFunc does not support string input/output");let o=s,l=o.data.get(i.dataId).values,c=n||i.dtype,u=t(l,c,a);return o.makeTensorInfo(i.shape,c,u)}}var Xx=xl(e=>Math.ceil(e)),AR=wl(hs,Xx),yR={kernelName:hs,backendName:"cpu",kernelFunc:AR};function Rm(e,t,n,r){let a=v.getArrayFromDType(n,v.sizeFromShape(t));if(r&&n!=="string"){let s=0;e.forEach(i=>{let o=v.sizeFromShape(i.shape);a.set(i.vals,s),s+=o})}else{let s=0;e.forEach(i=>{let o=n==="string"?R.fromUint8ToStringArray(i.vals):i.vals,l=0;for(let c=0;cMath.exp(e)),Aw=wl(gs,Kx),gR={kernelName:gs,backendName:"cpu",kernelFunc:Aw},Zx=xl(e=>Math.expm1(e)),xR=wl(po,Zx),wR={kernelName:po,backendName:"cpu",kernelFunc:xR},Yx=xl(e=>Math.floor(e)),bR=wl(xs,Yx),_R={kernelName:xs,backendName:"cpu",kernelFunc:bR};function Jx(e,t,n){let r=Le(n,e.dtype);for(let a=0;ae>t?1:0),vR=jt(yo,Qx,null,"bool"),kR={kernelName:yo,backendName:"cpu",kernelFunc:vR},ew=Et((e,t)=>eMath.log(e)),SR=wl(Is,nw),TR={kernelName:Is,backendName:"cpu",kernelFunc:SR};function rw(e,t,n,r){let a=v.getTypedArrayFromDType(r,v.sizeFromShape(n));for(let s=0;so&&(o=c)}a[s]=o}return a}var aw=Et((e,t)=>Math.max(e,t)),CR=jt(Ss,aw),ER={kernelName:Ss,backendName:"cpu",kernelFunc:CR},sw=Et((e,t)=>Math.min(e,t)),RR=jt(Rs,sw),MR={kernelName:Rs,backendName:"cpu",kernelFunc:RR},Mm=Et((e,t)=>e*t),FR=Dm((e,t,n,r)=>({real:e*n-t*r,imag:e*r+t*n})),Om=jt(Ms,Mm,FR),$R={kernelName:Ms,backendName:"cpu",kernelFunc:Om};function iw(e,t,n){let r=v.createScalarValue(-1,n);return Mm([],t,r,e,n)}function DR(e){let{inputs:t,backend:n}=e,{x:r}=t;be(r,"neg");let a=n.data.get(r.dataId).values,[s,i]=iw(a,r.shape,r.dtype);return n.makeTensorInfo(i,r.dtype,s)}var OR={kernelName:No,backendName:"cpu",kernelFunc:DR},ow=Et((e,t)=>e!==t?1:0),zR=jt(So,ow,null,"bool"),PR={kernelName:So,backendName:"cpu",kernelFunc:zR};function Fm(e,t,n,r,a){let s=t.length,i=v.sizeFromShape(t),o=v.computeStrides(t),l=v.computeStrides(a),c=v.getTypedArrayFromDType(n,v.sizeFromShape(a));for(let u=0;un.disposeIntermediateTensorInfo(g)),n.makeTensorInfo(y,A,f)}var BR={kernelName:Fo,backendName:"cpu",kernelFunc:WR};function $m(e,t,n,r){let a=e===t,s=e1;if(a||s||i)return v.makeZerosTypedArray(0,r);let o=Math.abs(Math.ceil((t-e)/n)),l=v.makeZerosTypedArray(o,r);t1/Math.sqrt(e)),VR=wl(Vs,uw),UR={kernelName:Vs,backendName:"cpu",kernelFunc:VR};function Zd(e,t,n,r,a){let s=on.isSliceContinous(r,t,n),i=v.sizeFromShape(n),o=v.computeStrides(r);if(s){let h=on.computeFlatOffset(t,o);return a==="string"?e.slice(h,h+i):e.subarray(h,h+i)}let l=a==="string"?R.fromUint8ToStringArray(e):e,c=Le(r,a,l),u=Le(n,a);for(let h=0;hf+t[m]);u.set(c.get(...p),...d)}return a==="string"?R.fromStringArrayToUint8(u.values):u.values}function mi(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{begin:s,size:i}=r;be(a,"slice");let[o,l]=on.parseSliceParams(a,s,i);on.assertParamsValid(a,o,l);let c=n.data.get(a.dataId).values,u=Zd(c,o,l,a.shape,a.dtype);return n.makeTensorInfo(l,a.dtype,u)}var jR={kernelName:Lo,backendName:"cpu",kernelFunc:mi},cw=Et((e,t)=>{let n=e-t;return n*n}),HR=jt(Xs,cw),GR={kernelName:Xs,backendName:"cpu",kernelFunc:HR};function hw(e,t,n,r){let a=Le(e,t.dtype);for(let s=0;se-t),qR=Dm((e,t,n,r)=>({real:e-n,imag:t-r})),zm=jt(Ks,dw,qR),XR={kernelName:Ks,backendName:"cpu",kernelFunc:zm};function pw(e,t){let n=new Array(e.rank);for(let a=0;aw.value-g.value);let m=h*r,A=l.subarray(m,m+r),y=c.subarray(m,m+r);for(let g=0;g{for(let A=0;Anew Kd,1);var gw=at(lo,e=>e>=0?e:Math.exp(e)-1),KR={kernelName:lo,backendName:"cpu",kernelFunc:gw};function xw(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{alpha:s}=r;be([a],"leakyRelu");let i=v.sizeFromShape(a.shape),o=n.data.get(a.dataId).values,l=v.getTypedArrayFromDType("float32",i);for(let c=0;ce<0?t*e:e);function ww(e){let{inputs:t,backend:n}=e,{x:r,alpha:a}=t;be([r,a],"prelu");let s=n.data.get(r.dataId).values,i=n.data.get(a.dataId).values,[o,l]=YR(r.shape,a.shape,s,i,r.dtype);return n.makeTensorInfo(l,r.dtype,o)}var JR={kernelName:Os,backendName:"cpu",kernelFunc:ww},bw=at(zs,e=>Math.max(0,e)),QR={kernelName:zs,backendName:"cpu",kernelFunc:bw},_w=at(Ls,e=>Math.min(Math.max(0,e),6)),eM={kernelName:Ls,backendName:"cpu",kernelFunc:_w};function Pm(e,t,n,r,a){if(n==="linear")return Pr({inputs:{x:t},backend:e});if(n==="relu")return bw({inputs:{x:t},backend:e});if(n==="elu")return gw({inputs:{x:t},backend:e});if(n==="relu6")return _w({inputs:{x:t},backend:e});if(n==="prelu")return ww({inputs:{x:t,alpha:r},backend:e});if(n==="leakyrelu")return xw({inputs:{x:t},backend:e,attrs:{alpha:a}});throw new Error(`Activation ${n} has not been implemented for the CPU backend.`)}function mt(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{shape:s}=r,i=v.sizeFromShape(a.shape),o=v.inferFromImplicitShape(s,i),l=v.sizeFromShape(o);v.assert(i===l,()=>`The new shape (${o}) has ${l} elements and the old shape (${a.shape}) has ${i} elements. The new shape and old shape must have the same number of elements.`),n.incRef(a.dataId);let c=n.data.get(a.dataId);if(c.complexTensorInfos!=null){let u=c.complexTensorInfos.real,h=c.complexTensorInfos.imag;u.shape=o,h.shape=o}return{dataId:a.dataId,shape:o,dtype:a.dtype}}var tM={kernelName:Do,backendName:"cpu",kernelFunc:mt};function vw(e){let{inputs:t,backend:n,attrs:r}=e,{a,b:s}=t,{transposeA:i,transposeB:o}=r;be([a,s],"matMul");let l=a.shape.length,c=s.shape.length,u=i?a.shape[l-2]:a.shape[l-1],h=o?s.shape[c-1]:s.shape[c-2],d=i?a.shape[l-1]:a.shape[l-2],p=o?s.shape[c-2]:s.shape[c-1],f=a.shape.slice(0,-2),m=s.shape.slice(0,-2),A=v.sizeFromShape(f),y=v.sizeFromShape(m),g=A===y||A===1||y===1;v.assert(l>=2&&c>=2&&g,()=>`Error in matMul: the input batch dimensions must either be the same or at least one input batch dimension must be 1. Got input batch dimensions of (${f}) and (${m}).`);let w=(A>y?a.shape.slice(0,-2):s.shape.slice(0,-2)).concat([d,p]);v.assert(u===h,()=>`Error in matMul: inner shapes (${u}) and (${h}) of Tensors with shapes ${a.shape} and ${s.shape} and transposeA=${i} and transposeB=${o} must match.`);let b=i?[A,u,d]:[A,d,u],_=o?[y,p,h]:[y,h,p],x=mt({inputs:{x:a},backend:n,attrs:{shape:b}}),N=mt({inputs:{x:s},backend:n,attrs:{shape:_}}),T=i?x.shape[1]:x.shape[2],C=i?x.shape[2]:x.shape[1],F=o?N.shape[1]:N.shape[2],O=Math.max(A,y),W=n.data.get(x.dataId).values,V=n.data.get(N.dataId).values,U=v.computeStrides(x.shape),j=v.computeStrides(N.shape),[X,G,ee]=i?[U[0],1,U[1]]:[U[0],U[1],1],[Y,ae,te]=o?[1,j[1],j[0]]:[j[1],1,j[0]],oe=C*F,Q=Le([O,C,F],x.dtype),he=Q.values,le=n.blockSize;for(let fe=0;feMath.acos(e)),iM={kernelName:Yi,backendName:"cpu",kernelFunc:sM},oM=at(Ji,e=>Math.acosh(e)),lM={kernelName:Ji,backendName:"cpu",kernelFunc:oM};function uM(e){let{inputs:t,backend:n}=e,r=t;be(t,"addN");let a=r.map(o=>n.data.get(o.dataId).values),s=Le(r[0].shape,r[0].dtype),i=s.values;for(let o=0;og&&(g=_,w=b)}p[A]=w}return c.forEach(A=>n.disposeIntermediateTensorInfo(A)),n.makeTensorInfo(u,"int32",p)}var AM={kernelName:os,backendName:"cpu",kernelFunc:mM};function yM(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{axis:s}=r;be(a,"argMin");let i=v.parseAxisParam(s,a.shape),o=R.getAxesPermutation(i,a.shape.length),l=a,c=[];o!=null&&(l=ir({inputs:{x:a},backend:n,attrs:{perm:o}}),c.push(l),i=R.getInnerMostAxes(i.length,l.shape.length)),i=[i[0]],R.assertAxesAreInnerMostDims("argMin",i,l.shape.length);let[u,h]=R.computeOutAndReduceShapes(l.shape,i),d=v.sizeFromShape(u),p=v.makeZerosTypedArray(d,"int32"),f=v.sizeFromShape(h),m=n.data.get(l.dataId).values;for(let A=0;An.disposeIntermediateTensorInfo(A)),n.makeTensorInfo(u,"int32",p)}var gM={kernelName:uu,backendName:"cpu",kernelFunc:yM},xM=at(Qi,e=>Math.asin(e)),wM={kernelName:Qi,backendName:"cpu",kernelFunc:xM},bM=at(eo,e=>Math.asinh(e)),_M={kernelName:eo,backendName:"cpu",kernelFunc:bM},vM=at(to,e=>Math.atan(e)),kM={kernelName:to,backendName:"cpu",kernelFunc:vM},IM=Et((e,t)=>Math.atan2(e,t)),NM=jt(ro,IM),SM={kernelName:ro,backendName:"cpu",kernelFunc:NM},TM=at(no,e=>Math.atanh(e)),CM={kernelName:no,backendName:"cpu",kernelFunc:TM};function Lm(e,t,n,r,a,s){let i=a.strideHeight,o=a.strideWidth,l=a.dilationHeight,c=a.dilationWidth,u=a.effectiveFilterHeight,h=a.effectiveFilterWidth,d=a.padInfo.top,p=a.padInfo.left,f=s==="max"?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY,m=Le(a.outShape,n),A=m.values,y=a.outShape[1]*a.outShape[2]*a.outShape[3],g=a.outShape[2]*a.outShape[3],w=a.outShape[3];for(let b=0;bG?G=le:s==="avg"&&(ee+=le,Y++)}if(isNaN(G))break}let ae=W+V*w+N;A[ae]=s==="avg"?ee/Y:G}}}return m}function kw(e,t,n,r,a=!1,s=!1){let i=Le(r.outShape,"int32"),o=r.strideHeight,l=r.strideWidth,c=r.dilationHeight,u=r.dilationWidth,h=r.effectiveFilterHeight,d=r.effectiveFilterWidth,p=r.padInfo.top,f=r.padInfo.left,m=Le(t,n,e);for(let A=0;AF&&(F=X,a?O=s?((A*r.inHeight+W)*r.inWidth+U)*r.inChannels+y:(W*r.inWidth+U)*r.inChannels+y:O=V*d+j)}}i.set(O,A,g,x,y)}}return i}function Iw(e,t,n,r,a,s){let i=a.strideDepth,o=a.strideHeight,l=a.strideWidth,c=a.dilationDepth,u=a.dilationHeight,h=a.dilationWidth,d=a.effectiveFilterDepth,p=a.effectiveFilterHeight,f=a.effectiveFilterWidth,m=a.padInfo.front,A=a.padInfo.top,y=a.padInfo.left,g=s==="max"?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY,w=Le(a.outShape,n),b=w.values,_=a.outShape[1]*a.outShape[2]*a.outShape[3]*a.outShape[4],x=a.outShape[2]*a.outShape[3]*a.outShape[4],N=a.outShape[3]*a.outShape[4],T=a.outShape[4];for(let C=0;Cve?ve=Be:s==="avg"&&(Se+=Be,Me++),isNaN(ve))break}if(isNaN(ve))break}if(isNaN(ve))break}let De=pe+W;b[De]=s==="avg"?Se/Me:ve}}}}return w}function EM(e,t){let n=Le(t.outShape,"int32"),r=t.strideDepth,a=t.strideHeight,s=t.strideWidth,i=t.dilationDepth,o=t.dilationHeight,l=t.dilationWidth,c=t.effectiveFilterDepth,u=t.effectiveFilterHeight,h=t.effectiveFilterWidth,d=t.padInfo.front,p=t.padInfo.top,f=t.padInfo.left;for(let m=0;m=V&&(V=te,U=X*u*h+ee*u+ae)}}}n.set(U,m,y,_,C,A)}}}return n}function RM(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t;be(a,"avgPool");let{filterSize:s,strides:i,pad:o,dimRoundingMode:l}=r,c=1;v.assert(R.eitherStridesOrDilationsAreOne(i,c),()=>`Error in avgPool: Either strides or dilations must be 1. Got strides ${i} and dilations '${c}'`);let u=R.computePool2DInfo(a.shape,s,i,c,o,l),h;if(u.filterWidth===1&&u.filterHeight===1&&v.arraysEqual(u.inShape,u.outShape))h=Pr({inputs:{x:a},backend:n});else{let d=n.data.get(a.dataId).values,p=v.computeStrides(a.shape),f=Lm(d,a.shape,a.dtype,p,u,"avg");h=n.makeTensorInfo(u.outShape,a.dtype,f.values)}return h}var MM={kernelName:ls,backendName:"cpu",kernelFunc:RM};function FM(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{filterSize:s,strides:i,pad:o,dimRoundingMode:l,dataFormat:c}=r;be(a,"avgPool3d");let u=R.computePool3DInfo(a.shape,s,i,1,o,l,c),h=n.data.get(a.dataId).values,d=Iw(h,a.shape,a.dtype,v.computeStrides(a.shape),u,"avg");return n.makeTensorInfo(d.shape,"float32",d.values)}var $M={kernelName:cu,backendName:"cpu",kernelFunc:FM};function DM(e){let{inputs:t,backend:n,attrs:r}=e,{dy:a,input:s}=t,{filterSize:i,strides:o,pad:l,dimRoundingMode:c}=r;be([a,s],"avgPool3DGrad");let u=R.computePool3DInfo(s.shape,i,o,1,l,c),h=u.strideDepth,d=u.strideHeight,p=u.strideWidth,f=u.filterDepth,m=u.filterHeight,A=u.filterWidth,y=u.dilationDepth,g=u.dilationHeight,w=u.dilationWidth,b=u.effectiveFilterDepth,_=u.effectiveFilterHeight,x=u.effectiveFilterWidth,N=b-1-u.padInfo.front,T=x-1-u.padInfo.left,C=_-1-u.padInfo.top,F=Le(s.shape,"float32"),O=1/(f*m*A),W=n.bufferSync(a);for(let V=0;V=u.outDepth||Math.floor(Q)!==Q))for(let he=0;he<_;he+=g){let le=(Y+he)/d;if(!(le<0||le>=u.outHeight||Math.floor(le)!==le))for(let fe=0;fe=u.outWidth||Math.floor(pe)!==pe||(te+=W.get(V,Q,le,pe,U))}}}F.set(te*O,V,j,X,G,U)}return n.makeTensorInfo(F.shape,F.dtype,F.values)}var OM={kernelName:Ih,backendName:"cpu",kernelFunc:DM};function zM(e){let{inputs:t,backend:n,attrs:r}=e,{dy:a,input:s}=t,i=s;be([a,s],"avgPoolGrad");let{filterSize:o,strides:l,pad:c}=r,u=R.computePool2DInfo(i.shape,o,l,1,c),h=u.strideHeight,d=u.strideWidth,p=u.filterHeight,f=u.filterWidth,m=u.dilationHeight,A=u.dilationWidth,y=u.effectiveFilterHeight,g=u.effectiveFilterWidth,w=g-1-u.padInfo.left,b=y-1-u.padInfo.top,_=Le(i.shape,"float32"),x=1/(p*f),N=n.data.get(a.dataId).values,T=Le(a.shape,"float32",N);for(let C=0;C=u.outHeight||Math.floor(G)!==G))for(let ee=0;ee=u.outWidth||Math.floor(Y)!==Y||(j+=T.get(C,G,Y,F))}}_.set(j*x,C,O,W,F)}return n.makeTensorInfo(_.shape,_.dtype,_.values)}var PM={kernelName:kh,backendName:"cpu",kernelFunc:zM};function LM(e){let{inputs:t,backend:n,attrs:r}=e,{x:a,scale:s,offset:i,mean:o,variance:l}=t;v.assert(o.shape.length===l.shape.length,()=>"Batch normalization gradient requires mean and variance to have equal ranks."),v.assert(i==null||o.shape.length===i.shape.length,()=>"Batch normalization gradient requires mean and offset to have equal ranks."),v.assert(s==null||o.shape.length===s.shape.length,()=>"Batch normalization gradient requires mean and scale to have equal ranks."),be([a,o,l,s,i],"batchNorm");let{varianceEpsilon:c}=r;c==null&&(c=.001);let u=n.data.get(a.dataId).values,h=n.data.get(o.dataId).values,d=n.data.get(l.dataId).values,p=s?n.data.get(s.dataId).values:new Float32Array([1]),f=i?n.data.get(i.dataId).values:new Float32Array([0]),m=new Float32Array(u.length),A=f.length,y=p.length,g=d.length,w=h.length,b=0,_=0,x=0,N=0;for(let T=0;T=A&&(b=0),_>=w&&(_=0),x>=y&&(x=0),N>=g&&(N=0);return n.makeTensorInfo(a.shape,a.dtype,m)}var WM={kernelName:bs,backendName:"cpu",kernelFunc:LM};function BM(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{blockShape:s,crops:i}=r;be([a],"batchToSpaceND");let o=s.reduce((y,g)=>y*g),l=R.getReshaped(a.shape,s,o),c=R.getPermuted(l.length,s.length),u=R.getReshapedPermuted(a.shape,s,o),h=R.getSliceBeginCoords(i,s.length),d=R.getSliceSize(u,i,s.length),p=mt({inputs:{x:a},backend:n,attrs:{shape:l}}),f=ir({inputs:{x:p},backend:n,attrs:{perm:c}}),m=mt({inputs:{x:f},backend:n,attrs:{shape:u}}),A=mi({inputs:{x:m},backend:n,attrs:{begin:h,size:d}});return n.disposeIntermediateTensorInfo(p),n.disposeIntermediateTensorInfo(f),n.disposeIntermediateTensorInfo(m),A}var VM={kernelName:hu,backendName:"cpu",kernelFunc:BM};function UM(e){let{inputs:t,backend:n,attrs:r}=e,{x:a,weights:s}=t,{size:i}=r,o=n.data.get(a.dataId).values,l=n.data.get(s.dataId).values,c=Em(o,l,s.dtype,s.shape,i);return n.makeTensorInfo([i],s.dtype,c)}var jM={kernelName:Nh,backendName:"cpu",kernelFunc:UM},HM=at(ka,(e,t)=>{let n=t;return e>n.clipValueMax?n.clipValueMax:e{let{x:t}=e.inputs,n=e.backend,r=new Float32Array(v.sizeFromShape(t.shape)),a=n.data.get(t.dataId),s=a.complexTensorInfos.real,i=a.complexTensorInfos.imag,o=n.data.get(s.dataId).values,l=n.data.get(i.dataId).values;for(let c=0;cm.shape),s);if(v.sizeFromShape(i)===0)return n.makeTensorInfo(i,t[0].dtype,[]);let o=t.filter(m=>v.sizeFromShape(m.shape)>0);if(o.length===1)return Pr({inputs:{x:o[0]},backend:n});let l=o.map(m=>m.shape);if(R.assertParamsConsistent(l,s),o[0].dtype==="complex64"){let m=o.map(b=>fi({inputs:{input:b},backend:n})),A=o.map(b=>bl({inputs:{input:b},backend:n})),y=_l({inputs:m,backend:n,attrs:{axis:s}}),g=_l({inputs:A,backend:n,attrs:{axis:s}}),w=Fn({inputs:{real:y,imag:g},backend:n});return m.forEach(b=>n.disposeIntermediateTensorInfo(b)),A.forEach(b=>n.disposeIntermediateTensorInfo(b)),n.disposeIntermediateTensorInfo(y),n.disposeIntermediateTensorInfo(g),w}let c=o.map(m=>{let A=v.sizeFromShape(m.shape.slice(s));return mt({inputs:{x:m},backend:n,attrs:{shape:[-1,A]}})}),u=c.map(m=>({vals:n.data.get(m.dataId).values,shape:m.shape}));i=R.computeOutShape(c.map(m=>m.shape),1);let h=c[0].shape[0]===1,d=Rm(u,i,t[0].dtype,h),p=R.computeOutShape(o.map(m=>m.shape),s),f=n.makeTensorInfo(p,t[0].dtype,d);return c.forEach(m=>n.disposeIntermediateTensorInfo(m)),f}var ZM={kernelName:ao,backendName:"cpu",kernelFunc:_l};function Nw(e){let{inputs:t,backend:n,attrs:r}=e,{x:a,filter:s}=t,{strides:i,pad:o,dataFormat:l,dilations:c,dimRoundingMode:u}=r;be([a,s],"conv2d");let h=R.convertConv2DDataFormat(l),d=R.computeConv2DInfo(a.shape,s.shape,i,c,o,u,!1,h),p=d.filterHeight,f=d.filterWidth,m=d.dilationHeight,A=d.dilationWidth,y=d.padInfo.left,g=d.padInfo.top,w=d.dataFormat==="channelsLast",b=new $t(d.outShape,a.dtype),_=v.computeStrides(a.shape),x=v.computeStrides(s.shape),N=_[0],T=w?_[1]:_[2],C=w?_[2]:1,F=w?1:_[1],O=b.strides[0],W=w?b.strides[1]:b.strides[2],V=w?b.strides[2]:1,U=w?1:b.strides[1],j=n.data.get(a.dataId).values,X=n.data.get(s.dataId).values,G=b.values;for(let ee=0;ee=d.inHeight)continue;let fe=he*x[0],pe=Y+le*T;for(let ve=0;ve=d.inWidth)continue;let Qe=fe+De*x[1],et=pe+Fe*C,st=Qe;for(let Ke=0;Ke=c.inDepth)continue;let ee=X*C[0],Y=O+G*T[1];for(let ae=0;ae=c.inHeight)continue;let le=ee+Q*C[1],fe=Y+he*T[2];for(let pe=0;pe=c.inWidth)continue;let Fe=le+Me*C[2],Qe=fe+De*c.inChannels,et=Fe;for(let st=0;stMath.cos(e)),uF={kernelName:fs,backendName:"cpu",kernelFunc:lF},cF=at(so,e=>Math.cosh(e)),hF={kernelName:so,backendName:"cpu",kernelFunc:cF};function dF(e){let{inputs:t,backend:n,attrs:r}=e,{image:a,boxes:s,boxInd:i}=t,{cropSize:o,method:l,extrapolationValue:c}=r,[u,h,d,p]=a.shape,f=s.shape[0],[m,A]=o,y=Le([f,m,A,p],"float32"),g=n.data.get(s.dataId).values,w=n.data.get(i.dataId).values,b=n.data.get(a.dataId).values,_=v.computeStrides(a.shape),x=v.computeStrides(y.shape);for(let N=0;N=u)continue;let U=m>1?(O-C)*(h-1)/(m-1):0,j=A>1?(W-F)*(d-1)/(A-1):0;for(let X=0;X1?C*(h-1)+X*U:.5*(C+O)*(h-1);if(G<0||G>h-1){for(let ee=0;ee1?F*(d-1)+te*j:.5*(F+W)*(d-1);if(oe<0||oe>d-1){for(let fe=0;fe1?F*(d-1)+ee*j:.5*(F+W)*(d-1);if(Y<0||Y>d-1){for(let oe=0;oey+f-g-1:(y,g)=>y+g;for(let y=0;y`Only NHWC dataFormat supported on CPU for depthToSpace. Got ${i}`),v.assert(s>1,()=>`blockSize should be > 1 for depthToSpace, but was: ${s}`);let o=a.shape[0],l=a.shape[1],c=a.shape[2],u=a.shape[3],h=l*s,d=c*s,p=u/(s*s),f=n.data.get(a.dataId).values,m=new Float32Array(o*h*d*p),A=0;for(let y=0;y`Error in depthwiseConv2d: Either strides or dilations must be 1. Got strides ${i} and dilations '${d}'`);let p=R.computeConv2DInfo(a.shape,s.shape,i,d,o,c,!0),{filterHeight:f,filterWidth:m,dilationHeight:A,dilationWidth:y,padInfo:g}=p,w=g.left,b=g.top,_=p.outChannels/p.inChannels,x=new $t(p.outShape,a.dtype),N=n.data.get(a.dataId).values,T=n.data.get(s.dataId).values,C=x.values;for(let F=0;F=p.inHeight)continue;let ee=X*h[0],Y=O+G*u[1];for(let ae=0;ae=p.inWidth)continue;let le=ee+Q*h[1],fe=Y+he*p.inChannels,pe=te,ve=le;for(let Se=0;Se{let{x:r,filter:a}=e,{strides:s,pad:i,dilations:o}=n,l=t,c=l.data.get(r.dataId).values,u=r.shape.length,h=l.data.get(a.dataId).values,d=a.shape.length,{batchSize:p,inHeight:f,inWidth:m,inChannels:A,outHeight:y,outWidth:g,padInfo:w,strideHeight:b,strideWidth:_,filterHeight:x,filterWidth:N,dilationHeight:T,dilationWidth:C,outShape:F}=R.computeDilation2DInfo(r.shape,a.shape,s,i,"NHWC",o),O=v.sizeFromShape(F),W=F.length,V=v.getArrayFromDType(r.dtype,O);for(let U=0;U=0&&Q=0&&leae&&(ae=ve)}}}let te=v.locToIndex([U,j,G,Y],W,v.computeStrides(F));V[te]=ae}}}return{dataId:l.write(v.toTypedArray(V,r.dtype),F,r.dtype),shape:F,dtype:r.dtype}}},TF={kernelName:Oh,backendName:"cpu",kernelFunc:({inputs:e,backend:t,attrs:n})=>{let{x:r,filter:a,dy:s}=e,{strides:i,pad:o,dilations:l}=n,c=t,u=v.toNestedArray(r.shape,c.data.get(r.dataId).values),h=v.toNestedArray(a.shape,c.data.get(a.dataId).values),{batchSize:d,inHeight:p,inWidth:f,inChannels:m,outHeight:A,outWidth:y,padInfo:g,strideHeight:w,strideWidth:b,filterHeight:_,filterWidth:x,dilationHeight:N,dilationWidth:T,outShape:C}=R.computeDilation2DInfo(r.shape,a.shape,i,o,"NHWC",l);v.assert(s.rank===C.length,()=>`Error in ${Oh}, dy must have the same rank as output ${C.length}, but got ${s.rank}`);let F=v.toNestedArray(C,c.data.get(s.dataId).values),O=v.makeZerosNestedTypedArray(a.shape,a.dtype);for(let W=0;W=0&&oe=0&&heee&&(ee=le,Y=te,ae=Q)}}}O[Y][ae][G]+=F[W][V][j][G]}}}return{dataId:c.write(v.toTypedArray(O,r.dtype),a.shape,a.dtype),shape:a.shape,dtype:a.dtype}}},CF={kernelName:Dh,backendName:"cpu",kernelFunc:({inputs:e,backend:t,attrs:n})=>{let{x:r,filter:a,dy:s}=e,{strides:i,pad:o,dilations:l}=n,c=t,u=v.toNestedArray(r.shape,c.data.get(r.dataId).values),h=v.toNestedArray(a.shape,c.data.get(a.dataId).values),{batchSize:d,inHeight:p,inWidth:f,inChannels:m,outHeight:A,outWidth:y,padInfo:g,strideHeight:w,strideWidth:b,filterHeight:_,filterWidth:x,dilationHeight:N,dilationWidth:T,outShape:C}=R.computeDilation2DInfo(r.shape,a.shape,i,o,"NHWC",l);v.assert(s.rank===C.length,()=>`Error in ${Dh}, dy must have the same rank as output ${C.length}, but got ${s.rank}`);let F=v.toNestedArray(C,c.data.get(s.dataId).values),O=v.makeZerosNestedTypedArray(r.shape,r.dtype);for(let W=0;W=0&&oe=0&&heee&&(ee=le,Y=oe,ae=he)}}}O[W][Y][ae][G]+=F[W][V][j][G]}}}return{dataId:c.write(v.toTypedArray(O,r.dtype),r.shape,r.dtype),shape:r.shape,dtype:r.dtype}}};function EF(e){let{inputs:t,backend:n}=e,{dy:r,y:a}=t;be([r,a],"eluGrad");let s=new Float32Array(v.sizeFromShape(a.shape)),i=n.data.get(a.dataId).values,o=n.data.get(r.dataId).values;for(let l=0;l=1?s[l]=o[l]:s[l]=o[l]*(c+1)}return n.makeTensorInfo(a.shape,"float32",s)}var RF={kernelName:zh,backendName:"cpu",kernelFunc:EF},MF=Et((e,t)=>e===t?1:0),Tw=jt(co,MF,null,"bool"),FF={kernelName:co,backendName:"cpu",kernelFunc:Tw},$F=R.ERF_P,DF=R.ERF_A1,OF=R.ERF_A2,zF=R.ERF_A3,PF=R.ERF_A4,LF=R.ERF_A5,WF=at(uo,e=>{let t=Math.sign(e),n=Math.abs(e),r=1/(1+$F*n);return t*(1-((((LF*r+PF)*r+zF)*r+OF)*r+DF)*r*Math.exp(-n*n))}),BF={kernelName:uo,backendName:"cpu",kernelFunc:WF};function Jd(e){let{inputs:t,backend:n,attrs:r}=e,{input:a}=t,{dim:s}=r,i=a.shape.length,o=a.shape.slice(),l=s;return s<0&&(v.assert(-(i+1)<=s,()=>`Axis must be in the interval [${-(i+1)}, ${i}]`),l=i+s+1),o.splice(l,0,1),mt({inputs:{x:a},backend:n,attrs:{shape:o}})}var VF={kernelName:ho,backendName:"cpu",kernelFunc:Jd},UF=Et((e,t)=>e/t),Wm=jt(ys,UF),Bm={kernelName:ys,backendName:"cpu",kernelFunc:Wm};function Cw(e,t,n){let r=e.shape,a=r[0],s=r[1],i=n.data.get(e.dataId),o=i.complexTensorInfos.real,l=i.complexTensorInfos.imag,c=[a,s],u=v.sizeFromShape(c),h=v.getTypedArrayFromDType("float32",u),d=v.getTypedArrayFromDType("float32",u);for(let A=0;A{let{image:r}=e,a=n,s=v.getTypedArrayFromDType(r.dtype,v.sizeFromShape(r.shape)),[i,o,l,c]=r.shape,u=a.data.get(r.dataId).values;for(let h=0;h=0&&wMath.floor(e/t)),QF=jt(ws,JF,null,"int32"),e$={kernelName:ws,backendName:"cpu",kernelFunc:QF};function t$(e){let{inputs:t,backend:n,attrs:r}=e,{x:a,filter:s,bias:i,preluActivationWeights:o}=t,{strides:l,pad:c,dataFormat:u,dilations:h,dimRoundingMode:d,activation:p,leakyreluAlpha:f}=r,m=Nw({inputs:{x:a,filter:s},backend:n,attrs:{strides:l,pad:c,dataFormat:u,dilations:h,dimRoundingMode:d}});if(i){let A=m;m=nc({inputs:{a:m,b:i},backend:n}),n.disposeIntermediateTensorInfo(A)}if(p){let A=m;m=Pm(n,m,p,o,f),n.disposeIntermediateTensorInfo(A)}return m}var n$={kernelName:Qs,backendName:"cpu",kernelFunc:t$};function r$(e){let{inputs:t,backend:n,attrs:r}=e,{x:a,filter:s,bias:i,preluActivationWeights:o}=t,{strides:l,pad:c,dataFormat:u,dilations:h,dimRoundingMode:d,activation:p,leakyreluAlpha:f}=r,m=Sw({inputs:{x:a,filter:s},backend:n,attrs:{strides:l,pad:c,dataFormat:u,dilations:h,dimRoundingMode:d}});if(i){let A=m;m=nc({inputs:{a:m,b:i},backend:n}),n.disposeIntermediateTensorInfo(A)}if(p){let A=m;m=Pm(n,m,p,o,f),n.disposeIntermediateTensorInfo(A)}return m}var a$={kernelName:ei,backendName:"cpu",kernelFunc:r$};function s$(e){let{inputs:t,backend:n}=e,{params:r,indices:a}=t,s=v.sizeFromShape(r.shape),i=a.shape,o=i[i.length-1],[l,c,u,h]=R.prepareAndValidate(r,a);if(c===0)return n.makeTensorInfo(l,r.dtype,[]);let d=Le([c,u],r.dtype),p=n.data.get(a.dataId).values,f=n.data.get(r.dataId).values;for(let m=0;m=s/u)throw new Error(`Invalid indices: ${A} does not index into ${r.shape}`);for(let g=0;ge>=t?1:0),c$=jt(_s,u$,null,"bool"),h$={kernelName:_s,backendName:"cpu",kernelFunc:c$};function d$(e){let{inputs:t,backend:n}=e,{input:r}=t,a=v.sizeFromShape(r.shape),s=r.shape[r.shape.length-1],i=a/s,o=mt({inputs:{x:r},backend:n,attrs:{shape:[i,s]}}),l=Cw(o,!0,n),c=mt({inputs:{x:l},backend:n,attrs:{shape:r.shape}});return n.disposeIntermediateTensorInfo(o),n.disposeIntermediateTensorInfo(l),c}var p$={kernelName:Lh,backendName:"cpu",kernelFunc:d$},f$=at(go,e=>Number.isFinite(e)?1:0,"bool"),m$={kernelName:go,backendName:"cpu",kernelFunc:f$},A$=at(xo,e=>Math.abs(e)===Infinity?1:0,"bool"),y$={kernelName:xo,backendName:"cpu",kernelFunc:A$},g$=at(wo,e=>Number.isNaN(e)?1:0,"bool"),x$={kernelName:wo,backendName:"cpu",kernelFunc:g$},w$=Et((e,t)=>e<=t?1:0),b$=jt(_o,w$,null,"bool"),_$={kernelName:_o,backendName:"cpu",kernelFunc:b$};function v$(e){let{backend:t,attrs:n}=e,{start:r,stop:a,num:s}=n,i=tw(r,a,s);return t.makeTensorInfo([i.length],"float32",i)}var k$={kernelName:Bh,backendName:"cpu",kernelFunc:v$},I$=at(vo,e=>Math.log1p(e)),N$={kernelName:vo,backendName:"cpu",kernelFunc:I$},S$=Et((e,t)=>e&&t),T$=jt(ko,S$,null,"bool"),C$={kernelName:ko,backendName:"cpu",kernelFunc:T$},E$=at(Au,e=>e?0:1,"bool"),R$={kernelName:Au,backendName:"cpu",kernelFunc:E$},M$=Et((e,t)=>e||t),F$=jt(yu,M$,null,"bool"),$$={kernelName:yu,backendName:"cpu",kernelFunc:F$};function D$(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{depthRadius:s,bias:i,alpha:o,beta:l}=r;be(a,"LRN");let c=a.shape[3],u=c-1,h=n.data.get(a.dataId).values,d=v.sizeFromShape(a.shape),p=new Float32Array(d);function f(m){let A=m%c,y=m-A+Math.max(0,A-s),g=m-A+Math.min(A+s,u),w=0;for(;y<=g;y++){let b=h[y];w+=b*b}return w}for(let m=0;m`Error in maxPool: Either strides or dilations must be 1. Got strides ${i} and dilations '${c}'`);let u=R.computePool2DInfo(a.shape,s,i,c,o,l),h;if(u.filterWidth===1&&u.filterHeight===1&&v.arraysEqual(u.inShape,u.outShape))h=Pr({inputs:{x:a},backend:n});else{let d=n.data.get(a.dataId).values,p=v.computeStrides(a.shape),f=Lm(d,a.shape,a.dtype,p,u,"max");h=n.makeTensorInfo(u.outShape,a.dtype,f.values)}return h}var B$={kernelName:Ts,backendName:"cpu",kernelFunc:W$};function V$(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{filterSize:s,strides:i,pad:o,dimRoundingMode:l,dataFormat:c}=r;be(a,"maxPool3d");let u=R.computePool3DInfo(a.shape,s,i,1,o,l,c),h=n.data.get(a.dataId).values,d=Iw(h,a.shape,a.dtype,v.computeStrides(a.shape),u,"max");return n.makeTensorInfo(d.shape,"float32",d.values)}var U$={kernelName:xu,backendName:"cpu",kernelFunc:V$};function j$(e){let{inputs:t,backend:n,attrs:r}=e,{dy:a,input:s}=t,{filterSize:i,strides:o,pad:l,dimRoundingMode:c}=r;be([a,s],"maxPool3DGrad");let u=R.computePool3DInfo(s.shape,i,o,1,l,c),h=n.bufferSync(s),d=EM(h,u),p=u.strideDepth,f=u.strideHeight,m=u.strideWidth,A=u.dilationDepth,y=u.dilationHeight,g=u.dilationWidth,w=u.effectiveFilterDepth,b=u.effectiveFilterHeight,_=u.effectiveFilterWidth,x=w-1-u.padInfo.front,N=_-1-u.padInfo.left,T=b-1-u.padInfo.top,C=Le(s.shape,"float32"),F=n.bufferSync(a);for(let O=0;O=u.outDepth||Math.floor(te)!==te))for(let oe=0;oe=u.outHeight||Math.floor(Q)!==Q))for(let he=0;he<_;he+=g){let le=(ee+he)/m;if(le<0||le>=u.outWidth||Math.floor(le)!==le)continue;let fe=w*b*_-1-d.get(O,te,Q,le,W),pe=ae*b*_+oe*_+he,ve=fe===pe?1:0;ve!==0&&(Y+=F.get(O,te,Q,le,W)*ve)}}}C.set(Y,O,V,U,j,W)}return n.makeTensorInfo(C.shape,C.dtype,C.values)}var H$={kernelName:jh,backendName:"cpu",kernelFunc:j$};function G$(e){let{inputs:t,backend:n,attrs:r}=e,{dy:a,input:s,output:i}=t,o=s;be([s,i],"maxPoolGrad");let{filterSize:l,strides:c,pad:u,dimRoundingMode:h}=r,d=R.computePool2DInfo(o.shape,l,c,1,u,h),p=n.data.get(o.dataId).values,f=Le(d.outShape,o.dtype,kw(p,o.shape,o.dtype,d).values),m=d.strideHeight,A=d.strideWidth,y=d.dilationHeight,g=d.dilationWidth,w=d.effectiveFilterHeight,b=d.effectiveFilterWidth,_=b-1-d.padInfo.left,x=w-1-d.padInfo.top,N=Le(o.shape,"float32"),T=n.data.get(a.dataId).values,C=Le(a.shape,"float32",T);for(let F=0;F=d.outHeight||Math.floor(ee)!==ee))for(let Y=0;Y=d.outWidth||Math.floor(ae)!==ae)continue;let te=w*b-1-f.get(F,ee,ae,O),oe=G*b+Y,Q=te===oe?1:0;Q!==0&&(X+=C.get(F,ee,ae,O)*Q)}}N.set(X,F,W,V,O)}return n.makeTensorInfo(N.shape,N.dtype,N.values)}var q$={kernelName:Uh,backendName:"cpu",kernelFunc:G$};function X$(e,t,n,r,a){let s=v.computeStrides(t),i=Lm(e,t,n,s,a,"max"),o=kw(e,t,n,a,!0,r);return[i.values,o.values]}var K$={kernelName:Hh,backendName:"cpu",kernelFunc:({inputs:e,attrs:t,backend:n})=>{let{x:r}=e,{filterSize:a,strides:s,pad:i,includeBatchInIndex:o}=t,l=n;be(r,"MaxPoolWithArgmax");let c=l.data.get(r.dataId).values,u=R.computePool2DInfo(r.shape,a,s,[1,1],i),[h,d]=X$(c,r.shape,r.dtype,o,u),p=l.write(h,u.outShape,r.dtype),f=l.write(d,u.outShape,r.dtype);return[{dataId:p,shape:u.outShape,dtype:r.dtype},{dataId:f,shape:u.outShape,dtype:"int32"}]}};function Qd(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{axis:s,keepDims:i}=r;be(a,"sum");let o;a.dtype==="bool"?o=Pa({inputs:{x:a},backend:n,attrs:{dtype:"int32"}}):o=Pr({inputs:{x:a},backend:n});let l=o.shape.length,c=v.parseAxisParam(s,o.shape),u=R.getAxesPermutation(c,l),h=c,d=o;u!=null&&(d=ir({inputs:{x:o},backend:n,attrs:{perm:u}}),h=R.getInnerMostAxes(h.length,l)),R.assertAxesAreInnerMostDims("sum",h,d.shape.length);let[p,f]=R.computeOutAndReduceShapes(d.shape,h),m=R.upcastType(d.dtype,"int32"),A=Yd(n,p,m),y=v.sizeFromShape(f),g=n.data.get(A.dataId).values,w=n.data.get(d.dataId).values;for(let b=0;bn.disposeIntermediateTensorInfo(m)),f}var J$={kernelName:Cs,backendName:"cpu",kernelFunc:Y$};function Q$(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{axis:s,keepDims:i}=r;be(a,"min");let o=v.parseAxisParam(s,a.shape),l=o,c=R.getAxesPermutation(l,a.shape.length),u=a;c!=null&&(u=ir({inputs:{x:a},backend:n,attrs:{perm:c}}),l=R.getInnerMostAxes(l.length,a.shape.length)),R.assertAxesAreInnerMostDims("min",l,u.shape.length);let[h,d]=R.computeOutAndReduceShapes(u.shape,l),p=v.sizeFromShape(d),f=v.makeZerosTypedArray(v.sizeFromShape(h),u.dtype),m=n.data.get(u.dataId).values;for(let y=0;yg[0]+a.shape[w]+g[1]),l=s.map(g=>g[0]),c=s.map((g,w)=>g[0]+a.shape[w]),u=i==="reflect"?0:1,h=n.data.get(a.dataId).values,d=a.shape.length,p=v.computeStrides(a.shape),f=v.sizeFromShape(o),m=o.length,A=v.computeStrides(o),y=v.getTypedArrayFromDType(a.dtype,f);for(let g=0;g=c[_]&&(w[_]=(c[_]-1)*2-w[_]+u);w=w.map((_,x)=>_-l[x]);let b=v.locToIndex(w,d,p);y[g]=h[b]}return{dataId:n.write(y,o,a.dtype),shape:o,dtype:a.dtype}}var nD={kernelName:wu,backendName:"cpu",kernelFunc:tD},rD=Et((e,t)=>{let n=e%t;return e<0&&t<0||e>=0&&t>=0?n:(n+t)%t}),aD=jt(Io,rD),sD={kernelName:Io,backendName:"cpu",kernelFunc:aD},iD=qi(Wg());function Rw(e){let{inputs:t,backend:n,attrs:r}=e,{logits:a}=t,{dim:s}=r,i=a.shape.length,o=s;if(o===-1&&(o=i-1),o!==i-1)throw Error(`Softmax along a non-last dimension is not yet supported. Logits was rank ${i} and dim was ${o}`);let l=v.parseAxisParam([o],a.shape),c=Ew({inputs:{x:a},backend:n,attrs:{reductionIndices:l,keepDims:!1}}),u=R.expandShapeToKeepDim(c.shape,l),h=mt({inputs:{x:c},backend:n,attrs:{shape:u}}),d=zm({inputs:{a,b:h},backend:n}),p=Aw({inputs:{x:d},backend:n}),f=Qd({inputs:{x:p},backend:n,attrs:{axis:l,keepDims:!1}}),m=mt({inputs:{x:f},backend:n,attrs:{shape:u}}),A=Wm({inputs:{a:p,b:m},backend:n});return n.disposeIntermediateTensorInfo(c),n.disposeIntermediateTensorInfo(h),n.disposeIntermediateTensorInfo(d),n.disposeIntermediateTensorInfo(p),n.disposeIntermediateTensorInfo(f),n.disposeIntermediateTensorInfo(m),A}var oD={kernelName:qs,backendName:"cpu",kernelFunc:Rw};function lD(e){let{inputs:t,backend:n,attrs:r}=e,{logits:a}=t,{numSamples:s,seed:i,normalized:o}=r;be(a,"multinomial");let l=o?a:Rw({inputs:{logits:a},backend:n,attrs:{dim:-1}}),c=l.shape[0],u=l.shape[1],h=n.data.get(l.dataId).values,d=[c,s],p=v.makeZerosTypedArray(v.sizeFromShape(d),"int32");for(let f=0;f=0&&u[h]{v.assertShapesMatch(s,u.shape,"All tensors passed to stack must have matching shapes"),v.assert(i===u.dtype,()=>"All tensors passed to stack must have matching dtypes")});let o=[],l=t.map(u=>{let h=Jd({inputs:{input:u},backend:n,attrs:{dim:a}});return o.push(h),h}),c=_l({inputs:l,backend:n,attrs:{axis:a}});return o.forEach(u=>n.disposeIntermediateTensorInfo(u)),c}var vD={kernelName:Mo,backendName:"cpu",kernelFunc:Fw};function kD(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{paddings:s,constantValue:i}=r;be(a,"pad");let o=s.map((y,g)=>y[0]+a.shape[g]+y[1]),l=s.map(y=>y[0]),c=n.data.get(a.dataId).values,u=v.sizeFromShape(a.shape),h=a.shape.length,d=v.computeStrides(a.shape),p=v.sizeFromShape(o),f=o.length,m=v.computeStrides(o),A=v.getTypedArrayFromDType(a.dtype,p);i!==0&&A.fill(i);for(let y=0;yb+l[_]),w=v.locToIndex(g,f,m);A[w]=c[y]}return{dataId:n.write(A,o,a.dtype),shape:o,dtype:a.dtype}}var $w={kernelName:$s,backendName:"cpu",kernelFunc:kD},ID=Et((e,t)=>Math.pow(e,t)),ND=jt(Ds,ID),SD={kernelName:Ds,backendName:"cpu",kernelFunc:ND};function TD(e){let{backend:t,attrs:n}=e,{start:r,stop:a,dtype:s,step:i}=n,o=$m(r,a,i,s);return t.makeTensorInfo([o.length],s,o)}var CD={kernelName:bu,backendName:"cpu",kernelFunc:TD},ED=at($o,e=>1/e),RD={kernelName:$o,backendName:"cpu",kernelFunc:ED};function MD(e){let{inputs:t,backend:n,attrs:r}=e,{images:a}=t,{alignCorners:s,halfPixelCenters:i,size:o}=r;be(a,"resizeBilinear");let l=v.computeStrides(a.shape),[c,u]=o,[h,d,p,f]=a.shape,m=n.data.get(a.dataId).values,A=new Float32Array(v.sizeFromShape([h,c,u,f])),y=[s&&c>1?d-1:d,s&&u>1?p-1:p],g=[s&&c>1?c-1:c,s&&u>1?u-1:u],w=0,b=y[0]/g[0],_=y[1]/g[1];for(let x=0;x1?c-1:c,i&&p>1?u-1:u],A=[i&&d>1?d-1:d,i&&p>1?p-1:p],y=m[0]/A[0],g=m[1]/A[1],w=n.data.get(s.dataId).values,b=0;for(let _=0;_1?d-1:d,s&&u>1?p-1:p],g=[s&&c>1?c-1:c,s&&u>1?u-1:u],w=y[0]/g[0],b=y[1]/g[1],_=0;for(let x=0;x1?u-1:u,i&&f>1?h-1:h],g=[i&&p>1?p-1:p,i&&f>1?f-1:f],w=y[0]/g[0],b=y[1]/g[1],_=1/w,x=1/b,N=Math.ceil(_)*2+2,T=Math.ceil(x)*2+2;for(let C=0;C=p)continue;let Q=F+oe*l[1],he=oe*w,le=Math.min(u-1,i?Math.round(he):Math.floor(he));if(O===le)for(let fe=0;fe=f)continue;let ve=Q+pe*l[2],Se=pe*b,Me=Math.min(h-1,i?Math.round(Se):Math.floor(Se));j===Me&&(ae+=A[ve+Y])}}m[X+Y]=ae}}}}return n.makeTensorInfo(a.shape,a.dtype,m)}var LD={kernelName:Xh,backendName:"cpu",kernelFunc:PD};function WD(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{dims:s}=r;be(a,"reverse");let i=a.shape.length,o=v.parseAxisParam(s,a.shape);if(i===0)return Pr({inputs:{x:a},backend:n});let l=new $t(a.shape,a.dtype),c=n.bufferSync(a);for(let u=0;ud[p]=a.shape[p]-1-d[p]),l.set(c.get(...d),...h)}return n.makeTensorInfo(l.shape,l.dtype,l.values)}var BD={kernelName:Ws,backendName:"cpu",kernelFunc:WD},VD={kernelName:Ko,backendName:"cpu",kernelFunc:({inputs:e,attrs:t,backend:n})=>{let{image:r}=e,{radians:a,fillValue:s,center:i}=t,o=n,l=v.getTypedArrayFromDType(r.dtype,v.sizeFromShape(r.shape)),[c,u,h,d]=r.shape,[p,f]=R.getImageCenter(i,u,h),m=255,A=Math.sin(a),y=Math.cos(a),g=o.data.get(r.dataId).values;for(let w=0;w=0&&V=0&&U{let t=Math.floor(e);return e-t<.5?Math.floor(e):e-t>.5?Math.ceil(e):t%2==0?t:t+1}),jD={kernelName:Bs,backendName:"cpu",kernelFunc:UD};function Dw(e,t,n,r,a,s,i,o,l,c){let u=[r/a,a],h=e.values,d=t.values;if(r===0)return Le(n,t.dtype);let p=Le(u,t.dtype);p.values.fill(l);for(let f=0;f=r/a)throw new Error(`Invalid indices: ${m} does not index into ${n}`);for(let y=0;y1||a.shape.length===1?1:v.sizeFromShape(a.shape.slice(1));for(let f=0;fe>=0?ZD*e:KD*(Math.exp(e)-1)),JD={kernelName:Po,backendName:"cpu",kernelFunc:YD},QD=at(js,e=>1/(1+Math.exp(-e))),eO={kernelName:js,backendName:"cpu",kernelFunc:QD},tO=at(Bo,e=>e<0?-1:e>0?1:0),nO={kernelName:Bo,backendName:"cpu",kernelFunc:tO},rO=at(Us,e=>Math.sin(e)),aO={kernelName:Us,backendName:"cpu",kernelFunc:rO},sO=at(Wo,e=>Math.sinh(e)),iO={kernelName:Wo,backendName:"cpu",kernelFunc:sO},oO=11920928955078125e-23,Ow=Math.log(oO)+2,lO=at(Vo,e=>{let t=e>-Ow,n=e{let d=[...u];d[o]=h;let p=mi({inputs:{x:a},backend:n,attrs:{begin:c,size:d}});return c[o]+=h,p})}var mO={kernelName:Uo,backendName:"cpu",kernelFunc:fO},AO=at(Hs,e=>Math.sqrt(e)),yO={kernelName:Hs,backendName:"cpu",kernelFunc:AO},gO={kernelName:ku,backendName:"cpu",kernelFunc:({inputs:e,backend:t})=>{let{x:n}=e,r=t;be(n,"square");let a=r.data.get(n.dataId).values,s=new Float32Array(a.length);for(let i=0;i{let n=t;return isNaN(e)?NaN:e>0?1:n.alpha}),wO={kernelName:Na,backendName:"cpu",kernelFunc:xO};function bO(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{begin:s,end:i,strides:o,beginMask:l,endMask:c,ellipsisMask:u,newAxisMask:h,shrinkAxisMask:d}=r;be(a,"stridedSlice");let{nonStrided:p,$begin:f,$strides:m,size:A,newShape:y,outShape:g}=on.sliceInfo(a.shape,s,i,o,l,c,u,h,d),w=mt({inputs:{x:a},backend:n,attrs:{shape:y}}),b;if(p){let x=mi({inputs:{x:w},backend:n,attrs:{begin:f,size:A}});b=mt({inputs:{x},backend:n,attrs:{shape:g}}),n.disposeIntermediateTensorInfo(x)}else if(g.some(x=>x===0))b=n.makeTensorInfo(g,a.dtype,[]);else{let x=n.bufferSync(w),N=hw(g,x,m,f);b=n.makeTensorInfo(N.shape,N.dtype,N.values)}let _=mt({inputs:{x:b},backend:n,attrs:{shape:g}});return n.disposeIntermediateTensorInfo(w),n.disposeIntermediateTensorInfo(b),_}var _O={kernelName:jo,backendName:"cpu",kernelFunc:bO},vO=at(Ho,e=>Math.tan(e)),kO={kernelName:Ho,backendName:"cpu",kernelFunc:vO},IO=at(Zs,e=>Math.tanh(e)),NO={kernelName:Zs,backendName:"cpu",kernelFunc:IO};function SO(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{reps:s}=r;be(a,"tile");let i=pw(n.bufferSync(a),s);return n.makeTensorInfo(i.shape,i.dtype,i.values)}var TO={kernelName:Ia,backendName:"cpu",kernelFunc:SO};function CO(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{k:s,sorted:i}=r;be(a,"topk");let o=n.data.get(a.dataId).values,[l,c]=fw(o,a.shape,a.dtype,s,i);return[n.makeTensorInfo(l.shape,l.dtype,l.values),n.makeTensorInfo(c.shape,c.dtype,c.values)]}var EO={kernelName:Go,backendName:"cpu",kernelFunc:CO};function FO(e){let{inputs:t,attrs:n,backend:r}=e,{image:a,transforms:s}=t,{interpolation:i,fillMode:o,fillValue:l,outputShape:c}=n,[u,h,d,p]=a.shape,[f,m]=c!=null?c:[h,d],A=[u,f,m,p],y=v.computeStrides(a.shape),g=y[0],w=y[1],b=y[2],_=v.getTypedArrayFromDType(a.dtype,v.sizeFromShape(A));_.fill(l);let x=r.data.get(a.dataId).values,N=r.data.get(s.dataId).values;for(let T=0;Tt-1)if(t<=1)n=0;else{let r=2*t;n-=r*Math.trunc(n/r),n>=t&&(n=r-n-1)}return v.clamp(0,n,t-1)}function OO(e,t){let n=e;if(n<0)if(t<=1)n=0;else{let r=t-1;n+=t*(Math.trunc(-n/r)+1)}else if(n>t-1)if(t<=1)n=0;else{let r=t-1;n-=t*Math.trunc(n/r)}return v.clamp(0,n,t-1)}function zO(e,t){return e}function PO(e,t){return v.clamp(0,e,t-1)}function rc(e,t,n,r,a,s,i,o,l,c,u){let h=i*r+o*a+l*s+c;return 0<=o&&on.disposeIntermediateTensorInfo(f)),p}var jO={kernelName:Iu,backendName:"cpu",kernelFunc:UO},HO=[aM,uR,iM,lM,mR,cM,dM,fM,AM,gM,wM,_M,kM,SM,CM,MM,$M,OM,PM,nM,WM,VM,jM,pR,yR,GM,cR,XM,ZM,QM,tF,YM,sF,oF,rF,uF,hF,pF,mF,yF,xF,wF,_F,kF,NF,SF,CF,TF,Bm,KR,RF,FF,BF,gR,VF,wR,XF,ZF,YF,_R,e$,n$,a$,i$,l$,kR,h$,hR,p$,KM,m$,y$,x$,ZR,NR,_$,k$,TR,N$,C$,R$,$$,O$,P$,ER,B$,U$,H$,q$,K$,L$,J$,eD,MR,nD,sD,uD,$R,OR,dD,mD,gD,PR,wD,_D,vD,$w,SD,JR,BR,CD,dR,RD,QR,eM,tM,FD,DD,zD,LD,BD,VD,jD,UR,GD,XD,JD,eO,nO,aO,iO,jR,oD,uO,hO,pO,mO,yO,gO,GR,wO,_O,XR,Z$,kO,NO,TO,EO,LR,$O,WO,VO,jO,bD];for(let e of HO)ti(e);var Pw={};Oe(Pw,{assertNotComplex:()=>vl,bindCanvasToFramebuffer:()=>XO,bindColorTextureToFramebuffer:()=>np,bindTextureToProgramUniformSampler:()=>Qw,bindTextureUnit:()=>Zw,bindVertexBufferToProgramAttribute:()=>jm,callAndCheck:()=>xe,canBeRepresented:()=>Lw,createFragmentShader:()=>Vw,createFramebuffer:()=>Kw,createProgram:()=>Uw,createStaticIndexBuffer:()=>Gw,createStaticVertexBuffer:()=>Hw,createTexture:()=>qw,createVertexShader:()=>Bw,getBatchDim:()=>Ai,getExtensionOrThrow:()=>ac,getFramebufferErrorMessage:()=>eb,getMaxTexturesInShader:()=>rb,getNumChannels:()=>GO,getProgramUniformLocation:()=>Jw,getProgramUniformLocationOrThrow:()=>Yw,getRowsCols:()=>yi,getShapeAs3D:()=>rp,getTextureShapeFromLogicalShape:()=>tb,getWebGLDisjointQueryTimerVersion:()=>ab,getWebGLErrorMessage:()=>Ww,getWebGLMaxTextureSize:()=>nb,hasExtension:()=>qn,isCapableOfRenderingToFloatTexture:()=>sb,isDownloadFloatTextureEnabled:()=>ib,isReshapeFree:()=>ic,isWebGLFenceEnabled:()=>ob,isWebGLVersionEnabled:()=>Gm,linkProgram:()=>jw,resetMaxTextureSize:()=>KO,resetMaxTexturesInShader:()=>ZO,unbindColorTextureFromFramebuffer:()=>Hm,unbindTextureUnit:()=>qO,validateFramebuffer:()=>sc,validateProgram:()=>tp,validateTextureSize:()=>Xw});var gi={},qm={alpha:!1,antialias:!1,premultipliedAlpha:!1,preserveDrawingBuffer:!1,depth:!1,stencil:!1,failIfMajorPerformanceCaveat:!0};function ap(e,t){gi[e]=t}function Lr(e){if(!(e in gi)){let n=YO(e);if(n!==null)gi[e]=n;else return console.log("Could not get context for WebGL version",e),null}let t=gi[e];return t.isContextLost()?(delete gi[e],Lr(e)):(t.disable(t.DEPTH_TEST),t.disable(t.STENCIL_TEST),t.disable(t.BLEND),t.disable(t.DITHER),t.disable(t.POLYGON_OFFSET_FILL),t.disable(t.SAMPLE_COVERAGE),t.enable(t.SCISSOR_TEST),t.enable(t.CULL_FACE),t.cullFace(t.BACK),gi[e])}function JO(e){if(typeof OffscreenCanvas!="undefined"&&e===2)return new OffscreenCanvas(300,150);if(typeof document!="undefined")return document.createElement("canvas");throw new Error("Cannot create a canvas in this context")}function YO(e){if(e!==1&&e!==2)throw new Error("Cannot get WebGL rendering context, WebGL is disabled.");let t=JO(e);return t.addEventListener("webglcontextlost",n=>{n.preventDefault(),delete gi[e]},!1),e===1?t.getContext("webgl",qm)||t.getContext("experimental-webgl",qm):t.getContext("webgl2",qm)}var oc;(function(e){e[e.DENSE=0]="DENSE",e[e.SHARED_BATCH=1]="SHARED_BATCH"})(oc||(oc={}));var Xn;(function(e){e[e.RENDER=0]="RENDER",e[e.UPLOAD=1]="UPLOAD",e[e.PIXELS=2]="PIXELS",e[e.DOWNLOAD=3]="DOWNLOAD"})(Xn||(Xn={}));var Qt;(function(e){e[e.UNPACKED_FLOAT16=0]="UNPACKED_FLOAT16",e[e.UNPACKED_FLOAT32=1]="UNPACKED_FLOAT32",e[e.PACKED_4X1_UNSIGNED_BYTE=2]="PACKED_4X1_UNSIGNED_BYTE",e[e.PACKED_2X2_FLOAT32=3]="PACKED_2X2_FLOAT32",e[e.PACKED_2X2_FLOAT16=4]="PACKED_2X2_FLOAT16"})(Qt||(Qt={}));function lc(e,t){return[t,e]}function QO(e,t){return e*t}function uc(e){let t=v.sizeFromShape(e),n=Math.ceil(t/4);return v.sizeToSquarishShape(n)}function kl(e,t){return[Math.max(1,Math.ceil(t/2)),Math.max(1,Math.ceil(e/2))]}function ez(e,t){let[n,r]=kl(e,t);return n*r*4}function Xm(e,t){let n=e,r,a,s,i,o,l,c,u,h,d;return J().getNumber("WEBGL_VERSION")===2?(r=n.R32F,a=n.R16F,s=n.RGBA16F,i=n.RGBA32F,o=n.RED,c=4,u=1,h=n.HALF_FLOAT,d=n.FLOAT):(r=e.RGBA,a=e.RGBA,s=e.RGBA,i=n.RGBA,o=e.RGBA,c=4,u=4,h=t!=null?t.HALF_FLOAT_OES:null,d=e.FLOAT),l=e.RGBA,{internalFormatFloat:r,internalFormatHalfFloat:a,internalFormatPackedHalfFloat:s,internalFormatPackedFloat:i,textureFormatFloat:o,downloadTextureFormat:l,downloadUnpackNumChannels:c,defaultNumChannels:u,textureTypeHalfFloat:h,textureTypeFloat:d}}function xe(e,t){let n=t();return J().getBool("DEBUG")&&tz(e),n}function tz(e){let t=e.getError();if(t!==e.NO_ERROR)throw new Error("WebGL Error: "+Ww(e,t))}var nz=596e-10,rz=65504;function Lw(e){return!!(J().getBool("WEBGL_RENDER_FLOAT32_ENABLED")||e===0||nze.getExtension(t),'Extension "'+t+'" not supported on this browser.')}function Bw(e,t){let n=ia(e,()=>e.createShader(e.VERTEX_SHADER),"Unable to create vertex WebGLShader.");if(xe(e,()=>e.shaderSource(n,t)),xe(e,()=>e.compileShader(n)),e.getShaderParameter(n,e.COMPILE_STATUS)===!1)throw console.log(e.getShaderInfoLog(n)),new Error("Failed to compile vertex shader.");return n}function Vw(e,t){let n=ia(e,()=>e.createShader(e.FRAGMENT_SHADER),"Unable to create fragment WebGLShader.");if(xe(e,()=>e.shaderSource(n,t)),xe(e,()=>e.compileShader(n)),e.getShaderParameter(n,e.COMPILE_STATUS)===!1)throw az(t,e.getShaderInfoLog(n)),new Error("Failed to compile fragment shader.");return n}var sz=/ERROR: [0-9]+:([0-9]+):/g;function az(e,t){let n=sz.exec(t);if(n==null){console.log(`Couldn't parse line number in error: ${t}`),console.log(e);return}let r=+n[1],a=e.split(` -`),s=a.length.toString().length+2,i=a.map((h,d)=>v.rightPad((d+1).toString(),s)+h),o=0;for(let h=0;he.createProgram(),"Unable to create WebGLProgram.")}function jw(e,t){if(xe(e,()=>e.linkProgram(t)),e.getProgramParameter(t,e.LINK_STATUS)===!1)throw console.log(e.getProgramInfoLog(t)),new Error("Failed to link vertex and fragment shaders.")}function tp(e,t){if(xe(e,()=>e.validateProgram(t)),e.getProgramParameter(t,e.VALIDATE_STATUS)===!1)throw console.log(e.getProgramInfoLog(t)),new Error("Shader program validation failed.")}function Hw(e,t){let n=ia(e,()=>e.createBuffer(),"Unable to create WebGLBuffer");return xe(e,()=>e.bindBuffer(e.ARRAY_BUFFER,n)),xe(e,()=>e.bufferData(e.ARRAY_BUFFER,t,e.STATIC_DRAW)),n}function Gw(e,t){let n=ia(e,()=>e.createBuffer(),"Unable to create WebGLBuffer");return xe(e,()=>e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,n)),xe(e,()=>e.bufferData(e.ELEMENT_ARRAY_BUFFER,t,e.STATIC_DRAW)),n}function GO(){return J().getNumber("WEBGL_VERSION")===2?1:4}function qw(e){return ia(e,()=>e.createTexture(),"Unable to create WebGLTexture.")}function Xw(e,t){let n=J().getNumber("WEBGL_MAX_TEXTURE_SIZE");if(e<=0||t<=0){let r=`[${e}x${t}]`;throw new Error("Requested texture size "+r+" is invalid.")}if(e>n||t>n){let r=`[${e}x${t}]`,a=`[${n}x${n}]`;throw new Error("Requested texture size "+r+" greater than WebGL maximum on this browser / GPU "+a+".")}}function Kw(e){return ia(e,()=>e.createFramebuffer(),"Unable to create WebGLFramebuffer.")}function jm(e,t,n,r,a,s,i){let o=e.getAttribLocation(t,n);return o===-1?!1:(xe(e,()=>e.bindBuffer(e.ARRAY_BUFFER,r)),xe(e,()=>e.vertexAttribPointer(o,a,e.FLOAT,!1,s,i)),xe(e,()=>e.enableVertexAttribArray(o)),!0)}function Zw(e,t,n){lb(e,n),xe(e,()=>e.activeTexture(e.TEXTURE0+n)),xe(e,()=>e.bindTexture(e.TEXTURE_2D,t))}function qO(e,t){lb(e,t),xe(e,()=>e.activeTexture(e.TEXTURE0+t)),xe(e,()=>e.bindTexture(e.TEXTURE_2D,null))}function Yw(e,t,n){return ia(e,()=>e.getUniformLocation(t,n),'uniform "'+n+'" not present in program.')}function Jw(e,t,n){return e.getUniformLocation(t,n)}function Qw(e,t,n,r){xe(e,()=>Zw(e,t,r)),xe(e,()=>e.uniform1i(n,r))}function XO(e){xe(e,()=>e.bindFramebuffer(e.FRAMEBUFFER,null)),xe(e,()=>e.viewport(0,0,e.canvas.width,e.canvas.height)),xe(e,()=>e.scissor(0,0,e.canvas.width,e.canvas.height))}function np(e,t,n){xe(e,()=>e.bindFramebuffer(e.FRAMEBUFFER,n)),xe(e,()=>e.framebufferTexture2D(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,t,0))}function Hm(e,t){xe(e,()=>e.bindFramebuffer(e.FRAMEBUFFER,t)),xe(e,()=>e.framebufferTexture2D(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,null,0))}function sc(e){let t=e.checkFramebufferStatus(e.FRAMEBUFFER);if(t!==e.FRAMEBUFFER_COMPLETE)throw new Error("Error binding framebuffer: "+eb(e,t))}function eb(e,t){switch(t){case e.FRAMEBUFFER_INCOMPLETE_ATTACHMENT:return"FRAMEBUFFER_INCOMPLETE_ATTACHMENT";case e.FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT:return"FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT";case e.FRAMEBUFFER_INCOMPLETE_DIMENSIONS:return"FRAMEBUFFER_INCOMPLETE_DIMENSIONS";case e.FRAMEBUFFER_UNSUPPORTED:return"FRAMEBUFFER_UNSUPPORTED";default:return`unknown error ${t}`}}function ia(e,t,n){let r=xe(e,()=>t());if(r==null)throw new Error(n);return r}function lb(e,t){let n=e.MAX_COMBINED_TEXTURE_IMAGE_UNITS-1,r=t+e.TEXTURE0;if(rn){let a=`[gl.TEXTURE0, gl.TEXTURE${n}]`;throw new Error(`textureUnit must be in ${a}.`)}}function Ai(e,t=2){return v.sizeFromShape(e.slice(0,e.length-t))}function yi(e){if(e.length===0)throw Error("Cannot get rows and columns of an empty shape array.");return[e.length>1?e[e.length-2]:1,e[e.length-1]]}function rp(e){let t=[1,1,1];return e.length===0||e.length===1&&e[0]===1||(t=[Ai(e),...yi(e)]),t}function tb(e,t=!1){let n=J().getNumber("WEBGL_MAX_TEXTURE_SIZE");t&&(n=n*2,e=e.map((a,s)=>s>=e.length-2?v.nearestLargerEven(e[s]):e[s]),e.length===1&&(e=[2,e[0]])),e.length!==2&&(e=v.squeezeShape(e).newShape);let r=v.sizeFromShape(e);if(e.length<=1&&r<=n)return[1,r];if(e.length===2&&e[0]<=n&&e[1]<=n)return e;if(e.length===3&&e[0]*e[1]<=n&&e[2]<=n)return[e[0]*e[1],e[2]];if(e.length===3&&e[0]<=n&&e[1]*e[2]<=n)return[e[0],e[1]*e[2]];if(e.length===4&&e[0]*e[1]*e[2]<=n&&e[3]<=n)return[e[0]*e[1]*e[2],e[3]];if(e.length===4&&e[0]<=n&&e[1]*e[2]*e[3]<=n)return[e[0],e[1]*e[2]*e[3]];if(t){let a=Ai(e),s=2,i=2;return e.length&&([s,i]=yi(e)),r=a*(s/2)*(i/2),v.sizeToSquarishShape(r).map(o=>o*2)}return v.sizeToSquarishShape(r)}function sp(e){return e%2==0}function ic(e,t){if(e=e.slice(-2),t=t.slice(-2),v.arraysEqual(e,t)||!e.length||!t.length||e[0]===0||e[1]===0||t[0]===0||t[1]===0)return!0;if(e.length!==t.length){let n=e.slice(-1)[0],r=t.slice(-1)[0];if(n===r||sp(n)&&sp(r)&&(e[0]===1||t[0]===1))return!0}return e[1]===t[1]&&sp(e[0])&&sp(t[0])}var ip,op;function nb(e){if(ip==null){let t=Lr(e);ip=t.getParameter(t.MAX_TEXTURE_SIZE)}return ip}function KO(){ip=null}function ZO(){op=null}function rb(e){if(op==null){let t=Lr(e);op=t.getParameter(t.MAX_TEXTURE_IMAGE_UNITS)}return Math.min(16,op)}function ab(e){if(e===0)return 0;let t,n=Lr(e);return qn(n,"EXT_disjoint_timer_query_webgl2")&&e===2?t=2:qn(n,"EXT_disjoint_timer_query")?t=1:t=0,t}function qn(e,t){return e.getExtension(t)!=null}function Gm(e){try{if(Lr(e)!=null)return!0}catch(t){return console.log("Error when getting WebGL context: ",t),!1}return!1}function sb(e){if(e===0)return!1;let t=Lr(e);if(e===1){if(!qn(t,"OES_texture_float"))return!1}else if(!qn(t,"EXT_color_buffer_float"))return!1;return Km(t)}function ib(e){if(e===0)return!1;let t=Lr(e);if(e===1){if(!qn(t,"OES_texture_float")||!qn(t,"WEBGL_color_buffer_float"))return!1}else{if(qn(t,"EXT_color_buffer_float"))return Km(t);let n="EXT_color_buffer_half_float";if(qn(t,n)){let r=t.getExtension(n);return iz(t,r)}return!1}return Km(t)}function Km(e){let t=Xm(e),n=e.createTexture();e.bindTexture(e.TEXTURE_2D,n);let r=1,a=1;e.texImage2D(e.TEXTURE_2D,0,t.internalFormatFloat,r,a,0,t.textureFormatFloat,t.textureTypeFloat,null);let s=e.createFramebuffer();e.bindFramebuffer(e.FRAMEBUFFER,s),e.framebufferTexture2D(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,n,0);let i=e.checkFramebufferStatus(e.FRAMEBUFFER)===e.FRAMEBUFFER_COMPLETE;return e.bindTexture(e.TEXTURE_2D,null),e.bindFramebuffer(e.FRAMEBUFFER,null),e.deleteTexture(n),e.deleteFramebuffer(s),i}function iz(e,t){let n=Xm(e,t),r=e.createTexture();e.bindTexture(e.TEXTURE_2D,r);let a=1,s=1;e.texImage2D(e.TEXTURE_2D,0,n.internalFormatHalfFloat,a,s,0,n.textureFormatFloat,n.textureTypeHalfFloat,null);let i=e.createFramebuffer();e.bindFramebuffer(e.FRAMEBUFFER,i),e.framebufferTexture2D(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,r,0);let o=e.checkFramebufferStatus(e.FRAMEBUFFER)===e.FRAMEBUFFER_COMPLETE;return e.bindTexture(e.TEXTURE_2D,null),e.bindFramebuffer(e.FRAMEBUFFER,null),e.deleteTexture(r),e.deleteFramebuffer(i),o}function ob(e){return e!==2?!1:Lr(e).fenceSync!=null}function vl(e,t){Array.isArray(e)||(e=[e]),e.forEach(n=>{n!=null&&v.assert(n.dtype!=="complex64",()=>`${t} does not support complex64 tensors in the WebGL backend.`)})}var Re=J();Re.registerFlag("HAS_WEBGL",()=>Re.getNumber("WEBGL_VERSION")>0);Re.registerFlag("WEBGL_VERSION",()=>Gm(2)?2:Gm(1)?1:0);Re.registerFlag("WEBGL_CHECK_NUMERICAL_PROBLEMS",()=>!1);Re.registerFlag("WEBGL_BUFFER_SUPPORTED",()=>Re.get("WEBGL_VERSION")===2);Re.registerFlag("WEBGL_CPU_FORWARD",()=>!0);Re.registerFlag("WEBGL_FORCE_F16_TEXTURES",()=>!1);Re.registerFlag("WEBGL_PACK",()=>Re.getBool("HAS_WEBGL"));Re.registerFlag("WEBGL_PACK_NORMALIZATION",()=>Re.getBool("WEBGL_PACK"));Re.registerFlag("WEBGL_PACK_CLIP",()=>Re.getBool("WEBGL_PACK"));Re.registerFlag("WEBGL_PACK_DEPTHWISECONV",()=>!1);Re.registerFlag("WEBGL_PACK_BINARY_OPERATIONS",()=>Re.getBool("WEBGL_PACK"));Re.registerFlag("WEBGL_PACK_UNARY_OPERATIONS",()=>Re.getBool("WEBGL_PACK"));Re.registerFlag("WEBGL_PACK_ARRAY_OPERATIONS",()=>Re.getBool("WEBGL_PACK"));Re.registerFlag("WEBGL_PACK_IMAGE_OPERATIONS",()=>Re.getBool("WEBGL_PACK"));Re.registerFlag("WEBGL_PACK_REDUCE",()=>Re.getBool("WEBGL_PACK"));Re.registerFlag("WEBGL_LAZILY_UNPACK",()=>Re.getBool("WEBGL_PACK"));Re.registerFlag("WEBGL_CONV_IM2COL",()=>Re.getBool("WEBGL_PACK"));Re.registerFlag("WEBGL_MAX_TEXTURE_SIZE",()=>nb(Re.getNumber("WEBGL_VERSION")));Re.registerFlag("WEBGL_MAX_TEXTURES_IN_SHADER",()=>rb(Re.getNumber("WEBGL_VERSION")));Re.registerFlag("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION",()=>{let e=Re.getNumber("WEBGL_VERSION");return e===0?0:ab(e)});Re.registerFlag("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE",()=>Re.getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")>0&&!$u.isMobile());Re.registerFlag("WEBGL_RENDER_FLOAT32_CAPABLE",()=>sb(Re.getNumber("WEBGL_VERSION")));Re.registerFlag("WEBGL_RENDER_FLOAT32_ENABLED",()=>Re.getBool("WEBGL_FORCE_F16_TEXTURES")?!1:Re.getBool("WEBGL_RENDER_FLOAT32_CAPABLE"));Re.registerFlag("WEBGL_DOWNLOAD_FLOAT_ENABLED",()=>ib(Re.getNumber("WEBGL_VERSION")));Re.registerFlag("WEBGL_FENCE_API_ENABLED",()=>ob(Re.getNumber("WEBGL_VERSION")));Re.registerFlag("WEBGL_SIZE_UPLOAD_UNIFORM",()=>Re.getBool("WEBGL_RENDER_FLOAT32_ENABLED")?4:0);Re.registerFlag("WEBGL_DELETE_TEXTURE_THRESHOLD",()=>-1,e=>{if(e<0&&e!==-1)throw new Error(`WEBGL_DELETE_TEXTURE_THRESHOLD must be -1 (indicating never delete) or at least 0, but got ${e}.`)});Re.registerFlag("WEBGL_FLUSH_THRESHOLD",()=>$u.isMobile()&&Re.getBool("IS_CHROME")?1:-1,e=>{if(e<0&&e!==-1)throw new Error(`WEBGL_FLUSH_THRESHOLD must be -1 (indicating never manual flush) or at least 0, but got ${e}.`)});function cn(){let e,t,n,r,a,s,i,o,l,c;return J().getNumber("WEBGL_VERSION")===2?(e="#version 300 es",t="in",n="out",r="in",a="texture",s="outputColor",i="out vec4 outputColor;",o=` +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __markAsModule = (target) => __defProp(target, "__esModule", {value: true}); +var __commonJS = (callback, module) => () => { + if (!module) { + module = {exports: {}}; + callback(module.exports, module); + } + return module.exports; +}; +var __export = (target, all5) => { + for (var name in all5) + __defProp(target, name, {get: all5[name], enumerable: true}); +}; +var __exportStar = (target, module, desc) => { + if (module && typeof module === "object" || typeof module === "function") { + for (let key of __getOwnPropNames(module)) + if (!__hasOwnProp.call(target, key) && key !== "default") + __defProp(target, key, {get: () => module[key], enumerable: !(desc = __getOwnPropDesc(module, key)) || desc.enumerable}); + } + return target; +}; +var __toModule = (module) => { + return __exportStar(__markAsModule(__defProp(module != null ? __create(__getProtoOf(module)) : {}, "default", module && module.__esModule && "default" in module ? {get: () => module.default, enumerable: true} : {value: module, enumerable: true})), module); +}; +var __accessCheck = (obj, member, msg) => { + if (!member.has(obj)) + throw TypeError("Cannot " + msg); +}; +var __privateGet = (obj, member, getter) => { + __accessCheck(obj, member, "read from private field"); + return getter ? getter.call(obj) : member.get(obj); +}; +var __privateSet = (obj, member, value, setter) => { + __accessCheck(obj, member, "write to private field"); + setter ? setter.call(obj, value) : member.set(obj, value); + return value; +}; + +// src/blazeface/facemesh.ts +var require_facemesh = __commonJS((exports) => { + __markAsModule(exports); + __export(exports, { + MediaPipeFaceMesh: () => MediaPipeFaceMesh, + load: () => load11 + }); + var MediaPipeFaceMesh = class { + constructor(blazeFace, blazeMeshModel, irisModel, config3) { + this.facePipeline = new Pipeline(blazeFace, blazeMeshModel, irisModel); + this.config = config3; + } + async estimateFaces(input2, config3) { + const predictions = await this.facePipeline.predict(input2, config3); + const results = []; + for (const prediction of predictions || []) { + if (prediction.isDisposedInternal) + continue; + const mesh = prediction.coords ? prediction.coords.arraySync() : []; + const meshRaw = mesh.map((pt) => [ + pt[0] / input2.shape[2], + pt[1] / input2.shape[1], + pt[2] / this.facePipeline.meshSize + ]); + const annotations3 = {}; + if (mesh && mesh.length > 0) { + for (const key of Object.keys(MESH_ANNOTATIONS)) + annotations3[key] = MESH_ANNOTATIONS[key].map((index) => mesh[index]); + } + const box3 = prediction.box ? [ + Math.max(0, prediction.box.startPoint[0]), + Math.max(0, prediction.box.startPoint[1]), + Math.min(input2.shape[1], prediction.box.endPoint[0]) - Math.max(0, prediction.box.startPoint[0]), + Math.min(input2.shape[2], prediction.box.endPoint[1]) - Math.max(0, prediction.box.startPoint[1]) + ] : 0; + const boxRaw = prediction.box ? [ + prediction.box.startPoint[0] / input2.shape[2], + prediction.box.startPoint[1] / input2.shape[1], + (prediction.box.endPoint[0] - prediction.box.startPoint[0]) / input2.shape[2], + (prediction.box.endPoint[1] - prediction.box.startPoint[1]) / input2.shape[1] + ] : []; + results.push({ + confidence: prediction.faceConfidence || prediction.boxConfidence || 0, + boxConfidence: prediction.boxConfidence, + faceConfidence: prediction.faceConfidence, + box: box3, + boxRaw, + mesh, + meshRaw, + annotations: annotations3, + image: prediction.image ? prediction.image.clone() : null + }); + if (prediction.coords) + prediction.coords.dispose(); + if (prediction.image) + prediction.image.dispose(); + } + return results; + } + }; + var faceModels = [null, null, null]; + async function load11(config3) { + faceModels = await Promise.all([ + !faceModels[0] && config3.face.enabled ? load6(config3) : null, + !faceModels[1] && config3.face.mesh.enabled ? loadGraphModel(config3.face.mesh.modelPath, {fromTFHub: config3.face.mesh.modelPath.includes("tfhub.dev")}) : null, + !faceModels[2] && config3.face.iris.enabled ? loadGraphModel(config3.face.iris.modelPath, {fromTFHub: config3.face.iris.modelPath.includes("tfhub.dev")}) : null + ]); + const faceMesh = new MediaPipeFaceMesh(faceModels[0], faceModels[1], faceModels[2], config3); + if (config3.face.mesh.enabled && config3.debug) + log(`load model: ${config3.face.mesh.modelPath.match(/\/(.*)\./)[1]}`); + if (config3.face.iris.enabled && config3.debug) + log(`load model: ${config3.face.iris.modelPath.match(/\/(.*)\./)[1]}`); + return faceMesh; + } + exports.triangulation = TRI468; +}); + +// src/posenet/keypoints.ts +var require_keypoints = __commonJS((exports) => { + __markAsModule(exports); + __export(exports, { + NUM_KEYPOINTS: () => NUM_KEYPOINTS3, + connectedPartIndices: () => connectedPartIndices, + partChannels: () => partChannels, + partIds: () => partIds2, + partNames: () => partNames2, + poseChain: () => poseChain2 + }); + var partNames2 = [ + "nose", + "leftEye", + "rightEye", + "leftEar", + "rightEar", + "leftShoulder", + "rightShoulder", + "leftElbow", + "rightElbow", + "leftWrist", + "rightWrist", + "leftHip", + "rightHip", + "leftKnee", + "rightKnee", + "leftAnkle", + "rightAnkle" + ]; + var NUM_KEYPOINTS3 = exports.partNames.length; + var partIds2 = exports.partNames.reduce((result, jointName, i) => { + result[jointName] = i; + return result; + }, {}); + var connectedPartNames = [ + ["leftHip", "leftShoulder"], + ["leftElbow", "leftShoulder"], + ["leftElbow", "leftWrist"], + ["leftHip", "leftKnee"], + ["leftKnee", "leftAnkle"], + ["rightHip", "rightShoulder"], + ["rightElbow", "rightShoulder"], + ["rightElbow", "rightWrist"], + ["rightHip", "rightKnee"], + ["rightKnee", "rightAnkle"], + ["leftShoulder", "rightShoulder"], + ["leftHip", "rightHip"] + ]; + var connectedPartIndices = connectedPartNames.map(([jointNameA, jointNameB]) => [partIds2[jointNameA], partIds2[jointNameB]]); + var poseChain2 = [ + ["nose", "leftEye"], + ["leftEye", "leftEar"], + ["nose", "rightEye"], + ["rightEye", "rightEar"], + ["nose", "leftShoulder"], + ["leftShoulder", "leftElbow"], + ["leftElbow", "leftWrist"], + ["leftShoulder", "leftHip"], + ["leftHip", "leftKnee"], + ["leftKnee", "leftAnkle"], + ["nose", "rightShoulder"], + ["rightShoulder", "rightElbow"], + ["rightElbow", "rightWrist"], + ["rightShoulder", "rightHip"], + ["rightHip", "rightKnee"], + ["rightKnee", "rightAnkle"] + ]; + var partChannels = [ + "left_face", + "right_face", + "right_upper_leg_front", + "right_lower_leg_back", + "right_upper_leg_back", + "left_lower_leg_front", + "left_upper_leg_front", + "left_upper_leg_back", + "left_lower_leg_back", + "right_feet", + "right_lower_leg_front", + "left_feet", + "torso_front", + "torso_back", + "right_upper_arm_front", + "right_upper_arm_back", + "right_lower_arm_back", + "left_lower_arm_front", + "left_upper_arm_front", + "left_upper_arm_back", + "left_lower_arm_back", + "right_hand", + "right_lower_arm_front", + "left_hand" + ]; +}); + +// src/helpers.ts +function log(...msg) { + const dt = new Date(); + const ts = `${dt.getHours().toString().padStart(2, "0")}:${dt.getMinutes().toString().padStart(2, "0")}:${dt.getSeconds().toString().padStart(2, "0")}.${dt.getMilliseconds().toString().padStart(3, "0")}`; + if (msg) + console.log(ts, "Human:", ...msg); +} +var now = () => { + if (typeof performance !== "undefined") + return performance.now(); + return parseInt((Number(process.hrtime.bigint()) / 1e3 / 1e3).toString()); +}; +function mergeDeep(...objects) { + const isObject = (obj) => obj && typeof obj === "object"; + return objects.reduce((prev, obj) => { + Object.keys(obj || {}).forEach((key) => { + const pVal = prev[key]; + const oVal = obj[key]; + if (Array.isArray(pVal) && Array.isArray(oVal)) + prev[key] = pVal.concat(...oVal); + else if (isObject(pVal) && isObject(oVal)) + prev[key] = mergeDeep(pVal, oVal); + else + prev[key] = oVal; + }); + return prev; + }, {}); +} + +// src/sysinfo.ts +function info() { + let platform; + let agent; + if (typeof navigator !== "undefined") { + const raw = navigator.userAgent.match(/\(([^()]+)\)/g); + if (raw && raw[0]) { + platform = raw[0].match(/\(([^()]+)\)/g)[0].replace(/\(|\)/g, ""); + agent = navigator.userAgent.replace(raw[0], ""); + if (platform[1]) + agent = agent.replace(raw[1], ""); + agent = agent.replace(/ /g, " "); + } + } else if (typeof process !== "undefined") { + platform = `${process.platform} ${process.arch}`; + agent = `NodeJS ${process.version}`; + } + return {platform, agent}; +} + +// dist/tfjs.esm.js +var tfjs_esm_exports = {}; +__export(tfjs_esm_exports, { + Abs: () => Abs, + Acos: () => Acos, + Acosh: () => Acosh, + AdadeltaOptimizer: () => AdadeltaOptimizer, + AdagradOptimizer: () => AdagradOptimizer, + AdamOptimizer: () => AdamOptimizer, + AdamaxOptimizer: () => AdamaxOptimizer, + Add: () => Add, + AddN: () => AddN, + All: () => All, + Any: () => Any, + ArgMax: () => ArgMax, + ArgMin: () => ArgMin, + Asin: () => Asin, + Asinh: () => Asinh, + Atan: () => Atan, + Atan2: () => Atan2, + Atanh: () => Atanh, + AvgPool: () => AvgPool, + AvgPool3D: () => AvgPool3D, + AvgPool3DGrad: () => AvgPool3DGrad, + AvgPoolGrad: () => AvgPoolGrad, + BackendWasm: () => BackendWasm, + BatchMatMul: () => BatchMatMul, + BatchToSpaceND: () => BatchToSpaceND, + Bincount: () => Bincount, + BroadcastTo: () => BroadcastTo, + Callback: () => Callback, + CallbackList: () => CallbackList, + Cast: () => Cast, + Ceil: () => Ceil, + ClipByValue: () => ClipByValue, + Complex: () => Complex, + ComplexAbs: () => ComplexAbs, + Concat: () => Concat, + Conv2D: () => Conv2D, + Conv2DBackpropFilter: () => Conv2DBackpropFilter, + Conv2DBackpropInput: () => Conv2DBackpropInput, + Conv3D: () => Conv3D, + Conv3DBackpropFilterV2: () => Conv3DBackpropFilterV2, + Conv3DBackpropInputV2: () => Conv3DBackpropInputV2, + Cos: () => Cos, + Cosh: () => Cosh, + CropAndResize: () => CropAndResize, + Cumsum: () => Cumsum, + CustomCallback: () => CustomCallback, + DataStorage: () => DataStorage, + DenseBincount: () => DenseBincount, + DepthToSpace: () => DepthToSpace, + DepthwiseConv2dNative: () => DepthwiseConv2dNative, + DepthwiseConv2dNativeBackpropFilter: () => DepthwiseConv2dNativeBackpropFilter, + DepthwiseConv2dNativeBackpropInput: () => DepthwiseConv2dNativeBackpropInput, + Diag: () => Diag, + Dilation2D: () => Dilation2D, + Dilation2DBackpropFilter: () => Dilation2DBackpropFilter, + Dilation2DBackpropInput: () => Dilation2DBackpropInput, + ENV: () => ENV, + EarlyStopping: () => EarlyStopping, + Elu: () => Elu, + EluGrad: () => EluGrad, + Environment: () => Environment, + Equal: () => Equal, + Erf: () => Erf, + Exp: () => Exp, + ExpandDims: () => ExpandDims, + Expm1: () => Expm1, + FFT: () => FFT, + Fill: () => Fill, + FlipLeftRight: () => FlipLeftRight, + Floor: () => Floor, + FloorDiv: () => FloorDiv, + FromPixels: () => FromPixels, + FusedBatchNorm: () => FusedBatchNorm, + FusedConv2D: () => FusedConv2D, + FusedDepthwiseConv2D: () => FusedDepthwiseConv2D, + GPGPUContext: () => GPGPUContext, + GatherNd: () => GatherNd, + GatherV2: () => GatherV2, + GraphModel: () => GraphModel, + Greater: () => Greater, + GreaterEqual: () => GreaterEqual, + History: () => History, + IFFT: () => IFFT, + Identity: () => Identity, + Imag: () => Imag, + InputSpec: () => InputSpec, + IsFinite: () => IsFinite, + IsInf: () => IsInf, + IsNan: () => IsNan, + KernelBackend: () => KernelBackend, + LRN: () => LRN, + LRNGrad: () => LRNGrad, + LayerVariable: () => LayerVariable, + LayersModel: () => LayersModel, + LeakyRelu: () => LeakyRelu, + Less: () => Less, + LessEqual: () => LessEqual, + LinSpace: () => LinSpace, + Log: () => Log, + Log1p: () => Log1p, + LogSoftmax: () => LogSoftmax, + LogicalAnd: () => LogicalAnd, + LogicalNot: () => LogicalNot, + LogicalOr: () => LogicalOr, + MathBackendCPU: () => MathBackendCPU, + MathBackendWebGL: () => MathBackendWebGL, + Max: () => Max, + MaxPool: () => MaxPool, + MaxPool3D: () => MaxPool3D, + MaxPool3DGrad: () => MaxPool3DGrad, + MaxPoolGrad: () => MaxPoolGrad, + MaxPoolWithArgmax: () => MaxPoolWithArgmax, + Maximum: () => Maximum, + Mean: () => Mean, + Min: () => Min, + Minimum: () => Minimum, + MirrorPad: () => MirrorPad, + Mod: () => Mod, + MomentumOptimizer: () => MomentumOptimizer, + Multinomial: () => Multinomial, + Multiply: () => Multiply, + Neg: () => Neg, + NonMaxSuppressionV3: () => NonMaxSuppressionV3, + NonMaxSuppressionV4: () => NonMaxSuppressionV4, + NonMaxSuppressionV5: () => NonMaxSuppressionV5, + NotEqual: () => NotEqual, + OP_SCOPE_SUFFIX: () => OP_SCOPE_SUFFIX, + OneHot: () => OneHot, + OnesLike: () => OnesLike, + Optimizer: () => Optimizer, + Pack: () => Pack, + PadV2: () => PadV2, + Pool: () => Pool, + Pow: () => Pow, + Prelu: () => Prelu, + Prod: () => Prod, + RMSPropOptimizer: () => RMSPropOptimizer, + RNN: () => RNN, + Range: () => Range, + Rank: () => Rank, + Real: () => Real, + RealDiv: () => RealDiv, + Reciprocal: () => Reciprocal, + Reduction: () => Reduction, + Relu: () => Relu, + Relu6: () => Relu6, + Reshape: () => Reshape, + ResizeBilinear: () => ResizeBilinear, + ResizeBilinearGrad: () => ResizeBilinearGrad, + ResizeNearestNeighbor: () => ResizeNearestNeighbor, + ResizeNearestNeighborGrad: () => ResizeNearestNeighborGrad, + Reverse: () => Reverse, + RotateWithOffset: () => RotateWithOffset, + Round: () => Round, + Rsqrt: () => Rsqrt, + SGDOptimizer: () => SGDOptimizer, + ScatterNd: () => ScatterNd, + Select: () => Select, + Selu: () => Selu, + Sequential: () => Sequential, + Sigmoid: () => Sigmoid, + Sign: () => Sign, + Sin: () => Sin, + Sinh: () => Sinh, + Slice: () => Slice, + Softmax: () => Softmax, + Softplus: () => Softplus, + SpaceToBatchND: () => SpaceToBatchND, + SparseToDense: () => SparseToDense, + SplitV: () => SplitV, + Sqrt: () => Sqrt, + Square: () => Square, + SquaredDifference: () => SquaredDifference, + Step: () => Step, + StridedSlice: () => StridedSlice, + Sub: () => Sub, + Sum: () => Sum, + SymbolicTensor: () => SymbolicTensor, + Tan: () => Tan, + Tanh: () => Tanh, + Tensor: () => Tensor, + TensorBuffer: () => TensorBuffer, + Tile: () => Tile, + TopK: () => TopK, + Transform: () => Transform, + Transpose: () => Transpose, + Unique: () => Unique, + Unpack: () => Unpack, + UnsortedSegmentSum: () => UnsortedSegmentSum, + Variable: () => Variable, + ZerosLike: () => ZerosLike, + _FusedMatMul: () => _FusedMatMul, + abs: () => abs, + acos: () => acos, + acosh: () => acosh, + add: () => add2, + addN: () => addN, + all: () => all, + any: () => any, + argMax: () => argMax, + argMin: () => argMin, + asin: () => asin, + asinh: () => asinh, + atan: () => atan, + atan2: () => atan2, + atanh: () => atanh, + avgPool: () => avgPool, + avgPool3d: () => avgPool3d, + backend: () => backend, + backend_util: () => backend_util_exports, + basicLSTMCell: () => basicLSTMCell, + batchNorm: () => batchNorm, + batchNorm2d: () => batchNorm2d, + batchNorm3d: () => batchNorm3d, + batchNorm4d: () => batchNorm4d, + batchToSpaceND: () => batchToSpaceND, + bincount: () => bincount, + booleanMaskAsync: () => booleanMaskAsync, + broadcastTo: () => broadcastTo, + browser: () => browser_exports, + buffer: () => buffer, + callbacks: () => callbacks, + cast: () => cast, + ceil: () => ceil, + clipByValue: () => clipByValue, + clone: () => clone, + complex: () => complex, + concat: () => concat, + concat1d: () => concat1d, + concat2d: () => concat2d, + concat3d: () => concat3d, + concat4d: () => concat4d, + constraints: () => exports_constraints_exports, + conv1d: () => conv1d, + conv2d: () => conv2d, + conv2dTranspose: () => conv2dTranspose, + conv3d: () => conv3d, + conv3dTranspose: () => conv3dTranspose, + copyRegisteredKernels: () => copyRegisteredKernels, + cos: () => cos, + cosh: () => cosh, + cosineWindow: () => cosineWindow, + cumsum: () => cumsum, + customGrad: () => customGrad, + data: () => dist_exports, + denseBincount: () => denseBincount, + deprecationWarn: () => deprecationWarn, + depthToSpace: () => depthToSpace, + depthwiseConv2d: () => depthwiseConv2d, + deregisterOp: () => deregisterOp, + device_util: () => device_util_exports, + diag: () => diag, + dilation2d: () => dilation2d, + disableDeprecationWarnings: () => disableDeprecationWarnings, + dispose: () => dispose, + disposeVariables: () => disposeVariables, + div: () => div, + divNoNan: () => divNoNan, + dot: () => dot, + dropout: () => dropout, + elu: () => elu, + enableDebugMode: () => enableDebugMode, + enableProdMode: () => enableProdMode, + enclosingPowerOfTwo: () => enclosingPowerOfTwo, + engine: () => engine, + env: () => env, + equal: () => equal, + erf: () => erf, + exp: () => exp, + expandDims: () => expandDims, + expm1: () => expm1, + eye: () => eye, + fft: () => fft, + fill: () => fill, + findBackend: () => findBackend, + findBackendFactory: () => findBackendFactory, + floor: () => floor, + floorDiv: () => floorDiv, + forceHalfFloat: () => forceHalfFloat, + fused: () => fused_ops_exports, + gather: () => gather, + gatherND: () => gatherND, + gather_util: () => gather_nd_util_exports, + getBackend: () => getBackend, + getGradient: () => getGradient, + getKernel: () => getKernel, + getKernelsForBackend: () => getKernelsForBackend, + gpgpu_util: () => gpgpu_util_exports, + grad: () => grad, + grads: () => grads, + greater: () => greater, + greaterEqual: () => greaterEqual, + ifft: () => ifft, + imag: () => imag, + image: () => image, + inTopKAsync: () => inTopKAsync, + initializers: () => exports_initializers_exports, + input: () => input, + io: () => io_exports, + irfft: () => irfft, + isFinite: () => isFinite2, + isInf: () => isInf, + isNaN: () => isNaN2, + keep: () => keep, + kernel_impls: () => kernel_impls_exports, + layers: () => exports_layers_exports, + leakyRelu: () => leakyRelu, + less: () => less, + lessEqual: () => lessEqual, + linalg: () => linalg, + linspace: () => linspace, + loadGraphModel: () => loadGraphModel, + loadLayersModel: () => loadLayersModel, + localResponseNormalization: () => localResponseNormalization, + log: () => log2, + log1p: () => log1p, + logSigmoid: () => logSigmoid, + logSoftmax: () => logSoftmax, + logSumExp: () => logSumExp, + logicalAnd: () => logicalAnd, + logicalNot: () => logicalNot, + logicalOr: () => logicalOr, + logicalXor: () => logicalXor, + losses: () => losses, + matMul: () => matMul, + math: () => math_exports, + max: () => max, + maxPool: () => maxPool, + maxPool3d: () => maxPool3d, + maxPoolWithArgmax: () => maxPoolWithArgmax, + maximum: () => maximum, + mean: () => mean, + memory: () => memory, + metrics: () => exports_metrics_exports, + min: () => min, + minimum: () => minimum, + mirrorPad: () => mirrorPad, + mod: () => mod, + model: () => model, + models: () => exports_models_exports, + moments: () => moments, + movingAverage: () => movingAverage, + mul: () => mul, + multiRNNCell: () => multiRNNCell, + multinomial: () => multinomial, + neg: () => neg, + nextFrame: () => nextFrame, + norm: () => norm, + notEqual: () => notEqual, + oneHot: () => oneHot, + ones: () => ones2, + onesLike: () => onesLike, + op: () => op, + outerProduct: () => outerProduct, + pad: () => pad, + pad1d: () => pad1d, + pad2d: () => pad2d, + pad3d: () => pad3d, + pad4d: () => pad4d, + pool: () => pool, + pow: () => pow, + prelu: () => prelu, + print: () => print2, + prod: () => prod, + profile: () => profile, + rand: () => rand, + randomGamma: () => randomGamma, + randomNormal: () => randomNormal, + randomUniform: () => randomUniform, + range: () => range, + ready: () => ready, + real: () => real, + reciprocal: () => reciprocal, + registerBackend: () => registerBackend, + registerCallbackConstructor: () => registerCallbackConstructor, + registerGradient: () => registerGradient, + registerKernel: () => registerKernel, + registerOp: () => registerOp, + regularizers: () => exports_regularizers_exports, + relu: () => relu, + relu6: () => relu6, + removeBackend: () => removeBackend, + reshape: () => reshape, + reverse: () => reverse, + reverse1d: () => reverse1d, + reverse2d: () => reverse2d, + reverse3d: () => reverse3d, + reverse4d: () => reverse4d, + rfft: () => rfft, + round: () => round2, + rsqrt: () => rsqrt, + scalar: () => scalar, + scatterND: () => scatterND, + scatter_util: () => scatter_nd_util_exports, + selu: () => selu, + separableConv2d: () => separableConv2d, + sequential: () => sequential, + serialization: () => serialization_exports, + setBackend: () => setBackend, + setPlatform: () => setPlatform, + setWasmPath: () => setWasmPath, + setWasmPaths: () => setWasmPaths, + setWebGLContext: () => setWebGLContext, + setdiff1dAsync: () => setdiff1dAsync, + shared: () => shared_exports, + sigmoid: () => sigmoid, + sign: () => sign, + signal: () => signal, + sin: () => sin, + sinh: () => sinh, + slice: () => slice, + slice1d: () => slice1d, + slice2d: () => slice2d, + slice3d: () => slice3d, + slice4d: () => slice4d, + slice_util: () => slice_util_exports, + softmax: () => softmax, + softplus: () => softplus, + spaceToBatchND: () => spaceToBatchND, + sparseToDense: () => sparseToDense, + spectral: () => spectral, + split: () => split, + sqrt: () => sqrt, + square: () => square, + squaredDifference: () => squaredDifference, + squeeze: () => squeeze, + stack: () => stack, + step: () => step, + stridedSlice: () => stridedSlice, + sub: () => sub, + sum: () => sum2, + sumOutType: () => sumOutType, + tan: () => tan, + tanh: () => tanh2, + tensor: () => tensor, + tensor1d: () => tensor1d, + tensor2d: () => tensor2d, + tensor3d: () => tensor3d, + tensor4d: () => tensor4d, + tensor5d: () => tensor5d, + tensor6d: () => tensor6d, + tensor_util: () => tensor_util_exports, + test_util: () => test_util_exports, + tidy: () => tidy, + tile: () => tile, + time: () => time, + topk: () => topk, + train: () => train, + transpose: () => transpose, + truncatedNormal: () => truncatedNormal, + unique: () => unique, + unregisterGradient: () => unregisterGradient, + unregisterKernel: () => unregisterKernel, + unsortedSegmentSum: () => unsortedSegmentSum, + unstack: () => unstack, + upcastType: () => upcastType, + util: () => util_exports, + valueAndGrad: () => valueAndGrad, + valueAndGrads: () => valueAndGrads, + variable: () => variable, + variableGrads: () => variableGrads, + version: () => version13, + version_converter: () => version11, + version_core: () => version6, + version_cpu: () => version7, + version_layers: () => version10, + version_wasm: () => version9, + version_webgl: () => version8, + webgl: () => webgl, + webgl_util: () => webgl_util_exports, + where: () => where, + whereAsync: () => whereAsync, + zeros: () => zeros, + zerosLike: () => zerosLike +}); +var __create2 = Object.create; +var __defProp2 = Object.defineProperty; +var __getProtoOf2 = Object.getPrototypeOf; +var __hasOwnProp2 = Object.prototype.hasOwnProperty; +var __getOwnPropNames2 = Object.getOwnPropertyNames; +var __getOwnPropDesc2 = Object.getOwnPropertyDescriptor; +var __markAsModule2 = (target) => __defProp2(target, "__esModule", {value: true}); +var __commonJS2 = (callback, module) => () => { + if (!module) { + module = {exports: {}}; + callback(module.exports, module); + } + return module.exports; +}; +var __export2 = (target, all42) => { + for (var name in all42) + __defProp2(target, name, {get: all42[name], enumerable: true}); +}; +var __exportStar2 = (target, module, desc) => { + if (module && typeof module === "object" || typeof module === "function") { + for (let key of __getOwnPropNames2(module)) + if (!__hasOwnProp2.call(target, key) && key !== "default") + __defProp2(target, key, {get: () => module[key], enumerable: !(desc = __getOwnPropDesc2(module, key)) || desc.enumerable}); + } + return target; +}; +var __toModule2 = (module) => { + return __exportStar2(__markAsModule2(__defProp2(module != null ? __create2(__getProtoOf2(module)) : {}, "default", module && module.__esModule && "default" in module ? {get: () => module.default, enumerable: true} : {value: module, enumerable: true})), module); +}; +var require_browser = __commonJS2(() => { +}); +var require_alea = __commonJS2((exports, module) => { + (function(global2, module2, define2) { + function Alea(seed) { + var me = this, mash = Mash(); + me.next = function() { + var t = 2091639 * me.s0 + me.c * 23283064365386963e-26; + me.s0 = me.s1; + me.s1 = me.s2; + return me.s2 = t - (me.c = t | 0); + }; + me.c = 1; + me.s0 = mash(" "); + me.s1 = mash(" "); + me.s2 = mash(" "); + me.s0 -= mash(seed); + if (me.s0 < 0) { + me.s0 += 1; + } + me.s1 -= mash(seed); + if (me.s1 < 0) { + me.s1 += 1; + } + me.s2 -= mash(seed); + if (me.s2 < 0) { + me.s2 += 1; + } + mash = null; + } + function copy(f, t) { + t.c = f.c; + t.s0 = f.s0; + t.s1 = f.s1; + t.s2 = f.s2; + return t; + } + function impl(seed, opts) { + var xg = new Alea(seed), state = opts && opts.state, prng = xg.next; + prng.int32 = function() { + return xg.next() * 4294967296 | 0; + }; + prng.double = function() { + return prng() + (prng() * 2097152 | 0) * 11102230246251565e-32; + }; + prng.quick = prng; + if (state) { + if (typeof state == "object") + copy(state, xg); + prng.state = function() { + return copy(xg, {}); + }; + } + return prng; + } + function Mash() { + var n = 4022871197; + var mash = function(data2) { + data2 = data2.toString(); + for (var i = 0; i < data2.length; i++) { + n += data2.charCodeAt(i); + var h = 0.02519603282416938 * n; + n = h >>> 0; + h -= n; + h *= n; + n = h >>> 0; + h -= n; + n += h * 4294967296; + } + return (n >>> 0) * 23283064365386963e-26; + }; + return mash; + } + if (module2 && module2.exports) { + module2.exports = impl; + } else if (define2 && define2.amd) { + define2(function() { + return impl; + }); + } else { + this.alea = impl; + } + })(exports, typeof module == "object" && module, typeof define == "function" && define); +}); +var require_xor128 = __commonJS2((exports, module) => { + (function(global2, module2, define2) { + function XorGen(seed) { + var me = this, strseed = ""; + me.x = 0; + me.y = 0; + me.z = 0; + me.w = 0; + me.next = function() { + var t = me.x ^ me.x << 11; + me.x = me.y; + me.y = me.z; + me.z = me.w; + return me.w ^= me.w >>> 19 ^ t ^ t >>> 8; + }; + if (seed === (seed | 0)) { + me.x = seed; + } else { + strseed += seed; + } + for (var k = 0; k < strseed.length + 64; k++) { + me.x ^= strseed.charCodeAt(k) | 0; + me.next(); + } + } + function copy(f, t) { + t.x = f.x; + t.y = f.y; + t.z = f.z; + t.w = f.w; + return t; + } + function impl(seed, opts) { + var xg = new XorGen(seed), state = opts && opts.state, prng = function() { + return (xg.next() >>> 0) / 4294967296; + }; + prng.double = function() { + do { + var top = xg.next() >>> 11, bot = (xg.next() >>> 0) / 4294967296, result = (top + bot) / (1 << 21); + } while (result === 0); + return result; + }; + prng.int32 = xg.next; + prng.quick = prng; + if (state) { + if (typeof state == "object") + copy(state, xg); + prng.state = function() { + return copy(xg, {}); + }; + } + return prng; + } + if (module2 && module2.exports) { + module2.exports = impl; + } else if (define2 && define2.amd) { + define2(function() { + return impl; + }); + } else { + this.xor128 = impl; + } + })(exports, typeof module == "object" && module, typeof define == "function" && define); +}); +var require_xorwow = __commonJS2((exports, module) => { + (function(global2, module2, define2) { + function XorGen(seed) { + var me = this, strseed = ""; + me.next = function() { + var t = me.x ^ me.x >>> 2; + me.x = me.y; + me.y = me.z; + me.z = me.w; + me.w = me.v; + return (me.d = me.d + 362437 | 0) + (me.v = me.v ^ me.v << 4 ^ (t ^ t << 1)) | 0; + }; + me.x = 0; + me.y = 0; + me.z = 0; + me.w = 0; + me.v = 0; + if (seed === (seed | 0)) { + me.x = seed; + } else { + strseed += seed; + } + for (var k = 0; k < strseed.length + 64; k++) { + me.x ^= strseed.charCodeAt(k) | 0; + if (k == strseed.length) { + me.d = me.x << 10 ^ me.x >>> 4; + } + me.next(); + } + } + function copy(f, t) { + t.x = f.x; + t.y = f.y; + t.z = f.z; + t.w = f.w; + t.v = f.v; + t.d = f.d; + return t; + } + function impl(seed, opts) { + var xg = new XorGen(seed), state = opts && opts.state, prng = function() { + return (xg.next() >>> 0) / 4294967296; + }; + prng.double = function() { + do { + var top = xg.next() >>> 11, bot = (xg.next() >>> 0) / 4294967296, result = (top + bot) / (1 << 21); + } while (result === 0); + return result; + }; + prng.int32 = xg.next; + prng.quick = prng; + if (state) { + if (typeof state == "object") + copy(state, xg); + prng.state = function() { + return copy(xg, {}); + }; + } + return prng; + } + if (module2 && module2.exports) { + module2.exports = impl; + } else if (define2 && define2.amd) { + define2(function() { + return impl; + }); + } else { + this.xorwow = impl; + } + })(exports, typeof module == "object" && module, typeof define == "function" && define); +}); +var require_xorshift7 = __commonJS2((exports, module) => { + (function(global2, module2, define2) { + function XorGen(seed) { + var me = this; + me.next = function() { + var X = me.x, i = me.i, t, v, w; + t = X[i]; + t ^= t >>> 7; + v = t ^ t << 24; + t = X[i + 1 & 7]; + v ^= t ^ t >>> 10; + t = X[i + 3 & 7]; + v ^= t ^ t >>> 3; + t = X[i + 4 & 7]; + v ^= t ^ t << 7; + t = X[i + 7 & 7]; + t = t ^ t << 13; + v ^= t ^ t << 9; + X[i] = v; + me.i = i + 1 & 7; + return v; + }; + function init2(me2, seed2) { + var j, w, X = []; + if (seed2 === (seed2 | 0)) { + w = X[0] = seed2; + } else { + seed2 = "" + seed2; + for (j = 0; j < seed2.length; ++j) { + X[j & 7] = X[j & 7] << 15 ^ seed2.charCodeAt(j) + X[j + 1 & 7] << 13; + } + } + while (X.length < 8) + X.push(0); + for (j = 0; j < 8 && X[j] === 0; ++j) + ; + if (j == 8) + w = X[7] = -1; + else + w = X[j]; + me2.x = X; + me2.i = 0; + for (j = 256; j > 0; --j) { + me2.next(); + } + } + init2(me, seed); + } + function copy(f, t) { + t.x = f.x.slice(); + t.i = f.i; + return t; + } + function impl(seed, opts) { + if (seed == null) + seed = +new Date(); + var xg = new XorGen(seed), state = opts && opts.state, prng = function() { + return (xg.next() >>> 0) / 4294967296; + }; + prng.double = function() { + do { + var top = xg.next() >>> 11, bot = (xg.next() >>> 0) / 4294967296, result = (top + bot) / (1 << 21); + } while (result === 0); + return result; + }; + prng.int32 = xg.next; + prng.quick = prng; + if (state) { + if (state.x) + copy(state, xg); + prng.state = function() { + return copy(xg, {}); + }; + } + return prng; + } + if (module2 && module2.exports) { + module2.exports = impl; + } else if (define2 && define2.amd) { + define2(function() { + return impl; + }); + } else { + this.xorshift7 = impl; + } + })(exports, typeof module == "object" && module, typeof define == "function" && define); +}); +var require_xor4096 = __commonJS2((exports, module) => { + (function(global2, module2, define2) { + function XorGen(seed) { + var me = this; + me.next = function() { + var w = me.w, X = me.X, i = me.i, t, v; + me.w = w = w + 1640531527 | 0; + v = X[i + 34 & 127]; + t = X[i = i + 1 & 127]; + v ^= v << 13; + t ^= t << 17; + v ^= v >>> 15; + t ^= t >>> 12; + v = X[i] = v ^ t; + me.i = i; + return v + (w ^ w >>> 16) | 0; + }; + function init2(me2, seed2) { + var t, v, i, j, w, X = [], limit = 128; + if (seed2 === (seed2 | 0)) { + v = seed2; + seed2 = null; + } else { + seed2 = seed2 + "\0"; + v = 0; + limit = Math.max(limit, seed2.length); + } + for (i = 0, j = -32; j < limit; ++j) { + if (seed2) + v ^= seed2.charCodeAt((j + 32) % seed2.length); + if (j === 0) + w = v; + v ^= v << 10; + v ^= v >>> 15; + v ^= v << 4; + v ^= v >>> 13; + if (j >= 0) { + w = w + 1640531527 | 0; + t = X[j & 127] ^= v + w; + i = t == 0 ? i + 1 : 0; + } + } + if (i >= 128) { + X[(seed2 && seed2.length || 0) & 127] = -1; + } + i = 127; + for (j = 4 * 128; j > 0; --j) { + v = X[i + 34 & 127]; + t = X[i = i + 1 & 127]; + v ^= v << 13; + t ^= t << 17; + v ^= v >>> 15; + t ^= t >>> 12; + X[i] = v ^ t; + } + me2.w = w; + me2.X = X; + me2.i = i; + } + init2(me, seed); + } + function copy(f, t) { + t.i = f.i; + t.w = f.w; + t.X = f.X.slice(); + return t; + } + ; + function impl(seed, opts) { + if (seed == null) + seed = +new Date(); + var xg = new XorGen(seed), state = opts && opts.state, prng = function() { + return (xg.next() >>> 0) / 4294967296; + }; + prng.double = function() { + do { + var top = xg.next() >>> 11, bot = (xg.next() >>> 0) / 4294967296, result = (top + bot) / (1 << 21); + } while (result === 0); + return result; + }; + prng.int32 = xg.next; + prng.quick = prng; + if (state) { + if (state.X) + copy(state, xg); + prng.state = function() { + return copy(xg, {}); + }; + } + return prng; + } + if (module2 && module2.exports) { + module2.exports = impl; + } else if (define2 && define2.amd) { + define2(function() { + return impl; + }); + } else { + this.xor4096 = impl; + } + })(exports, typeof module == "object" && module, typeof define == "function" && define); +}); +var require_tychei = __commonJS2((exports, module) => { + (function(global2, module2, define2) { + function XorGen(seed) { + var me = this, strseed = ""; + me.next = function() { + var b = me.b, c = me.c, d = me.d, a = me.a; + b = b << 25 ^ b >>> 7 ^ c; + c = c - d | 0; + d = d << 24 ^ d >>> 8 ^ a; + a = a - b | 0; + me.b = b = b << 20 ^ b >>> 12 ^ c; + me.c = c = c - d | 0; + me.d = d << 16 ^ c >>> 16 ^ a; + return me.a = a - b | 0; + }; + me.a = 0; + me.b = 0; + me.c = 2654435769 | 0; + me.d = 1367130551; + if (seed === Math.floor(seed)) { + me.a = seed / 4294967296 | 0; + me.b = seed | 0; + } else { + strseed += seed; + } + for (var k = 0; k < strseed.length + 20; k++) { + me.b ^= strseed.charCodeAt(k) | 0; + me.next(); + } + } + function copy(f, t) { + t.a = f.a; + t.b = f.b; + t.c = f.c; + t.d = f.d; + return t; + } + ; + function impl(seed, opts) { + var xg = new XorGen(seed), state = opts && opts.state, prng = function() { + return (xg.next() >>> 0) / 4294967296; + }; + prng.double = function() { + do { + var top = xg.next() >>> 11, bot = (xg.next() >>> 0) / 4294967296, result = (top + bot) / (1 << 21); + } while (result === 0); + return result; + }; + prng.int32 = xg.next; + prng.quick = prng; + if (state) { + if (typeof state == "object") + copy(state, xg); + prng.state = function() { + return copy(xg, {}); + }; + } + return prng; + } + if (module2 && module2.exports) { + module2.exports = impl; + } else if (define2 && define2.amd) { + define2(function() { + return impl; + }); + } else { + this.tychei = impl; + } + })(exports, typeof module == "object" && module, typeof define == "function" && define); +}); +var require_crypto = __commonJS2(() => { +}); +var require_seedrandom = __commonJS2((exports, module) => { + (function(pool3, math) { + var global2 = this, width = 256, chunks = 6, digits = 52, rngname = "random", startdenom = math.pow(width, chunks), significance = math.pow(2, digits), overflow = significance * 2, mask = width - 1, nodecrypto; + function seedrandom5(seed, options, callback) { + var key = []; + options = options == true ? {entropy: true} : options || {}; + var shortseed = mixkey(flatten4(options.entropy ? [seed, tostring(pool3)] : seed == null ? autoseed() : seed, 3), key); + var arc4 = new ARC4(key); + var prng = function() { + var n = arc4.g(chunks), d = startdenom, x = 0; + while (n < significance) { + n = (n + x) * width; + d *= width; + x = arc4.g(1); + } + while (n >= overflow) { + n /= 2; + d /= 2; + x >>>= 1; + } + return (n + x) / d; + }; + prng.int32 = function() { + return arc4.g(4) | 0; + }; + prng.quick = function() { + return arc4.g(4) / 4294967296; + }; + prng.double = prng; + mixkey(tostring(arc4.S), pool3); + return (options.pass || callback || function(prng2, seed2, is_math_call, state) { + if (state) { + if (state.S) { + copy(state, arc4); + } + prng2.state = function() { + return copy(arc4, {}); + }; + } + if (is_math_call) { + math[rngname] = prng2; + return seed2; + } else + return prng2; + })(prng, shortseed, "global" in options ? options.global : this == math, options.state); + } + math["seed" + rngname] = seedrandom5; + function ARC4(key) { + var t, keylen = key.length, me = this, i = 0, j = me.i = me.j = 0, s = me.S = []; + if (!keylen) { + key = [keylen++]; + } + while (i < width) { + s[i] = i++; + } + for (i = 0; i < width; i++) { + s[i] = s[j = mask & j + key[i % keylen] + (t = s[i])]; + s[j] = t; + } + (me.g = function(count2) { + var t2, r = 0, i2 = me.i, j2 = me.j, s2 = me.S; + while (count2--) { + t2 = s2[i2 = mask & i2 + 1]; + r = r * width + s2[mask & (s2[i2] = s2[j2 = mask & j2 + t2]) + (s2[j2] = t2)]; + } + me.i = i2; + me.j = j2; + return r; + })(width); + } + function copy(f, t) { + t.i = f.i; + t.j = f.j; + t.S = f.S.slice(); + return t; + } + ; + function flatten4(obj, depth) { + var result = [], typ = typeof obj, prop; + if (depth && typ == "object") { + for (prop in obj) { + try { + result.push(flatten4(obj[prop], depth - 1)); + } catch (e) { + } + } + } + return result.length ? result : typ == "string" ? obj : obj + "\0"; + } + function mixkey(seed, key) { + var stringseed = seed + "", smear, j = 0; + while (j < stringseed.length) { + key[mask & j] = mask & (smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++); + } + return tostring(key); + } + function autoseed() { + try { + var out; + if (nodecrypto && (out = nodecrypto.randomBytes)) { + out = out(width); + } else { + out = new Uint8Array(width); + (global2.crypto || global2.msCrypto).getRandomValues(out); + } + return tostring(out); + } catch (e) { + var browser = global2.navigator, plugins = browser && browser.plugins; + return [+new Date(), global2, plugins, global2.screen, tostring(pool3)]; + } + } + function tostring(a) { + return String.fromCharCode.apply(0, a); + } + mixkey(math.random(), pool3); + if (typeof module == "object" && module.exports) { + module.exports = seedrandom5; + try { + nodecrypto = require_crypto(); + } catch (ex) { + } + } else if (typeof define == "function" && define.amd) { + define(function() { + return seedrandom5; + }); + } + })([], Math); +}); +var require_seedrandom2 = __commonJS2((exports, module) => { + var alea5 = require_alea(); + var xor128 = require_xor128(); + var xorwow = require_xorwow(); + var xorshift7 = require_xorshift7(); + var xor4096 = require_xor4096(); + var tychei = require_tychei(); + var sr = require_seedrandom(); + sr.alea = alea5; + sr.xor128 = xor128; + sr.xorwow = xorwow; + sr.xorshift7 = xorshift7; + sr.xor4096 = xor4096; + sr.tychei = tychei; + module.exports = sr; +}); +var require_path = __commonJS2(() => { +}); +var require_worker_threads = __commonJS2(() => { +}); +var require_perf_hooks = __commonJS2(() => { +}); +var require_tfjs_backend_wasm_threaded_simd = __commonJS2((exports, module) => { + var WasmBackendModuleThreadedSimd = function() { + var _scriptDir = typeof document !== "undefined" && document.currentScript ? document.currentScript.src : void 0; + if (typeof __filename !== "undefined") + _scriptDir = _scriptDir || __filename; + return function(WasmBackendModuleThreadedSimd2) { + WasmBackendModuleThreadedSimd2 = WasmBackendModuleThreadedSimd2 || {}; + function GROWABLE_HEAP_I8() { + if (wasmMemory.buffer != buffer2) { + updateGlobalBufferAndViews(wasmMemory.buffer); + } + return HEAP8; + } + function GROWABLE_HEAP_U8() { + if (wasmMemory.buffer != buffer2) { + updateGlobalBufferAndViews(wasmMemory.buffer); + } + return HEAPU8; + } + function GROWABLE_HEAP_I32() { + if (wasmMemory.buffer != buffer2) { + updateGlobalBufferAndViews(wasmMemory.buffer); + } + return HEAP32; + } + function GROWABLE_HEAP_U32() { + if (wasmMemory.buffer != buffer2) { + updateGlobalBufferAndViews(wasmMemory.buffer); + } + return HEAPU32; + } + function GROWABLE_HEAP_F64() { + if (wasmMemory.buffer != buffer2) { + updateGlobalBufferAndViews(wasmMemory.buffer); + } + return HEAPF64; + } + var Module = typeof WasmBackendModuleThreadedSimd2 !== "undefined" ? WasmBackendModuleThreadedSimd2 : {}; + var readyPromiseResolve, readyPromiseReject; + Module["ready"] = new Promise(function(resolve, reject) { + readyPromiseResolve = resolve; + readyPromiseReject = reject; + }); + var moduleOverrides = {}; + var key; + for (key in Module) { + if (Module.hasOwnProperty(key)) { + moduleOverrides[key] = Module[key]; + } + } + var arguments_ = []; + var thisProgram = "./this.program"; + var quit_ = function(status, toThrow) { + throw toThrow; + }; + var ENVIRONMENT_IS_WEB = false; + var ENVIRONMENT_IS_WORKER = false; + var ENVIRONMENT_IS_NODE = false; + var ENVIRONMENT_IS_SHELL = false; + ENVIRONMENT_IS_WEB = typeof window === "object"; + ENVIRONMENT_IS_WORKER = typeof importScripts === "function"; + ENVIRONMENT_IS_NODE = typeof process === "object" && typeof process.versions === "object" && typeof process.versions.node === "string"; + ENVIRONMENT_IS_SHELL = !ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_NODE && !ENVIRONMENT_IS_WORKER; + var ENVIRONMENT_IS_PTHREAD = Module["ENVIRONMENT_IS_PTHREAD"] || false; + if (ENVIRONMENT_IS_PTHREAD) { + buffer2 = Module["buffer"]; + } + var scriptDirectory = ""; + function locateFile(path) { + if (Module["locateFile"]) { + return Module["locateFile"](path, scriptDirectory); + } + return scriptDirectory + path; + } + var read_, readAsync, readBinary, setWindowTitle; + var nodeFS; + var nodePath; + if (ENVIRONMENT_IS_NODE) { + if (ENVIRONMENT_IS_WORKER) { + scriptDirectory = require_path().dirname(scriptDirectory) + "/"; + } else { + scriptDirectory = __dirname + "/"; + } + read_ = function shell_read(filename, binary) { + if (!nodeFS) + nodeFS = require("fs"); + if (!nodePath) + nodePath = require_path(); + filename = nodePath["normalize"](filename); + return nodeFS["readFileSync"](filename, binary ? null : "utf8"); + }; + readBinary = function readBinary2(filename) { + var ret = read_(filename, true); + if (!ret.buffer) { + ret = new Uint8Array(ret); + } + assert3(ret.buffer); + return ret; + }; + if (process["argv"].length > 1) { + thisProgram = process["argv"][1].replace(/\\/g, "/"); + } + arguments_ = process["argv"].slice(2); + process["on"]("uncaughtException", function(ex) { + if (!(ex instanceof ExitStatus)) { + throw ex; + } + }); + process["on"]("unhandledRejection", abort); + quit_ = function(status) { + process["exit"](status); + }; + Module["inspect"] = function() { + return "[Emscripten Module object]"; + }; + var nodeWorkerThreads; + try { + nodeWorkerThreads = require_worker_threads(); + } catch (e) { + console.error('The "worker_threads" module is not supported in this node.js build - perhaps a newer version is needed?'); + throw e; + } + global.Worker = nodeWorkerThreads.Worker; + } else if (ENVIRONMENT_IS_SHELL) { + if (typeof read != "undefined") { + read_ = function shell_read(f) { + return read(f); + }; + } + readBinary = function readBinary2(f) { + var data2; + if (typeof readbuffer === "function") { + return new Uint8Array(readbuffer(f)); + } + data2 = read(f, "binary"); + assert3(typeof data2 === "object"); + return data2; + }; + if (typeof scriptArgs != "undefined") { + arguments_ = scriptArgs; + } else if (typeof arguments != "undefined") { + arguments_ = arguments; + } + if (typeof quit === "function") { + quit_ = function(status) { + quit(status); + }; + } + if (typeof print !== "undefined") { + if (typeof console === "undefined") + console = {}; + console.log = print; + console.warn = console.error = typeof printErr !== "undefined" ? printErr : print; + } + } else if (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) { + if (ENVIRONMENT_IS_WORKER) { + scriptDirectory = self.location.href; + } else if (typeof document !== "undefined" && document.currentScript) { + scriptDirectory = document.currentScript.src; + } + if (typeof _scriptDir !== "undefined" && _scriptDir) { + scriptDirectory = _scriptDir; + } + if (scriptDirectory.indexOf("blob:") !== 0) { + scriptDirectory = scriptDirectory.substr(0, scriptDirectory.lastIndexOf("/") + 1); + } else { + scriptDirectory = ""; + } + if (ENVIRONMENT_IS_NODE) { + read_ = function shell_read(filename, binary) { + if (!nodeFS) + nodeFS = require("fs"); + if (!nodePath) + nodePath = require_path(); + filename = nodePath["normalize"](filename); + return nodeFS["readFileSync"](filename, binary ? null : "utf8"); + }; + readBinary = function readBinary2(filename) { + var ret = read_(filename, true); + if (!ret.buffer) { + ret = new Uint8Array(ret); + } + assert3(ret.buffer); + return ret; + }; + } else { + read_ = function(url) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", url, false); + xhr.send(null); + return xhr.responseText; + }; + if (ENVIRONMENT_IS_WORKER) { + readBinary = function(url) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", url, false); + xhr.responseType = "arraybuffer"; + xhr.send(null); + return new Uint8Array(xhr.response); + }; + } + readAsync = function(url, onload, onerror) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", url, true); + xhr.responseType = "arraybuffer"; + xhr.onload = function() { + if (xhr.status == 200 || xhr.status == 0 && xhr.response) { + onload(xhr.response); + return; + } + onerror(); + }; + xhr.onerror = onerror; + xhr.send(null); + }; + } + setWindowTitle = function(title) { + document.title = title; + }; + } else { + } + if (ENVIRONMENT_IS_NODE) { + if (typeof performance === "undefined") { + global.performance = require_perf_hooks().performance; + } + } + var out = Module["print"] || console.log.bind(console); + var err = Module["printErr"] || console.warn.bind(console); + for (key in moduleOverrides) { + if (moduleOverrides.hasOwnProperty(key)) { + Module[key] = moduleOverrides[key]; + } + } + moduleOverrides = null; + if (Module["arguments"]) + arguments_ = Module["arguments"]; + if (Module["thisProgram"]) + thisProgram = Module["thisProgram"]; + if (Module["quit"]) + quit_ = Module["quit"]; + var Atomics_load = Atomics.load; + var Atomics_store = Atomics.store; + var Atomics_compareExchange = Atomics.compareExchange; + var wasmBinary; + if (Module["wasmBinary"]) + wasmBinary = Module["wasmBinary"]; + var noExitRuntime = Module["noExitRuntime"] || true; + if (typeof WebAssembly !== "object") { + abort("no native wasm support detected"); + } + var wasmMemory; + var wasmModule; + var ABORT = false; + var EXITSTATUS; + function assert3(condition, text) { + if (!condition) { + abort("Assertion failed: " + text); + } + } + function getCFunc(ident) { + var func2 = Module["_" + ident]; + assert3(func2, "Cannot call unknown function " + ident + ", make sure it is exported"); + return func2; + } + function ccall(ident, returnType, argTypes, args, opts) { + var toC = {string: function(str) { + var ret2 = 0; + if (str !== null && str !== void 0 && str !== 0) { + var len = (str.length << 2) + 1; + ret2 = stackAlloc(len); + stringToUTF8(str, ret2, len); + } + return ret2; + }, array: function(arr) { + var ret2 = stackAlloc(arr.length); + writeArrayToMemory(arr, ret2); + return ret2; + }}; + function convertReturnValue(ret2) { + if (returnType === "string") + return UTF8ToString(ret2); + if (returnType === "boolean") + return Boolean(ret2); + return ret2; + } + var func2 = getCFunc(ident); + var cArgs = []; + var stack2 = 0; + if (args) { + for (var i = 0; i < args.length; i++) { + var converter = toC[argTypes[i]]; + if (converter) { + if (stack2 === 0) + stack2 = stackSave(); + cArgs[i] = converter(args[i]); + } else { + cArgs[i] = args[i]; + } + } + } + var ret = func2.apply(null, cArgs); + ret = convertReturnValue(ret); + if (stack2 !== 0) + stackRestore(stack2); + return ret; + } + function cwrap(ident, returnType, argTypes, opts) { + argTypes = argTypes || []; + var numericArgs = argTypes.every(function(type) { + return type === "number"; + }); + var numericRet = returnType !== "string"; + if (numericRet && numericArgs && !opts) { + return getCFunc(ident); + } + return function() { + return ccall(ident, returnType, argTypes, arguments, opts); + }; + } + function UTF8ArrayToString(heap, idx, maxBytesToRead) { + var endIdx = idx + maxBytesToRead; + var str = ""; + while (!(idx >= endIdx)) { + var u0 = heap[idx++]; + if (!u0) + return str; + if (!(u0 & 128)) { + str += String.fromCharCode(u0); + continue; + } + var u1 = heap[idx++] & 63; + if ((u0 & 224) == 192) { + str += String.fromCharCode((u0 & 31) << 6 | u1); + continue; + } + var u2 = heap[idx++] & 63; + if ((u0 & 240) == 224) { + u0 = (u0 & 15) << 12 | u1 << 6 | u2; + } else { + u0 = (u0 & 7) << 18 | u1 << 12 | u2 << 6 | heap[idx++] & 63; + } + if (u0 < 65536) { + str += String.fromCharCode(u0); + } else { + var ch = u0 - 65536; + str += String.fromCharCode(55296 | ch >> 10, 56320 | ch & 1023); + } + } + return str; + } + function UTF8ToString(ptr, maxBytesToRead) { + return ptr ? UTF8ArrayToString(GROWABLE_HEAP_U8(), ptr, maxBytesToRead) : ""; + } + function stringToUTF8Array(str, heap, outIdx, maxBytesToWrite) { + if (!(maxBytesToWrite > 0)) + return 0; + var startIdx = outIdx; + var endIdx = outIdx + maxBytesToWrite - 1; + for (var i = 0; i < str.length; ++i) { + var u = str.charCodeAt(i); + if (u >= 55296 && u <= 57343) { + var u1 = str.charCodeAt(++i); + u = 65536 + ((u & 1023) << 10) | u1 & 1023; + } + if (u <= 127) { + if (outIdx >= endIdx) + break; + heap[outIdx++] = u; + } else if (u <= 2047) { + if (outIdx + 1 >= endIdx) + break; + heap[outIdx++] = 192 | u >> 6; + heap[outIdx++] = 128 | u & 63; + } else if (u <= 65535) { + if (outIdx + 2 >= endIdx) + break; + heap[outIdx++] = 224 | u >> 12; + heap[outIdx++] = 128 | u >> 6 & 63; + heap[outIdx++] = 128 | u & 63; + } else { + if (outIdx + 3 >= endIdx) + break; + heap[outIdx++] = 240 | u >> 18; + heap[outIdx++] = 128 | u >> 12 & 63; + heap[outIdx++] = 128 | u >> 6 & 63; + heap[outIdx++] = 128 | u & 63; + } + } + heap[outIdx] = 0; + return outIdx - startIdx; + } + function stringToUTF8(str, outPtr, maxBytesToWrite) { + return stringToUTF8Array(str, GROWABLE_HEAP_U8(), outPtr, maxBytesToWrite); + } + function lengthBytesUTF8(str) { + var len = 0; + for (var i = 0; i < str.length; ++i) { + var u = str.charCodeAt(i); + if (u >= 55296 && u <= 57343) + u = 65536 + ((u & 1023) << 10) | str.charCodeAt(++i) & 1023; + if (u <= 127) + ++len; + else if (u <= 2047) + len += 2; + else if (u <= 65535) + len += 3; + else + len += 4; + } + return len; + } + function writeArrayToMemory(array2, buffer3) { + GROWABLE_HEAP_I8().set(array2, buffer3); + } + function alignUp(x, multiple) { + if (x % multiple > 0) { + x += multiple - x % multiple; + } + return x; + } + var buffer2, HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64; + function updateGlobalBufferAndViews(buf) { + buffer2 = buf; + Module["HEAP8"] = HEAP8 = new Int8Array(buf); + Module["HEAP16"] = HEAP16 = new Int16Array(buf); + Module["HEAP32"] = HEAP32 = new Int32Array(buf); + Module["HEAPU8"] = HEAPU8 = new Uint8Array(buf); + Module["HEAPU16"] = HEAPU16 = new Uint16Array(buf); + Module["HEAPU32"] = HEAPU32 = new Uint32Array(buf); + Module["HEAPF32"] = HEAPF32 = new Float32Array(buf); + Module["HEAPF64"] = HEAPF64 = new Float64Array(buf); + } + var INITIAL_MEMORY = Module["INITIAL_MEMORY"] || 16777216; + if (ENVIRONMENT_IS_PTHREAD) { + wasmMemory = Module["wasmMemory"]; + buffer2 = Module["buffer"]; + } else { + if (Module["wasmMemory"]) { + wasmMemory = Module["wasmMemory"]; + } else { + wasmMemory = new WebAssembly.Memory({initial: INITIAL_MEMORY / 65536, maximum: 2147483648 / 65536, shared: true}); + if (!(wasmMemory.buffer instanceof SharedArrayBuffer)) { + err("requested a shared WebAssembly.Memory but the returned buffer is not a SharedArrayBuffer, indicating that while the browser has SharedArrayBuffer it does not have WebAssembly threads support - you may need to set a flag"); + if (ENVIRONMENT_IS_NODE) { + console.log("(on node you may need: --experimental-wasm-threads --experimental-wasm-bulk-memory and also use a recent version)"); + } + throw Error("bad memory"); + } + } + } + if (wasmMemory) { + buffer2 = wasmMemory.buffer; + } + INITIAL_MEMORY = buffer2.byteLength; + updateGlobalBufferAndViews(buffer2); + var wasmTable; + var __ATPRERUN__ = []; + var __ATINIT__ = []; + var __ATMAIN__ = []; + var __ATEXIT__ = []; + var __ATPOSTRUN__ = []; + var runtimeInitialized = false; + var runtimeExited = false; + if (!ENVIRONMENT_IS_PTHREAD) + __ATINIT__.push({func: function() { + ___wasm_call_ctors(); + }}); + if (ENVIRONMENT_IS_PTHREAD) + runtimeInitialized = true; + function preRun() { + if (ENVIRONMENT_IS_PTHREAD) + return; + if (Module["preRun"]) { + if (typeof Module["preRun"] == "function") + Module["preRun"] = [Module["preRun"]]; + while (Module["preRun"].length) { + addOnPreRun(Module["preRun"].shift()); + } + } + callRuntimeCallbacks(__ATPRERUN__); + } + function initRuntime() { + runtimeInitialized = true; + callRuntimeCallbacks(__ATINIT__); + } + function preMain() { + if (ENVIRONMENT_IS_PTHREAD) + return; + callRuntimeCallbacks(__ATMAIN__); + } + function exitRuntime() { + if (ENVIRONMENT_IS_PTHREAD) + return; + runtimeExited = true; + } + function postRun() { + if (ENVIRONMENT_IS_PTHREAD) + return; + if (Module["postRun"]) { + if (typeof Module["postRun"] == "function") + Module["postRun"] = [Module["postRun"]]; + while (Module["postRun"].length) { + addOnPostRun(Module["postRun"].shift()); + } + } + callRuntimeCallbacks(__ATPOSTRUN__); + } + function addOnPreRun(cb) { + __ATPRERUN__.unshift(cb); + } + function addOnPostRun(cb) { + __ATPOSTRUN__.unshift(cb); + } + var runDependencies = 0; + var runDependencyWatcher = null; + var dependenciesFulfilled = null; + function addRunDependency(id) { + assert3(!ENVIRONMENT_IS_PTHREAD, "addRunDependency cannot be used in a pthread worker"); + runDependencies++; + if (Module["monitorRunDependencies"]) { + Module["monitorRunDependencies"](runDependencies); + } + } + function removeRunDependency(id) { + runDependencies--; + if (Module["monitorRunDependencies"]) { + Module["monitorRunDependencies"](runDependencies); + } + if (runDependencies == 0) { + if (runDependencyWatcher !== null) { + clearInterval(runDependencyWatcher); + runDependencyWatcher = null; + } + if (dependenciesFulfilled) { + var callback = dependenciesFulfilled; + dependenciesFulfilled = null; + callback(); + } + } + } + Module["preloadedImages"] = {}; + Module["preloadedAudios"] = {}; + function abort(what) { + if (Module["onAbort"]) { + Module["onAbort"](what); + } + if (ENVIRONMENT_IS_PTHREAD) + console.error("Pthread aborting at " + new Error().stack); + what += ""; + err(what); + ABORT = true; + EXITSTATUS = 1; + what = "abort(" + what + "). Build with -s ASSERTIONS=1 for more info."; + var e = new WebAssembly.RuntimeError(what); + readyPromiseReject(e); + throw e; + } + function hasPrefix(str, prefix) { + return String.prototype.startsWith ? str.startsWith(prefix) : str.indexOf(prefix) === 0; + } + var dataURIPrefix = "data:application/octet-stream;base64,"; + function isDataURI(filename) { + return hasPrefix(filename, dataURIPrefix); + } + var fileURIPrefix = "file://"; + function isFileURI(filename) { + return hasPrefix(filename, fileURIPrefix); + } + var wasmBinaryFile = "tfjs-backend-wasm-threaded-simd.wasm"; + if (!isDataURI(wasmBinaryFile)) { + wasmBinaryFile = locateFile(wasmBinaryFile); + } + function getBinary(file) { + try { + if (file == wasmBinaryFile && wasmBinary) { + return new Uint8Array(wasmBinary); + } + if (readBinary) { + return readBinary(file); + } else { + throw "both async and sync fetching of the wasm failed"; + } + } catch (err2) { + abort(err2); + } + } + function getBinaryPromise() { + if (!wasmBinary && (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER)) { + if (typeof fetch === "function" && !isFileURI(wasmBinaryFile)) { + return fetch(wasmBinaryFile, {credentials: "same-origin"}).then(function(response) { + if (!response["ok"]) { + throw "failed to load wasm binary file at '" + wasmBinaryFile + "'"; + } + return response["arrayBuffer"](); + }).catch(function() { + return getBinary(wasmBinaryFile); + }); + } else { + if (readAsync) { + return new Promise(function(resolve, reject) { + readAsync(wasmBinaryFile, function(response) { + resolve(new Uint8Array(response)); + }, reject); + }); + } + } + } + return Promise.resolve().then(function() { + return getBinary(wasmBinaryFile); + }); + } + function createWasm() { + var info2 = {a: asmLibraryArg}; + function receiveInstance(instance, module2) { + var exports3 = instance.exports; + Module["asm"] = exports3; + wasmTable = Module["asm"]["F"]; + wasmModule = module2; + if (!ENVIRONMENT_IS_PTHREAD) { + var numWorkersToLoad = PThread.unusedWorkers.length; + PThread.unusedWorkers.forEach(function(w) { + PThread.loadWasmModuleToWorker(w, function() { + if (!--numWorkersToLoad) + removeRunDependency("wasm-instantiate"); + }); + }); + } + } + if (!ENVIRONMENT_IS_PTHREAD) { + addRunDependency("wasm-instantiate"); + } + function receiveInstantiatedSource(output) { + receiveInstance(output["instance"], output["module"]); + } + function instantiateArrayBuffer(receiver) { + return getBinaryPromise().then(function(binary) { + return WebAssembly.instantiate(binary, info2); + }).then(receiver, function(reason) { + err("failed to asynchronously prepare wasm: " + reason); + abort(reason); + }); + } + function instantiateAsync() { + if (!wasmBinary && typeof WebAssembly.instantiateStreaming === "function" && !isDataURI(wasmBinaryFile) && !isFileURI(wasmBinaryFile) && typeof fetch === "function") { + return fetch(wasmBinaryFile, {credentials: "same-origin"}).then(function(response) { + var result = WebAssembly.instantiateStreaming(response, info2); + return result.then(receiveInstantiatedSource, function(reason) { + err("wasm streaming compile failed: " + reason); + err("falling back to ArrayBuffer instantiation"); + return instantiateArrayBuffer(receiveInstantiatedSource); + }); + }); + } else { + return instantiateArrayBuffer(receiveInstantiatedSource); + } + } + if (Module["instantiateWasm"]) { + try { + var exports2 = Module["instantiateWasm"](info2, receiveInstance); + return exports2; + } catch (e) { + err("Module.instantiateWasm callback failed with error: " + e); + return false; + } + } + instantiateAsync().catch(readyPromiseReject); + return {}; + } + var ASM_CONSTS = {8991: function($0, $1) { + setTimeout(function() { + __emscripten_do_dispatch_to_thread($0, $1); + }, 0); + }}; + function initPthreadsJS() { + PThread.initRuntime(); + } + function callRuntimeCallbacks(callbacks2) { + while (callbacks2.length > 0) { + var callback = callbacks2.shift(); + if (typeof callback == "function") { + callback(Module); + continue; + } + var func2 = callback.func; + if (typeof func2 === "number") { + if (callback.arg === void 0) { + wasmTable.get(func2)(); + } else { + wasmTable.get(func2)(callback.arg); + } + } else { + func2(callback.arg === void 0 ? null : callback.arg); + } + } + } + function _emscripten_futex_wake(addr, count2) { + if (addr <= 0 || addr > GROWABLE_HEAP_I8().length || addr & true || count2 < 0) + return -28; + if (count2 == 0) + return 0; + if (count2 >= 2147483647) + count2 = Infinity; + var mainThreadWaitAddress = Atomics.load(GROWABLE_HEAP_I32(), __emscripten_main_thread_futex >> 2); + var mainThreadWoken = 0; + if (mainThreadWaitAddress == addr) { + var loadedAddr = Atomics.compareExchange(GROWABLE_HEAP_I32(), __emscripten_main_thread_futex >> 2, mainThreadWaitAddress, 0); + if (loadedAddr == mainThreadWaitAddress) { + --count2; + mainThreadWoken = 1; + if (count2 <= 0) + return 1; + } + } + var ret = Atomics.notify(GROWABLE_HEAP_I32(), addr >> 2, count2); + if (ret >= 0) + return ret + mainThreadWoken; + throw "Atomics.notify returned an unexpected value " + ret; + } + Module["_emscripten_futex_wake"] = _emscripten_futex_wake; + function killThread(pthread_ptr) { + if (ENVIRONMENT_IS_PTHREAD) + throw "Internal Error! killThread() can only ever be called from main application thread!"; + if (!pthread_ptr) + throw "Internal Error! Null pthread_ptr in killThread!"; + GROWABLE_HEAP_I32()[pthread_ptr + 12 >> 2] = 0; + var pthread = PThread.pthreads[pthread_ptr]; + pthread.worker.terminate(); + PThread.freeThreadData(pthread); + PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(pthread.worker), 1); + pthread.worker.pthread = void 0; + } + function cancelThread(pthread_ptr) { + if (ENVIRONMENT_IS_PTHREAD) + throw "Internal Error! cancelThread() can only ever be called from main application thread!"; + if (!pthread_ptr) + throw "Internal Error! Null pthread_ptr in cancelThread!"; + var pthread = PThread.pthreads[pthread_ptr]; + pthread.worker.postMessage({cmd: "cancel"}); + } + function cleanupThread(pthread_ptr) { + if (ENVIRONMENT_IS_PTHREAD) + throw "Internal Error! cleanupThread() can only ever be called from main application thread!"; + if (!pthread_ptr) + throw "Internal Error! Null pthread_ptr in cleanupThread!"; + GROWABLE_HEAP_I32()[pthread_ptr + 12 >> 2] = 0; + var pthread = PThread.pthreads[pthread_ptr]; + if (pthread) { + var worker = pthread.worker; + PThread.returnWorkerToPool(worker); + } + } + var PThread = {unusedWorkers: [], runningWorkers: [], initMainThreadBlock: function() { + var pthreadPoolSize = 8; + for (var i = 0; i < pthreadPoolSize; ++i) { + PThread.allocateUnusedWorker(); + } + }, initRuntime: function() { + var tb = _malloc(228); + for (var i = 0; i < 228 / 4; ++i) + GROWABLE_HEAP_U32()[tb / 4 + i] = 0; + GROWABLE_HEAP_I32()[tb + 12 >> 2] = tb; + var headPtr = tb + 152; + GROWABLE_HEAP_I32()[headPtr >> 2] = headPtr; + var tlsMemory = _malloc(512); + for (var i = 0; i < 128; ++i) + GROWABLE_HEAP_U32()[tlsMemory / 4 + i] = 0; + Atomics.store(GROWABLE_HEAP_U32(), tb + 100 >> 2, tlsMemory); + Atomics.store(GROWABLE_HEAP_U32(), tb + 40 >> 2, tb); + __emscripten_thread_init(tb, !ENVIRONMENT_IS_WORKER, 1); + _emscripten_register_main_browser_thread_id(tb); + }, initWorker: function() { + }, pthreads: {}, threadExitHandlers: [], setThreadStatus: function() { + }, runExitHandlers: function() { + while (PThread.threadExitHandlers.length > 0) { + PThread.threadExitHandlers.pop()(); + } + if (ENVIRONMENT_IS_PTHREAD && _pthread_self()) + ___pthread_tsd_run_dtors(); + }, threadExit: function(exitCode) { + var tb = _pthread_self(); + if (tb) { + Atomics.store(GROWABLE_HEAP_U32(), tb + 4 >> 2, exitCode); + Atomics.store(GROWABLE_HEAP_U32(), tb + 0 >> 2, 1); + Atomics.store(GROWABLE_HEAP_U32(), tb + 56 >> 2, 1); + Atomics.store(GROWABLE_HEAP_U32(), tb + 60 >> 2, 0); + PThread.runExitHandlers(); + _emscripten_futex_wake(tb + 0, 2147483647); + __emscripten_thread_init(0, 0, 0); + if (ENVIRONMENT_IS_PTHREAD) { + postMessage({cmd: "exit"}); + } + } + }, threadCancel: function() { + PThread.runExitHandlers(); + var tb = _pthread_self(); + Atomics.store(GROWABLE_HEAP_U32(), tb + 4 >> 2, -1); + Atomics.store(GROWABLE_HEAP_U32(), tb + 0 >> 2, 1); + _emscripten_futex_wake(tb + 0, 2147483647); + __emscripten_thread_init(0, 0, 0); + postMessage({cmd: "cancelDone"}); + }, terminateAllThreads: function() { + for (var t in PThread.pthreads) { + var pthread = PThread.pthreads[t]; + if (pthread && pthread.worker) { + PThread.returnWorkerToPool(pthread.worker); + } + } + PThread.pthreads = {}; + for (var i = 0; i < PThread.unusedWorkers.length; ++i) { + var worker = PThread.unusedWorkers[i]; + worker.terminate(); + } + PThread.unusedWorkers = []; + for (var i = 0; i < PThread.runningWorkers.length; ++i) { + var worker = PThread.runningWorkers[i]; + var pthread = worker.pthread; + PThread.freeThreadData(pthread); + worker.terminate(); + } + PThread.runningWorkers = []; + }, freeThreadData: function(pthread) { + if (!pthread) + return; + if (pthread.threadInfoStruct) { + var tlsMemory = GROWABLE_HEAP_I32()[pthread.threadInfoStruct + 100 >> 2]; + GROWABLE_HEAP_I32()[pthread.threadInfoStruct + 100 >> 2] = 0; + _free(tlsMemory); + _free(pthread.threadInfoStruct); + } + pthread.threadInfoStruct = 0; + if (pthread.allocatedOwnStack && pthread.stackBase) + _free(pthread.stackBase); + pthread.stackBase = 0; + if (pthread.worker) + pthread.worker.pthread = null; + }, returnWorkerToPool: function(worker) { + PThread.runWithoutMainThreadQueuedCalls(function() { + delete PThread.pthreads[worker.pthread.threadInfoStruct]; + PThread.unusedWorkers.push(worker); + PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(worker), 1); + PThread.freeThreadData(worker.pthread); + worker.pthread = void 0; + }); + }, runWithoutMainThreadQueuedCalls: function(func2) { + GROWABLE_HEAP_I32()[__emscripten_allow_main_runtime_queued_calls >> 2] = 0; + try { + func2(); + } finally { + GROWABLE_HEAP_I32()[__emscripten_allow_main_runtime_queued_calls >> 2] = 1; + } + }, receiveObjectTransfer: function(data2) { + }, loadWasmModuleToWorker: function(worker, onFinishedLoading) { + worker.onmessage = function(e) { + var d = e["data"]; + var cmd = d["cmd"]; + if (worker.pthread) + PThread.currentProxiedOperationCallerThread = worker.pthread.threadInfoStruct; + if (d["targetThread"] && d["targetThread"] != _pthread_self()) { + var thread = PThread.pthreads[d.targetThread]; + if (thread) { + thread.worker.postMessage(e.data, d["transferList"]); + } else { + console.error('Internal error! Worker sent a message "' + cmd + '" to target pthread ' + d["targetThread"] + ", but that thread no longer exists!"); + } + PThread.currentProxiedOperationCallerThread = void 0; + return; + } + if (cmd === "processQueuedMainThreadWork") { + _emscripten_main_thread_process_queued_calls(); + } else if (cmd === "spawnThread") { + spawnThread(e.data); + } else if (cmd === "cleanupThread") { + cleanupThread(d["thread"]); + } else if (cmd === "killThread") { + killThread(d["thread"]); + } else if (cmd === "cancelThread") { + cancelThread(d["thread"]); + } else if (cmd === "loaded") { + worker.loaded = true; + if (onFinishedLoading) + onFinishedLoading(worker); + if (worker.runPthread) { + worker.runPthread(); + delete worker.runPthread; + } + } else if (cmd === "print") { + out("Thread " + d["threadId"] + ": " + d["text"]); + } else if (cmd === "printErr") { + err("Thread " + d["threadId"] + ": " + d["text"]); + } else if (cmd === "alert") { + alert("Thread " + d["threadId"] + ": " + d["text"]); + } else if (cmd === "exit") { + var detached = worker.pthread && Atomics.load(GROWABLE_HEAP_U32(), worker.pthread.threadInfoStruct + 64 >> 2); + if (detached) { + PThread.returnWorkerToPool(worker); + } + } else if (cmd === "exitProcess") { + try { + exit(d["returnCode"]); + } catch (e2) { + if (e2 instanceof ExitStatus) + return; + throw e2; + } + } else if (cmd === "cancelDone") { + PThread.returnWorkerToPool(worker); + } else if (cmd === "objectTransfer") { + PThread.receiveObjectTransfer(e.data); + } else if (e.data.target === "setimmediate") { + worker.postMessage(e.data); + } else { + err("worker sent an unknown command " + cmd); + } + PThread.currentProxiedOperationCallerThread = void 0; + }; + worker.onerror = function(e) { + err("pthread sent an error! " + e.filename + ":" + e.lineno + ": " + e.message); + }; + if (ENVIRONMENT_IS_NODE) { + worker.on("message", function(data2) { + worker.onmessage({data: data2}); + }); + worker.on("error", function(data2) { + worker.onerror(data2); + }); + worker.on("exit", function(data2) { + }); + } + worker.postMessage({cmd: "load", urlOrBlob: Module["mainScriptUrlOrBlob"] || _scriptDir, wasmMemory, wasmModule}); + }, allocateUnusedWorker: function() { + var pthreadMainJs = locateFile("tfjs-backend-wasm-threaded-simd.worker.js"); + PThread.unusedWorkers.push(new Worker(pthreadMainJs)); + }, getNewWorker: function() { + if (PThread.unusedWorkers.length == 0) { + PThread.allocateUnusedWorker(); + PThread.loadWasmModuleToWorker(PThread.unusedWorkers[0]); + } + if (PThread.unusedWorkers.length > 0) + return PThread.unusedWorkers.pop(); + else + return null; + }, busySpinWait: function(msecs) { + var t = performance.now() + msecs; + while (performance.now() < t) { + } + }}; + function establishStackSpace(stackTop, stackMax) { + _emscripten_stack_set_limits(stackTop, stackMax); + stackRestore(stackTop); + } + Module["establishStackSpace"] = establishStackSpace; + function getNoExitRuntime() { + return noExitRuntime; + } + Module["getNoExitRuntime"] = getNoExitRuntime; + function invokeEntryPoint(ptr, arg) { + return wasmTable.get(ptr)(arg); + } + Module["invokeEntryPoint"] = invokeEntryPoint; + function ___assert_fail(condition, filename, line, func2) { + abort("Assertion failed: " + UTF8ToString(condition) + ", at: " + [filename ? UTF8ToString(filename) : "unknown filename", line, func2 ? UTF8ToString(func2) : "unknown function"]); + } + function ___call_main(argc, argv) { + var returnCode = _main(argc, argv); + } + var _emscripten_get_now; + if (ENVIRONMENT_IS_NODE) { + _emscripten_get_now = function() { + var t = process["hrtime"](); + return t[0] * 1e3 + t[1] / 1e6; + }; + } else if (ENVIRONMENT_IS_PTHREAD) { + _emscripten_get_now = function() { + return performance.now() - Module["__performance_now_clock_drift"]; + }; + } else if (typeof dateNow !== "undefined") { + _emscripten_get_now = dateNow; + } else + _emscripten_get_now = function() { + return performance.now(); + }; + function setErrNo(value) { + GROWABLE_HEAP_I32()[___errno_location() >> 2] = value; + return value; + } + function _atexit(func2, arg) { + if (ENVIRONMENT_IS_PTHREAD) + return _emscripten_proxy_to_main_thread_js(1, 1, func2, arg); + } + function __emscripten_notify_thread_queue(targetThreadId, mainThreadId) { + if (targetThreadId == mainThreadId) { + postMessage({cmd: "processQueuedMainThreadWork"}); + } else if (ENVIRONMENT_IS_PTHREAD) { + postMessage({targetThread: targetThreadId, cmd: "processThreadQueue"}); + } else { + var pthread = PThread.pthreads[targetThreadId]; + var worker = pthread && pthread.worker; + if (!worker) { + return; + } + worker.postMessage({cmd: "processThreadQueue"}); + } + return 1; + } + function _abort() { + abort(); + } + function _emscripten_asm_const_int(code, sigPtr, argbuf) { + var args = readAsmConstArgs(sigPtr, argbuf); + return ASM_CONSTS[code].apply(null, args); + } + function _emscripten_conditional_set_current_thread_status(expectedStatus, newStatus) { + } + function _emscripten_futex_wait(addr, val, timeout) { + if (addr <= 0 || addr > GROWABLE_HEAP_I8().length || addr & true) + return -28; + if (!ENVIRONMENT_IS_WEB) { + var ret = Atomics.wait(GROWABLE_HEAP_I32(), addr >> 2, val, timeout); + if (ret === "timed-out") + return -73; + if (ret === "not-equal") + return -6; + if (ret === "ok") + return 0; + throw "Atomics.wait returned an unexpected value " + ret; + } else { + if (Atomics.load(GROWABLE_HEAP_I32(), addr >> 2) != val) { + return -6; + } + var tNow = performance.now(); + var tEnd = tNow + timeout; + var lastAddr = Atomics.exchange(GROWABLE_HEAP_I32(), __emscripten_main_thread_futex >> 2, addr); + while (1) { + tNow = performance.now(); + if (tNow > tEnd) { + lastAddr = Atomics.exchange(GROWABLE_HEAP_I32(), __emscripten_main_thread_futex >> 2, 0); + return -73; + } + lastAddr = Atomics.exchange(GROWABLE_HEAP_I32(), __emscripten_main_thread_futex >> 2, 0); + if (lastAddr == 0) { + break; + } + _emscripten_main_thread_process_queued_calls(); + if (Atomics.load(GROWABLE_HEAP_I32(), addr >> 2) != val) { + return -6; + } + lastAddr = Atomics.exchange(GROWABLE_HEAP_I32(), __emscripten_main_thread_futex >> 2, addr); + } + return 0; + } + } + function _emscripten_memcpy_big(dest, src, num) { + GROWABLE_HEAP_U8().copyWithin(dest, src, src + num); + } + function _emscripten_num_logical_cores() { + if (ENVIRONMENT_IS_NODE) + return require("os").cpus().length; + return navigator["hardwareConcurrency"]; + } + function _emscripten_proxy_to_main_thread_js(index, sync) { + var numCallArgs = arguments.length - 2; + var stack2 = stackSave(); + var serializedNumCallArgs = numCallArgs; + var args = stackAlloc(serializedNumCallArgs * 8); + var b = args >> 3; + for (var i = 0; i < numCallArgs; i++) { + var arg = arguments[2 + i]; + GROWABLE_HEAP_F64()[b + i] = arg; + } + var ret = _emscripten_run_in_main_runtime_thread_js(index, serializedNumCallArgs, args, sync); + stackRestore(stack2); + return ret; + } + var _emscripten_receive_on_main_thread_js_callArgs = []; + var readAsmConstArgsArray = []; + function readAsmConstArgs(sigPtr, buf) { + readAsmConstArgsArray.length = 0; + var ch; + buf >>= 2; + while (ch = GROWABLE_HEAP_U8()[sigPtr++]) { + var double = ch < 105; + if (double && buf & 1) + buf++; + readAsmConstArgsArray.push(double ? GROWABLE_HEAP_F64()[buf++ >> 1] : GROWABLE_HEAP_I32()[buf]); + ++buf; + } + return readAsmConstArgsArray; + } + function _emscripten_receive_on_main_thread_js(index, numCallArgs, args) { + _emscripten_receive_on_main_thread_js_callArgs.length = numCallArgs; + var b = args >> 3; + for (var i = 0; i < numCallArgs; i++) { + _emscripten_receive_on_main_thread_js_callArgs[i] = GROWABLE_HEAP_F64()[b + i]; + } + var isEmAsmConst = index < 0; + var func2 = !isEmAsmConst ? proxiedFunctionTable[index] : ASM_CONSTS[-index - 1]; + return func2.apply(null, _emscripten_receive_on_main_thread_js_callArgs); + } + function _emscripten_get_heap_size() { + return GROWABLE_HEAP_U8().length; + } + function emscripten_realloc_buffer(size) { + try { + wasmMemory.grow(size - buffer2.byteLength + 65535 >>> 16); + updateGlobalBufferAndViews(wasmMemory.buffer); + return 1; + } catch (e) { + } + } + function _emscripten_resize_heap(requestedSize) { + var oldSize = _emscripten_get_heap_size(); + if (requestedSize <= oldSize) { + return false; + } + var maxHeapSize = 2147483648; + if (requestedSize > maxHeapSize) { + return false; + } + for (var cutDown = 1; cutDown <= 4; cutDown *= 2) { + var overGrownHeapSize = oldSize * (1 + 0.2 / cutDown); + overGrownHeapSize = Math.min(overGrownHeapSize, requestedSize + 100663296); + var newSize = Math.min(maxHeapSize, alignUp(Math.max(requestedSize, overGrownHeapSize), 65536)); + var replacement = emscripten_realloc_buffer(newSize); + if (replacement) { + return true; + } + } + return false; + } + var JSEvents = {inEventHandler: 0, removeAllEventListeners: function() { + for (var i = JSEvents.eventHandlers.length - 1; i >= 0; --i) { + JSEvents._removeHandler(i); + } + JSEvents.eventHandlers = []; + JSEvents.deferredCalls = []; + }, registerRemoveEventListeners: function() { + if (!JSEvents.removeEventListenersRegistered) { + __ATEXIT__.push(JSEvents.removeAllEventListeners); + JSEvents.removeEventListenersRegistered = true; + } + }, deferredCalls: [], deferCall: function(targetFunction, precedence, argsList) { + function arraysHaveEqualContent(arrA, arrB) { + if (arrA.length != arrB.length) + return false; + for (var i2 in arrA) { + if (arrA[i2] != arrB[i2]) + return false; + } + return true; + } + for (var i in JSEvents.deferredCalls) { + var call = JSEvents.deferredCalls[i]; + if (call.targetFunction == targetFunction && arraysHaveEqualContent(call.argsList, argsList)) { + return; + } + } + JSEvents.deferredCalls.push({targetFunction, precedence, argsList}); + JSEvents.deferredCalls.sort(function(x, y) { + return x.precedence < y.precedence; + }); + }, removeDeferredCalls: function(targetFunction) { + for (var i = 0; i < JSEvents.deferredCalls.length; ++i) { + if (JSEvents.deferredCalls[i].targetFunction == targetFunction) { + JSEvents.deferredCalls.splice(i, 1); + --i; + } + } + }, canPerformEventHandlerRequests: function() { + return JSEvents.inEventHandler && JSEvents.currentEventHandler.allowsDeferredCalls; + }, runDeferredCalls: function() { + if (!JSEvents.canPerformEventHandlerRequests()) { + return; + } + for (var i = 0; i < JSEvents.deferredCalls.length; ++i) { + var call = JSEvents.deferredCalls[i]; + JSEvents.deferredCalls.splice(i, 1); + --i; + call.targetFunction.apply(null, call.argsList); + } + }, eventHandlers: [], removeAllHandlersOnTarget: function(target, eventTypeString) { + for (var i = 0; i < JSEvents.eventHandlers.length; ++i) { + if (JSEvents.eventHandlers[i].target == target && (!eventTypeString || eventTypeString == JSEvents.eventHandlers[i].eventTypeString)) { + JSEvents._removeHandler(i--); + } + } + }, _removeHandler: function(i) { + var h = JSEvents.eventHandlers[i]; + h.target.removeEventListener(h.eventTypeString, h.eventListenerFunc, h.useCapture); + JSEvents.eventHandlers.splice(i, 1); + }, registerOrRemoveHandler: function(eventHandler) { + var jsEventHandler = function jsEventHandler2(event) { + ++JSEvents.inEventHandler; + JSEvents.currentEventHandler = eventHandler; + JSEvents.runDeferredCalls(); + eventHandler.handlerFunc(event); + JSEvents.runDeferredCalls(); + --JSEvents.inEventHandler; + }; + if (eventHandler.callbackfunc) { + eventHandler.eventListenerFunc = jsEventHandler; + eventHandler.target.addEventListener(eventHandler.eventTypeString, jsEventHandler, eventHandler.useCapture); + JSEvents.eventHandlers.push(eventHandler); + JSEvents.registerRemoveEventListeners(); + } else { + for (var i = 0; i < JSEvents.eventHandlers.length; ++i) { + if (JSEvents.eventHandlers[i].target == eventHandler.target && JSEvents.eventHandlers[i].eventTypeString == eventHandler.eventTypeString) { + JSEvents._removeHandler(i--); + } + } + } + }, queueEventHandlerOnThread_iiii: function(targetThread, eventHandlerFunc, eventTypeId, eventData, userData) { + var stackTop = stackSave(); + var varargs = stackAlloc(12); + GROWABLE_HEAP_I32()[varargs >> 2] = eventTypeId; + GROWABLE_HEAP_I32()[varargs + 4 >> 2] = eventData; + GROWABLE_HEAP_I32()[varargs + 8 >> 2] = userData; + __emscripten_call_on_thread(0, targetThread, 637534208, eventHandlerFunc, eventData, varargs); + stackRestore(stackTop); + }, getTargetThreadForEventCallback: function(targetThread) { + switch (targetThread) { + case 1: + return 0; + case 2: + return PThread.currentProxiedOperationCallerThread; + default: + return targetThread; + } + }, getNodeNameForTarget: function(target) { + if (!target) + return ""; + if (target == window) + return "#window"; + if (target == screen) + return "#screen"; + return target && target.nodeName ? target.nodeName : ""; + }, fullscreenEnabled: function() { + return document.fullscreenEnabled || document.webkitFullscreenEnabled; + }}; + function stringToNewUTF8(jsString) { + var length = lengthBytesUTF8(jsString) + 1; + var cString = _malloc(length); + stringToUTF8(jsString, cString, length); + return cString; + } + function _emscripten_set_offscreencanvas_size_on_target_thread_js(targetThread, targetCanvas, width, height) { + var stackTop = stackSave(); + var varargs = stackAlloc(12); + var targetCanvasPtr = 0; + if (targetCanvas) { + targetCanvasPtr = stringToNewUTF8(targetCanvas); + } + GROWABLE_HEAP_I32()[varargs >> 2] = targetCanvasPtr; + GROWABLE_HEAP_I32()[varargs + 4 >> 2] = width; + GROWABLE_HEAP_I32()[varargs + 8 >> 2] = height; + __emscripten_call_on_thread(0, targetThread, 657457152, 0, targetCanvasPtr, varargs); + stackRestore(stackTop); + } + function _emscripten_set_offscreencanvas_size_on_target_thread(targetThread, targetCanvas, width, height) { + targetCanvas = targetCanvas ? UTF8ToString(targetCanvas) : ""; + _emscripten_set_offscreencanvas_size_on_target_thread_js(targetThread, targetCanvas, width, height); + } + function maybeCStringToJsString(cString) { + return cString > 2 ? UTF8ToString(cString) : cString; + } + var specialHTMLTargets = [0, typeof document !== "undefined" ? document : 0, typeof window !== "undefined" ? window : 0]; + function findEventTarget(target) { + target = maybeCStringToJsString(target); + var domElement = specialHTMLTargets[target] || (typeof document !== "undefined" ? document.querySelector(target) : void 0); + return domElement; + } + function findCanvasEventTarget(target) { + return findEventTarget(target); + } + function _emscripten_set_canvas_element_size_calling_thread(target, width, height) { + var canvas2 = findCanvasEventTarget(target); + if (!canvas2) + return -4; + if (canvas2.canvasSharedPtr) { + GROWABLE_HEAP_I32()[canvas2.canvasSharedPtr >> 2] = width; + GROWABLE_HEAP_I32()[canvas2.canvasSharedPtr + 4 >> 2] = height; + } + if (canvas2.offscreenCanvas || !canvas2.controlTransferredOffscreen) { + if (canvas2.offscreenCanvas) + canvas2 = canvas2.offscreenCanvas; + var autoResizeViewport = false; + if (canvas2.GLctxObject && canvas2.GLctxObject.GLctx) { + var prevViewport = canvas2.GLctxObject.GLctx.getParameter(2978); + autoResizeViewport = prevViewport[0] === 0 && prevViewport[1] === 0 && prevViewport[2] === canvas2.width && prevViewport[3] === canvas2.height; + } + canvas2.width = width; + canvas2.height = height; + if (autoResizeViewport) { + canvas2.GLctxObject.GLctx.viewport(0, 0, width, height); + } + } else if (canvas2.canvasSharedPtr) { + var targetThread = GROWABLE_HEAP_I32()[canvas2.canvasSharedPtr + 8 >> 2]; + _emscripten_set_offscreencanvas_size_on_target_thread(targetThread, target, width, height); + return 1; + } else { + return -4; + } + return 0; + } + function _emscripten_set_canvas_element_size_main_thread(target, width, height) { + if (ENVIRONMENT_IS_PTHREAD) + return _emscripten_proxy_to_main_thread_js(2, 1, target, width, height); + return _emscripten_set_canvas_element_size_calling_thread(target, width, height); + } + function _emscripten_set_canvas_element_size(target, width, height) { + var canvas2 = findCanvasEventTarget(target); + if (canvas2) { + return _emscripten_set_canvas_element_size_calling_thread(target, width, height); + } else { + return _emscripten_set_canvas_element_size_main_thread(target, width, height); + } + } + function _emscripten_set_current_thread_status(newStatus) { + } + function _emscripten_set_thread_name(threadId, name) { + } + function __webgl_enable_ANGLE_instanced_arrays(ctx) { + var ext = ctx.getExtension("ANGLE_instanced_arrays"); + if (ext) { + ctx["vertexAttribDivisor"] = function(index, divisor) { + ext["vertexAttribDivisorANGLE"](index, divisor); + }; + ctx["drawArraysInstanced"] = function(mode, first, count2, primcount) { + ext["drawArraysInstancedANGLE"](mode, first, count2, primcount); + }; + ctx["drawElementsInstanced"] = function(mode, count2, type, indices, primcount) { + ext["drawElementsInstancedANGLE"](mode, count2, type, indices, primcount); + }; + return 1; + } + } + function __webgl_enable_OES_vertex_array_object(ctx) { + var ext = ctx.getExtension("OES_vertex_array_object"); + if (ext) { + ctx["createVertexArray"] = function() { + return ext["createVertexArrayOES"](); + }; + ctx["deleteVertexArray"] = function(vao) { + ext["deleteVertexArrayOES"](vao); + }; + ctx["bindVertexArray"] = function(vao) { + ext["bindVertexArrayOES"](vao); + }; + ctx["isVertexArray"] = function(vao) { + return ext["isVertexArrayOES"](vao); + }; + return 1; + } + } + function __webgl_enable_WEBGL_draw_buffers(ctx) { + var ext = ctx.getExtension("WEBGL_draw_buffers"); + if (ext) { + ctx["drawBuffers"] = function(n, bufs) { + ext["drawBuffersWEBGL"](n, bufs); + }; + return 1; + } + } + function __webgl_enable_WEBGL_multi_draw(ctx) { + return !!(ctx.multiDrawWebgl = ctx.getExtension("WEBGL_multi_draw")); + } + var GL = {counter: 1, buffers: [], programs: [], framebuffers: [], renderbuffers: [], textures: [], uniforms: [], shaders: [], vaos: [], contexts: {}, offscreenCanvases: {}, timerQueriesEXT: [], programInfos: {}, stringCache: {}, unpackAlignment: 4, recordError: function recordError(errorCode) { + if (!GL.lastError) { + GL.lastError = errorCode; + } + }, getNewId: function(table) { + var ret = GL.counter++; + for (var i = table.length; i < ret; i++) { + table[i] = null; + } + return ret; + }, getSource: function(shader, count2, string, length) { + var source = ""; + for (var i = 0; i < count2; ++i) { + var len = length ? GROWABLE_HEAP_I32()[length + i * 4 >> 2] : -1; + source += UTF8ToString(GROWABLE_HEAP_I32()[string + i * 4 >> 2], len < 0 ? void 0 : len); + } + return source; + }, createContext: function(canvas2, webGLContextAttributes) { + var ctx = canvas2.getContext("webgl", webGLContextAttributes); + if (!ctx) + return 0; + var handle = GL.registerContext(ctx, webGLContextAttributes); + return handle; + }, registerContext: function(ctx, webGLContextAttributes) { + var handle = _malloc(8); + GROWABLE_HEAP_I32()[handle + 4 >> 2] = _pthread_self(); + var context = {handle, attributes: webGLContextAttributes, version: webGLContextAttributes.majorVersion, GLctx: ctx}; + if (ctx.canvas) + ctx.canvas.GLctxObject = context; + GL.contexts[handle] = context; + if (typeof webGLContextAttributes.enableExtensionsByDefault === "undefined" || webGLContextAttributes.enableExtensionsByDefault) { + GL.initExtensions(context); + } + return handle; + }, makeContextCurrent: function(contextHandle) { + GL.currentContext = GL.contexts[contextHandle]; + Module.ctx = GLctx = GL.currentContext && GL.currentContext.GLctx; + return !(contextHandle && !GLctx); + }, getContext: function(contextHandle) { + return GL.contexts[contextHandle]; + }, deleteContext: function(contextHandle) { + if (GL.currentContext === GL.contexts[contextHandle]) + GL.currentContext = null; + if (typeof JSEvents === "object") + JSEvents.removeAllHandlersOnTarget(GL.contexts[contextHandle].GLctx.canvas); + if (GL.contexts[contextHandle] && GL.contexts[contextHandle].GLctx.canvas) + GL.contexts[contextHandle].GLctx.canvas.GLctxObject = void 0; + _free(GL.contexts[contextHandle].handle); + GL.contexts[contextHandle] = null; + }, initExtensions: function(context) { + if (!context) + context = GL.currentContext; + if (context.initExtensionsDone) + return; + context.initExtensionsDone = true; + var GLctx2 = context.GLctx; + __webgl_enable_ANGLE_instanced_arrays(GLctx2); + __webgl_enable_OES_vertex_array_object(GLctx2); + __webgl_enable_WEBGL_draw_buffers(GLctx2); + GLctx2.disjointTimerQueryExt = GLctx2.getExtension("EXT_disjoint_timer_query"); + __webgl_enable_WEBGL_multi_draw(GLctx2); + var exts = GLctx2.getSupportedExtensions() || []; + exts.forEach(function(ext) { + if (ext.indexOf("lose_context") < 0 && ext.indexOf("debug") < 0) { + GLctx2.getExtension(ext); + } + }); + }, populateUniformTable: function(program) { + var p2 = GL.programs[program]; + var ptable = GL.programInfos[program] = {uniforms: {}, maxUniformLength: 0, maxAttributeLength: -1, maxUniformBlockNameLength: -1}; + var utable = ptable.uniforms; + var numUniforms = GLctx.getProgramParameter(p2, 35718); + for (var i = 0; i < numUniforms; ++i) { + var u = GLctx.getActiveUniform(p2, i); + var name = u.name; + ptable.maxUniformLength = Math.max(ptable.maxUniformLength, name.length + 1); + if (name.slice(-1) == "]") { + name = name.slice(0, name.lastIndexOf("[")); + } + var loc = GLctx.getUniformLocation(p2, name); + if (loc) { + var id = GL.getNewId(GL.uniforms); + utable[name] = [u.size, id]; + GL.uniforms[id] = loc; + for (var j = 1; j < u.size; ++j) { + var n = name + "[" + j + "]"; + loc = GLctx.getUniformLocation(p2, n); + id = GL.getNewId(GL.uniforms); + GL.uniforms[id] = loc; + } + } + } + }}; + var __emscripten_webgl_power_preferences = ["default", "low-power", "high-performance"]; + function _emscripten_webgl_do_create_context(target, attributes) { + var a = attributes >> 2; + var powerPreference = GROWABLE_HEAP_I32()[a + (24 >> 2)]; + var contextAttributes = {alpha: !!GROWABLE_HEAP_I32()[a + (0 >> 2)], depth: !!GROWABLE_HEAP_I32()[a + (4 >> 2)], stencil: !!GROWABLE_HEAP_I32()[a + (8 >> 2)], antialias: !!GROWABLE_HEAP_I32()[a + (12 >> 2)], premultipliedAlpha: !!GROWABLE_HEAP_I32()[a + (16 >> 2)], preserveDrawingBuffer: !!GROWABLE_HEAP_I32()[a + (20 >> 2)], powerPreference: __emscripten_webgl_power_preferences[powerPreference], failIfMajorPerformanceCaveat: !!GROWABLE_HEAP_I32()[a + (28 >> 2)], majorVersion: GROWABLE_HEAP_I32()[a + (32 >> 2)], minorVersion: GROWABLE_HEAP_I32()[a + (36 >> 2)], enableExtensionsByDefault: GROWABLE_HEAP_I32()[a + (40 >> 2)], explicitSwapControl: GROWABLE_HEAP_I32()[a + (44 >> 2)], proxyContextToMainThread: GROWABLE_HEAP_I32()[a + (48 >> 2)], renderViaOffscreenBackBuffer: GROWABLE_HEAP_I32()[a + (52 >> 2)]}; + var canvas2 = findCanvasEventTarget(target); + if (!canvas2) { + return 0; + } + if (contextAttributes.explicitSwapControl) { + return 0; + } + var contextHandle = GL.createContext(canvas2, contextAttributes); + return contextHandle; + } + function _emscripten_webgl_create_context(a0, a12) { + return _emscripten_webgl_do_create_context(a0, a12); + } + var SYSCALLS = {mappings: {}, buffers: [null, [], []], printChar: function(stream, curr) { + var buffer3 = SYSCALLS.buffers[stream]; + if (curr === 0 || curr === 10) { + (stream === 1 ? out : err)(UTF8ArrayToString(buffer3, 0)); + buffer3.length = 0; + } else { + buffer3.push(curr); + } + }, varargs: void 0, get: function() { + SYSCALLS.varargs += 4; + var ret = GROWABLE_HEAP_I32()[SYSCALLS.varargs - 4 >> 2]; + return ret; + }, getStr: function(ptr) { + var ret = UTF8ToString(ptr); + return ret; + }, get64: function(low, high) { + return low; + }}; + function _fd_close(fd) { + if (ENVIRONMENT_IS_PTHREAD) + return _emscripten_proxy_to_main_thread_js(3, 1, fd); + return 0; + } + function _fd_seek(fd, offset_low, offset_high, whence, newOffset) { + if (ENVIRONMENT_IS_PTHREAD) + return _emscripten_proxy_to_main_thread_js(4, 1, fd, offset_low, offset_high, whence, newOffset); + } + function _fd_write(fd, iov, iovcnt, pnum) { + if (ENVIRONMENT_IS_PTHREAD) + return _emscripten_proxy_to_main_thread_js(5, 1, fd, iov, iovcnt, pnum); + var num = 0; + for (var i = 0; i < iovcnt; i++) { + var ptr = GROWABLE_HEAP_I32()[iov + i * 8 >> 2]; + var len = GROWABLE_HEAP_I32()[iov + (i * 8 + 4) >> 2]; + for (var j = 0; j < len; j++) { + SYSCALLS.printChar(fd, GROWABLE_HEAP_U8()[ptr + j]); + } + num += len; + } + GROWABLE_HEAP_I32()[pnum >> 2] = num; + return 0; + } + function _pthread_cleanup_pop(execute2) { + var routine = PThread.threadExitHandlers.pop(); + if (execute2) + routine(); + } + function _pthread_cleanup_push(routine, arg) { + PThread.threadExitHandlers.push(function() { + wasmTable.get(routine)(arg); + }); + } + function spawnThread(threadParams) { + if (ENVIRONMENT_IS_PTHREAD) + throw "Internal Error! spawnThread() can only ever be called from main application thread!"; + var worker = PThread.getNewWorker(); + if (worker.pthread !== void 0) + throw "Internal error!"; + if (!threadParams.pthread_ptr) + throw "Internal error, no pthread ptr!"; + PThread.runningWorkers.push(worker); + var tlsMemory = _malloc(128 * 4); + for (var i = 0; i < 128; ++i) { + GROWABLE_HEAP_I32()[tlsMemory + i * 4 >> 2] = 0; + } + var stackHigh = threadParams.stackBase + threadParams.stackSize; + var pthread = PThread.pthreads[threadParams.pthread_ptr] = {worker, stackBase: threadParams.stackBase, stackSize: threadParams.stackSize, allocatedOwnStack: threadParams.allocatedOwnStack, threadInfoStruct: threadParams.pthread_ptr}; + var tis = pthread.threadInfoStruct >> 2; + Atomics.store(GROWABLE_HEAP_U32(), tis + (64 >> 2), threadParams.detached); + Atomics.store(GROWABLE_HEAP_U32(), tis + (100 >> 2), tlsMemory); + Atomics.store(GROWABLE_HEAP_U32(), tis + (40 >> 2), pthread.threadInfoStruct); + Atomics.store(GROWABLE_HEAP_U32(), tis + (80 >> 2), threadParams.stackSize); + Atomics.store(GROWABLE_HEAP_U32(), tis + (76 >> 2), stackHigh); + Atomics.store(GROWABLE_HEAP_U32(), tis + (104 >> 2), threadParams.stackSize); + Atomics.store(GROWABLE_HEAP_U32(), tis + (104 + 8 >> 2), stackHigh); + Atomics.store(GROWABLE_HEAP_U32(), tis + (104 + 12 >> 2), threadParams.detached); + var global_libc = _emscripten_get_global_libc(); + var global_locale = global_libc + 40; + Atomics.store(GROWABLE_HEAP_U32(), tis + (172 >> 2), global_locale); + worker.pthread = pthread; + var msg = {cmd: "run", start_routine: threadParams.startRoutine, arg: threadParams.arg, threadInfoStruct: threadParams.pthread_ptr, stackBase: threadParams.stackBase, stackSize: threadParams.stackSize}; + worker.runPthread = function() { + msg.time = performance.now(); + worker.postMessage(msg, threadParams.transferList); + }; + if (worker.loaded) { + worker.runPthread(); + delete worker.runPthread; + } + } + function _pthread_create(pthread_ptr, attr, start_routine, arg) { + if (typeof SharedArrayBuffer === "undefined") { + err("Current environment does not support SharedArrayBuffer, pthreads are not available!"); + return 6; + } + if (!pthread_ptr) { + err("pthread_create called with a null thread pointer!"); + return 28; + } + var transferList = []; + var error = 0; + if (ENVIRONMENT_IS_PTHREAD && (transferList.length === 0 || error)) { + return _emscripten_sync_run_in_main_thread_4(687865856, pthread_ptr, attr, start_routine, arg); + } + if (error) + return error; + var stackSize = 0; + var stackBase = 0; + var detached = 0; + if (attr && attr != -1) { + stackSize = GROWABLE_HEAP_I32()[attr >> 2]; + stackSize += 81920; + stackBase = GROWABLE_HEAP_I32()[attr + 8 >> 2]; + detached = GROWABLE_HEAP_I32()[attr + 12 >> 2] !== 0; + } else { + stackSize = 2097152; + } + var allocatedOwnStack = stackBase == 0; + if (allocatedOwnStack) { + stackBase = _memalign(16, stackSize); + } else { + stackBase -= stackSize; + assert3(stackBase > 0); + } + var threadInfoStruct = _malloc(228); + for (var i = 0; i < 228 >> 2; ++i) + GROWABLE_HEAP_U32()[(threadInfoStruct >> 2) + i] = 0; + GROWABLE_HEAP_I32()[pthread_ptr >> 2] = threadInfoStruct; + GROWABLE_HEAP_I32()[threadInfoStruct + 12 >> 2] = threadInfoStruct; + var headPtr = threadInfoStruct + 152; + GROWABLE_HEAP_I32()[headPtr >> 2] = headPtr; + var threadParams = {stackBase, stackSize, allocatedOwnStack, detached, startRoutine: start_routine, pthread_ptr: threadInfoStruct, arg, transferList}; + if (ENVIRONMENT_IS_PTHREAD) { + threadParams.cmd = "spawnThread"; + postMessage(threadParams, transferList); + } else { + spawnThread(threadParams); + } + return 0; + } + function _sysconf(name) { + if (ENVIRONMENT_IS_PTHREAD) + return _emscripten_proxy_to_main_thread_js(6, 1, name); + switch (name) { + case 30: + return 16384; + case 85: + var maxHeapSize = 2147483648; + return maxHeapSize / 16384; + case 132: + case 133: + case 12: + case 137: + case 138: + case 15: + case 235: + case 16: + case 17: + case 18: + case 19: + case 20: + case 149: + case 13: + case 10: + case 236: + case 153: + case 9: + case 21: + case 22: + case 159: + case 154: + case 14: + case 77: + case 78: + case 139: + case 82: + case 68: + case 67: + case 164: + case 11: + case 29: + case 47: + case 48: + case 95: + case 52: + case 51: + case 46: + return 200809; + case 27: + case 246: + case 127: + case 128: + case 23: + case 24: + case 160: + case 161: + case 181: + case 182: + case 242: + case 183: + case 184: + case 243: + case 244: + case 245: + case 165: + case 178: + case 179: + case 49: + case 50: + case 168: + case 169: + case 175: + case 170: + case 171: + case 172: + case 97: + case 76: + case 32: + case 173: + case 35: + case 80: + case 81: + case 79: + return -1; + case 176: + case 177: + case 7: + case 155: + case 8: + case 157: + case 125: + case 126: + case 92: + case 93: + case 129: + case 130: + case 131: + case 94: + case 91: + return 1; + case 74: + case 60: + case 69: + case 70: + case 4: + return 1024; + case 31: + case 42: + case 72: + return 32; + case 87: + case 26: + case 33: + return 2147483647; + case 34: + case 1: + return 47839; + case 38: + case 36: + return 99; + case 43: + case 37: + return 2048; + case 0: + return 2097152; + case 3: + return 65536; + case 28: + return 32768; + case 44: + return 32767; + case 75: + return 16384; + case 39: + return 1e3; + case 89: + return 700; + case 71: + return 256; + case 40: + return 255; + case 2: + return 100; + case 180: + return 64; + case 25: + return 20; + case 5: + return 16; + case 6: + return 6; + case 73: + return 4; + case 84: { + if (typeof navigator === "object") + return navigator["hardwareConcurrency"] || 1; + return 1; + } + } + setErrNo(28); + return -1; + } + if (!ENVIRONMENT_IS_PTHREAD) + PThread.initMainThreadBlock(); + var GLctx; + var proxiedFunctionTable = [null, _atexit, _emscripten_set_canvas_element_size_main_thread, _fd_close, _fd_seek, _fd_write, _sysconf]; + var asmLibraryArg = {e: ___assert_fail, r: ___call_main, x: __emscripten_notify_thread_queue, b: _abort, y: _emscripten_asm_const_int, j: _emscripten_conditional_set_current_thread_status, c: _emscripten_futex_wait, d: _emscripten_futex_wake, f: _emscripten_get_now, p: _emscripten_memcpy_big, z: _emscripten_num_logical_cores, u: _emscripten_receive_on_main_thread_js, q: _emscripten_resize_heap, v: _emscripten_set_canvas_element_size, i: _emscripten_set_current_thread_status, t: _emscripten_set_thread_name, w: _emscripten_webgl_create_context, m: _fd_close, n: _fd_seek, g: _fd_write, o: initPthreadsJS, a: wasmMemory || Module["wasmMemory"], k: _pthread_cleanup_pop, l: _pthread_cleanup_push, h: _pthread_create, s: _sysconf}; + var asm = createWasm(); + var ___wasm_call_ctors = Module["___wasm_call_ctors"] = function() { + return (___wasm_call_ctors = Module["___wasm_call_ctors"] = Module["asm"]["A"]).apply(null, arguments); + }; + var _init = Module["_init"] = function() { + return (_init = Module["_init"] = Module["asm"]["B"]).apply(null, arguments); + }; + var _register_tensor = Module["_register_tensor"] = function() { + return (_register_tensor = Module["_register_tensor"] = Module["asm"]["C"]).apply(null, arguments); + }; + var _dispose_data = Module["_dispose_data"] = function() { + return (_dispose_data = Module["_dispose_data"] = Module["asm"]["D"]).apply(null, arguments); + }; + var _dispose = Module["_dispose"] = function() { + return (_dispose = Module["_dispose"] = Module["asm"]["E"]).apply(null, arguments); + }; + var _Abs = Module["_Abs"] = function() { + return (_Abs = Module["_Abs"] = Module["asm"]["G"]).apply(null, arguments); + }; + var _Add = Module["_Add"] = function() { + return (_Add = Module["_Add"] = Module["asm"]["H"]).apply(null, arguments); + }; + var _AddN = Module["_AddN"] = function() { + return (_AddN = Module["_AddN"] = Module["asm"]["I"]).apply(null, arguments); + }; + var _ArgMax = Module["_ArgMax"] = function() { + return (_ArgMax = Module["_ArgMax"] = Module["asm"]["J"]).apply(null, arguments); + }; + var _AvgPool = Module["_AvgPool"] = function() { + return (_AvgPool = Module["_AvgPool"] = Module["asm"]["K"]).apply(null, arguments); + }; + var _BatchMatMul = Module["_BatchMatMul"] = function() { + return (_BatchMatMul = Module["_BatchMatMul"] = Module["asm"]["L"]).apply(null, arguments); + }; + var _Ceil = Module["_Ceil"] = function() { + return (_Ceil = Module["_Ceil"] = Module["asm"]["M"]).apply(null, arguments); + }; + var _ClipByValue = Module["_ClipByValue"] = function() { + return (_ClipByValue = Module["_ClipByValue"] = Module["asm"]["N"]).apply(null, arguments); + }; + var _Conv2D = Module["_Conv2D"] = function() { + return (_Conv2D = Module["_Conv2D"] = Module["asm"]["O"]).apply(null, arguments); + }; + var _Conv2DBackpropInput = Module["_Conv2DBackpropInput"] = function() { + return (_Conv2DBackpropInput = Module["_Conv2DBackpropInput"] = Module["asm"]["P"]).apply(null, arguments); + }; + var _Cos = Module["_Cos"] = function() { + return (_Cos = Module["_Cos"] = Module["asm"]["Q"]).apply(null, arguments); + }; + var _CropAndResize = Module["_CropAndResize"] = function() { + return (_CropAndResize = Module["_CropAndResize"] = Module["asm"]["R"]).apply(null, arguments); + }; + var _Cumsum = Module["_Cumsum"] = function() { + return (_Cumsum = Module["_Cumsum"] = Module["asm"]["S"]).apply(null, arguments); + }; + var _DepthToSpace = Module["_DepthToSpace"] = function() { + return (_DepthToSpace = Module["_DepthToSpace"] = Module["asm"]["T"]).apply(null, arguments); + }; + var _DepthwiseConv2dNative = Module["_DepthwiseConv2dNative"] = function() { + return (_DepthwiseConv2dNative = Module["_DepthwiseConv2dNative"] = Module["asm"]["U"]).apply(null, arguments); + }; + var _Equal = Module["_Equal"] = function() { + return (_Equal = Module["_Equal"] = Module["asm"]["V"]).apply(null, arguments); + }; + var _Exp = Module["_Exp"] = function() { + return (_Exp = Module["_Exp"] = Module["asm"]["W"]).apply(null, arguments); + }; + var _FlipLeftRight = Module["_FlipLeftRight"] = function() { + return (_FlipLeftRight = Module["_FlipLeftRight"] = Module["asm"]["X"]).apply(null, arguments); + }; + var _Floor = Module["_Floor"] = function() { + return (_Floor = Module["_Floor"] = Module["asm"]["Y"]).apply(null, arguments); + }; + var _FloorDiv = Module["_FloorDiv"] = function() { + return (_FloorDiv = Module["_FloorDiv"] = Module["asm"]["Z"]).apply(null, arguments); + }; + var _FusedBatchNorm = Module["_FusedBatchNorm"] = function() { + return (_FusedBatchNorm = Module["_FusedBatchNorm"] = Module["asm"]["_"]).apply(null, arguments); + }; + var _FusedConv2D = Module["_FusedConv2D"] = function() { + return (_FusedConv2D = Module["_FusedConv2D"] = Module["asm"]["$"]).apply(null, arguments); + }; + var _FusedDepthwiseConv2D = Module["_FusedDepthwiseConv2D"] = function() { + return (_FusedDepthwiseConv2D = Module["_FusedDepthwiseConv2D"] = Module["asm"]["aa"]).apply(null, arguments); + }; + var _Gather = Module["_Gather"] = function() { + return (_Gather = Module["_Gather"] = Module["asm"]["ba"]).apply(null, arguments); + }; + var _GatherNd = Module["_GatherNd"] = function() { + return (_GatherNd = Module["_GatherNd"] = Module["asm"]["ca"]).apply(null, arguments); + }; + var _Greater = Module["_Greater"] = function() { + return (_Greater = Module["_Greater"] = Module["asm"]["da"]).apply(null, arguments); + }; + var _GreaterEqual = Module["_GreaterEqual"] = function() { + return (_GreaterEqual = Module["_GreaterEqual"] = Module["asm"]["ea"]).apply(null, arguments); + }; + var _LeakyRelu = Module["_LeakyRelu"] = function() { + return (_LeakyRelu = Module["_LeakyRelu"] = Module["asm"]["fa"]).apply(null, arguments); + }; + var _Less = Module["_Less"] = function() { + return (_Less = Module["_Less"] = Module["asm"]["ga"]).apply(null, arguments); + }; + var _LessEqual = Module["_LessEqual"] = function() { + return (_LessEqual = Module["_LessEqual"] = Module["asm"]["ha"]).apply(null, arguments); + }; + var _Log = Module["_Log"] = function() { + return (_Log = Module["_Log"] = Module["asm"]["ia"]).apply(null, arguments); + }; + var _LogicalAnd = Module["_LogicalAnd"] = function() { + return (_LogicalAnd = Module["_LogicalAnd"] = Module["asm"]["ja"]).apply(null, arguments); + }; + var _Max = Module["_Max"] = function() { + return (_Max = Module["_Max"] = Module["asm"]["ka"]).apply(null, arguments); + }; + var _MaxPool = Module["_MaxPool"] = function() { + return (_MaxPool = Module["_MaxPool"] = Module["asm"]["la"]).apply(null, arguments); + }; + var _Maximum = Module["_Maximum"] = function() { + return (_Maximum = Module["_Maximum"] = Module["asm"]["ma"]).apply(null, arguments); + }; + var _Mean = Module["_Mean"] = function() { + return (_Mean = Module["_Mean"] = Module["asm"]["na"]).apply(null, arguments); + }; + var _Min = Module["_Min"] = function() { + return (_Min = Module["_Min"] = Module["asm"]["oa"]).apply(null, arguments); + }; + var _Minimum = Module["_Minimum"] = function() { + return (_Minimum = Module["_Minimum"] = Module["asm"]["pa"]).apply(null, arguments); + }; + var _Multiply = Module["_Multiply"] = function() { + return (_Multiply = Module["_Multiply"] = Module["asm"]["qa"]).apply(null, arguments); + }; + var _Neg = Module["_Neg"] = function() { + return (_Neg = Module["_Neg"] = Module["asm"]["ra"]).apply(null, arguments); + }; + var _NonMaxSuppressionV3 = Module["_NonMaxSuppressionV3"] = function() { + return (_NonMaxSuppressionV3 = Module["_NonMaxSuppressionV3"] = Module["asm"]["sa"]).apply(null, arguments); + }; + var _NonMaxSuppressionV4 = Module["_NonMaxSuppressionV4"] = function() { + return (_NonMaxSuppressionV4 = Module["_NonMaxSuppressionV4"] = Module["asm"]["ta"]).apply(null, arguments); + }; + var _NonMaxSuppressionV5 = Module["_NonMaxSuppressionV5"] = function() { + return (_NonMaxSuppressionV5 = Module["_NonMaxSuppressionV5"] = Module["asm"]["ua"]).apply(null, arguments); + }; + var _NotEqual = Module["_NotEqual"] = function() { + return (_NotEqual = Module["_NotEqual"] = Module["asm"]["va"]).apply(null, arguments); + }; + var _OneHot = Module["_OneHot"] = function() { + return (_OneHot = Module["_OneHot"] = Module["asm"]["wa"]).apply(null, arguments); + }; + var _PadV2 = Module["_PadV2"] = function() { + return (_PadV2 = Module["_PadV2"] = Module["asm"]["xa"]).apply(null, arguments); + }; + var _Pow = Module["_Pow"] = function() { + return (_Pow = Module["_Pow"] = Module["asm"]["ya"]).apply(null, arguments); + }; + var _Prelu = Module["_Prelu"] = function() { + return (_Prelu = Module["_Prelu"] = Module["asm"]["za"]).apply(null, arguments); + }; + var _Prod = Module["_Prod"] = function() { + return (_Prod = Module["_Prod"] = Module["asm"]["Aa"]).apply(null, arguments); + }; + var _RealDiv = Module["_RealDiv"] = function() { + return (_RealDiv = Module["_RealDiv"] = Module["asm"]["Ba"]).apply(null, arguments); + }; + var _Relu = Module["_Relu"] = function() { + return (_Relu = Module["_Relu"] = Module["asm"]["Ca"]).apply(null, arguments); + }; + var _Relu6 = Module["_Relu6"] = function() { + return (_Relu6 = Module["_Relu6"] = Module["asm"]["Da"]).apply(null, arguments); + }; + var _ResizeBilinear = Module["_ResizeBilinear"] = function() { + return (_ResizeBilinear = Module["_ResizeBilinear"] = Module["asm"]["Ea"]).apply(null, arguments); + }; + var _Reverse = Module["_Reverse"] = function() { + return (_Reverse = Module["_Reverse"] = Module["asm"]["Fa"]).apply(null, arguments); + }; + var _RotateWithOffset = Module["_RotateWithOffset"] = function() { + return (_RotateWithOffset = Module["_RotateWithOffset"] = Module["asm"]["Ga"]).apply(null, arguments); + }; + var _Round = Module["_Round"] = function() { + return (_Round = Module["_Round"] = Module["asm"]["Ha"]).apply(null, arguments); + }; + var _Rsqrt = Module["_Rsqrt"] = function() { + return (_Rsqrt = Module["_Rsqrt"] = Module["asm"]["Ia"]).apply(null, arguments); + }; + var _ScatterNd = Module["_ScatterNd"] = function() { + return (_ScatterNd = Module["_ScatterNd"] = Module["asm"]["Ja"]).apply(null, arguments); + }; + var _SelectV2 = Module["_SelectV2"] = function() { + return (_SelectV2 = Module["_SelectV2"] = Module["asm"]["Ka"]).apply(null, arguments); + }; + var _Sigmoid = Module["_Sigmoid"] = function() { + return (_Sigmoid = Module["_Sigmoid"] = Module["asm"]["La"]).apply(null, arguments); + }; + var _Sin = Module["_Sin"] = function() { + return (_Sin = Module["_Sin"] = Module["asm"]["Ma"]).apply(null, arguments); + }; + var _Softmax = Module["_Softmax"] = function() { + return (_Softmax = Module["_Softmax"] = Module["asm"]["Na"]).apply(null, arguments); + }; + var _Sqrt = Module["_Sqrt"] = function() { + return (_Sqrt = Module["_Sqrt"] = Module["asm"]["Oa"]).apply(null, arguments); + }; + var _Square = Module["_Square"] = function() { + return (_Square = Module["_Square"] = Module["asm"]["Pa"]).apply(null, arguments); + }; + var _SquaredDifference = Module["_SquaredDifference"] = function() { + return (_SquaredDifference = Module["_SquaredDifference"] = Module["asm"]["Qa"]).apply(null, arguments); + }; + var _Step = Module["_Step"] = function() { + return (_Step = Module["_Step"] = Module["asm"]["Ra"]).apply(null, arguments); + }; + var _StridedSlice = Module["_StridedSlice"] = function() { + return (_StridedSlice = Module["_StridedSlice"] = Module["asm"]["Sa"]).apply(null, arguments); + }; + var _Sub = Module["_Sub"] = function() { + return (_Sub = Module["_Sub"] = Module["asm"]["Ta"]).apply(null, arguments); + }; + var _Sum = Module["_Sum"] = function() { + return (_Sum = Module["_Sum"] = Module["asm"]["Ua"]).apply(null, arguments); + }; + var _Tanh = Module["_Tanh"] = function() { + return (_Tanh = Module["_Tanh"] = Module["asm"]["Va"]).apply(null, arguments); + }; + var _Tile = Module["_Tile"] = function() { + return (_Tile = Module["_Tile"] = Module["asm"]["Wa"]).apply(null, arguments); + }; + var _TopK = Module["_TopK"] = function() { + return (_TopK = Module["_TopK"] = Module["asm"]["Xa"]).apply(null, arguments); + }; + var _Transpose = Module["_Transpose"] = function() { + return (_Transpose = Module["_Transpose"] = Module["asm"]["Ya"]).apply(null, arguments); + }; + var __FusedMatMul = Module["__FusedMatMul"] = function() { + return (__FusedMatMul = Module["__FusedMatMul"] = Module["asm"]["Za"]).apply(null, arguments); + }; + var _malloc = Module["_malloc"] = function() { + return (_malloc = Module["_malloc"] = Module["asm"]["_a"]).apply(null, arguments); + }; + var _free = Module["_free"] = function() { + return (_free = Module["_free"] = Module["asm"]["$a"]).apply(null, arguments); + }; + var ___errno_location = Module["___errno_location"] = function() { + return (___errno_location = Module["___errno_location"] = Module["asm"]["ab"]).apply(null, arguments); + }; + var _emscripten_get_global_libc = Module["_emscripten_get_global_libc"] = function() { + return (_emscripten_get_global_libc = Module["_emscripten_get_global_libc"] = Module["asm"]["bb"]).apply(null, arguments); + }; + var _pthread_self = Module["_pthread_self"] = function() { + return (_pthread_self = Module["_pthread_self"] = Module["asm"]["cb"]).apply(null, arguments); + }; + var ___pthread_tsd_run_dtors = Module["___pthread_tsd_run_dtors"] = function() { + return (___pthread_tsd_run_dtors = Module["___pthread_tsd_run_dtors"] = Module["asm"]["db"]).apply(null, arguments); + }; + var _emscripten_main_thread_process_queued_calls = Module["_emscripten_main_thread_process_queued_calls"] = function() { + return (_emscripten_main_thread_process_queued_calls = Module["_emscripten_main_thread_process_queued_calls"] = Module["asm"]["eb"]).apply(null, arguments); + }; + var _emscripten_current_thread_process_queued_calls = Module["_emscripten_current_thread_process_queued_calls"] = function() { + return (_emscripten_current_thread_process_queued_calls = Module["_emscripten_current_thread_process_queued_calls"] = Module["asm"]["fb"]).apply(null, arguments); + }; + var _emscripten_register_main_browser_thread_id = Module["_emscripten_register_main_browser_thread_id"] = function() { + return (_emscripten_register_main_browser_thread_id = Module["_emscripten_register_main_browser_thread_id"] = Module["asm"]["gb"]).apply(null, arguments); + }; + var __emscripten_do_dispatch_to_thread = Module["__emscripten_do_dispatch_to_thread"] = function() { + return (__emscripten_do_dispatch_to_thread = Module["__emscripten_do_dispatch_to_thread"] = Module["asm"]["hb"]).apply(null, arguments); + }; + var _emscripten_sync_run_in_main_thread_4 = Module["_emscripten_sync_run_in_main_thread_4"] = function() { + return (_emscripten_sync_run_in_main_thread_4 = Module["_emscripten_sync_run_in_main_thread_4"] = Module["asm"]["ib"]).apply(null, arguments); + }; + var _emscripten_run_in_main_runtime_thread_js = Module["_emscripten_run_in_main_runtime_thread_js"] = function() { + return (_emscripten_run_in_main_runtime_thread_js = Module["_emscripten_run_in_main_runtime_thread_js"] = Module["asm"]["jb"]).apply(null, arguments); + }; + var __emscripten_call_on_thread = Module["__emscripten_call_on_thread"] = function() { + return (__emscripten_call_on_thread = Module["__emscripten_call_on_thread"] = Module["asm"]["kb"]).apply(null, arguments); + }; + var _emscripten_tls_init = Module["_emscripten_tls_init"] = function() { + return (_emscripten_tls_init = Module["_emscripten_tls_init"] = Module["asm"]["lb"]).apply(null, arguments); + }; + var __emscripten_thread_init = Module["__emscripten_thread_init"] = function() { + return (__emscripten_thread_init = Module["__emscripten_thread_init"] = Module["asm"]["mb"]).apply(null, arguments); + }; + var stackSave = Module["stackSave"] = function() { + return (stackSave = Module["stackSave"] = Module["asm"]["nb"]).apply(null, arguments); + }; + var stackRestore = Module["stackRestore"] = function() { + return (stackRestore = Module["stackRestore"] = Module["asm"]["ob"]).apply(null, arguments); + }; + var stackAlloc = Module["stackAlloc"] = function() { + return (stackAlloc = Module["stackAlloc"] = Module["asm"]["pb"]).apply(null, arguments); + }; + var _emscripten_stack_set_limits = Module["_emscripten_stack_set_limits"] = function() { + return (_emscripten_stack_set_limits = Module["_emscripten_stack_set_limits"] = Module["asm"]["qb"]).apply(null, arguments); + }; + var _memalign = Module["_memalign"] = function() { + return (_memalign = Module["_memalign"] = Module["asm"]["rb"]).apply(null, arguments); + }; + var __emscripten_allow_main_runtime_queued_calls = Module["__emscripten_allow_main_runtime_queued_calls"] = 9880; + var __emscripten_main_thread_futex = Module["__emscripten_main_thread_futex"] = 11368; + Module["cwrap"] = cwrap; + Module["PThread"] = PThread; + Module["PThread"] = PThread; + Module["wasmMemory"] = wasmMemory; + Module["ExitStatus"] = ExitStatus; + var calledRun; + function ExitStatus(status) { + this.name = "ExitStatus"; + this.message = "Program terminated with exit(" + status + ")"; + this.status = status; + } + dependenciesFulfilled = function runCaller() { + if (!calledRun) + run2(); + if (!calledRun) + dependenciesFulfilled = runCaller; + }; + function run2(args) { + args = args || arguments_; + if (runDependencies > 0) { + return; + } + if (ENVIRONMENT_IS_PTHREAD) { + readyPromiseResolve(Module); + postMessage({cmd: "loaded"}); + return; + } + preRun(); + if (runDependencies > 0) { + return; + } + function doRun() { + if (calledRun) + return; + calledRun = true; + Module["calledRun"] = true; + if (ABORT) + return; + initRuntime(); + preMain(); + readyPromiseResolve(Module); + if (Module["onRuntimeInitialized"]) + Module["onRuntimeInitialized"](); + postRun(); + } + if (Module["setStatus"]) { + Module["setStatus"]("Running..."); + setTimeout(function() { + setTimeout(function() { + Module["setStatus"](""); + }, 1); + doRun(); + }, 1); + } else { + doRun(); + } + } + Module["run"] = run2; + function exit(status, implicit) { + if (implicit && noExitRuntime && status === 0) { + return; + } + if (!implicit) { + if (ENVIRONMENT_IS_PTHREAD) { + postMessage({cmd: "exitProcess", returnCode: status}); + throw new ExitStatus(status); + } else { + } + } + if (noExitRuntime) { + } else { + PThread.terminateAllThreads(); + EXITSTATUS = status; + exitRuntime(); + if (Module["onExit"]) + Module["onExit"](status); + ABORT = true; + } + quit_(status, new ExitStatus(status)); + } + if (Module["preInit"]) { + if (typeof Module["preInit"] == "function") + Module["preInit"] = [Module["preInit"]]; + while (Module["preInit"].length > 0) { + Module["preInit"].pop()(); + } + } + if (ENVIRONMENT_IS_PTHREAD) { + noExitRuntime = false; + PThread.initWorker(); + } + run2(); + return WasmBackendModuleThreadedSimd2.ready; + }; + }(); + if (typeof exports === "object" && typeof module === "object") + module.exports = WasmBackendModuleThreadedSimd; + else if (typeof define === "function" && define["amd"]) + define([], function() { + return WasmBackendModuleThreadedSimd; + }); + else if (typeof exports === "object") + exports["WasmBackendModuleThreadedSimd"] = WasmBackendModuleThreadedSimd; +}); +var require_tfjs_backend_wasm = __commonJS2((exports, module) => { + var WasmBackendModule = function() { + var _scriptDir = typeof document !== "undefined" && document.currentScript ? document.currentScript.src : void 0; + if (typeof __filename !== "undefined") + _scriptDir = _scriptDir || __filename; + return function(WasmBackendModule2) { + WasmBackendModule2 = WasmBackendModule2 || {}; + var Module = typeof WasmBackendModule2 !== "undefined" ? WasmBackendModule2 : {}; + var readyPromiseResolve, readyPromiseReject; + Module["ready"] = new Promise(function(resolve, reject) { + readyPromiseResolve = resolve; + readyPromiseReject = reject; + }); + var moduleOverrides = {}; + var key; + for (key in Module) { + if (Module.hasOwnProperty(key)) { + moduleOverrides[key] = Module[key]; + } + } + var arguments_ = []; + var thisProgram = "./this.program"; + var quit_ = function(status, toThrow) { + throw toThrow; + }; + var ENVIRONMENT_IS_WEB = false; + var ENVIRONMENT_IS_WORKER = false; + var ENVIRONMENT_IS_NODE = false; + var ENVIRONMENT_IS_SHELL = false; + ENVIRONMENT_IS_WEB = typeof window === "object"; + ENVIRONMENT_IS_WORKER = typeof importScripts === "function"; + ENVIRONMENT_IS_NODE = typeof process === "object" && typeof process.versions === "object" && typeof process.versions.node === "string"; + ENVIRONMENT_IS_SHELL = !ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_NODE && !ENVIRONMENT_IS_WORKER; + var scriptDirectory = ""; + function locateFile(path) { + if (Module["locateFile"]) { + return Module["locateFile"](path, scriptDirectory); + } + return scriptDirectory + path; + } + var read_, readAsync, readBinary, setWindowTitle; + var nodeFS; + var nodePath; + if (ENVIRONMENT_IS_NODE) { + if (ENVIRONMENT_IS_WORKER) { + scriptDirectory = require_path().dirname(scriptDirectory) + "/"; + } else { + scriptDirectory = __dirname + "/"; + } + read_ = function shell_read(filename, binary) { + if (!nodeFS) + nodeFS = require("fs"); + if (!nodePath) + nodePath = require_path(); + filename = nodePath["normalize"](filename); + return nodeFS["readFileSync"](filename, binary ? null : "utf8"); + }; + readBinary = function readBinary2(filename) { + var ret = read_(filename, true); + if (!ret.buffer) { + ret = new Uint8Array(ret); + } + assert3(ret.buffer); + return ret; + }; + if (process["argv"].length > 1) { + thisProgram = process["argv"][1].replace(/\\/g, "/"); + } + arguments_ = process["argv"].slice(2); + process["on"]("uncaughtException", function(ex) { + if (!(ex instanceof ExitStatus)) { + throw ex; + } + }); + process["on"]("unhandledRejection", abort); + quit_ = function(status) { + process["exit"](status); + }; + Module["inspect"] = function() { + return "[Emscripten Module object]"; + }; + } else if (ENVIRONMENT_IS_SHELL) { + if (typeof read != "undefined") { + read_ = function shell_read(f) { + return read(f); + }; + } + readBinary = function readBinary2(f) { + var data2; + if (typeof readbuffer === "function") { + return new Uint8Array(readbuffer(f)); + } + data2 = read(f, "binary"); + assert3(typeof data2 === "object"); + return data2; + }; + if (typeof scriptArgs != "undefined") { + arguments_ = scriptArgs; + } else if (typeof arguments != "undefined") { + arguments_ = arguments; + } + if (typeof quit === "function") { + quit_ = function(status) { + quit(status); + }; + } + if (typeof print !== "undefined") { + if (typeof console === "undefined") + console = {}; + console.log = print; + console.warn = console.error = typeof printErr !== "undefined" ? printErr : print; + } + } else if (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) { + if (ENVIRONMENT_IS_WORKER) { + scriptDirectory = self.location.href; + } else if (typeof document !== "undefined" && document.currentScript) { + scriptDirectory = document.currentScript.src; + } + if (_scriptDir) { + scriptDirectory = _scriptDir; + } + if (scriptDirectory.indexOf("blob:") !== 0) { + scriptDirectory = scriptDirectory.substr(0, scriptDirectory.lastIndexOf("/") + 1); + } else { + scriptDirectory = ""; + } + { + read_ = function(url) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", url, false); + xhr.send(null); + return xhr.responseText; + }; + if (ENVIRONMENT_IS_WORKER) { + readBinary = function(url) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", url, false); + xhr.responseType = "arraybuffer"; + xhr.send(null); + return new Uint8Array(xhr.response); + }; + } + readAsync = function(url, onload, onerror) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", url, true); + xhr.responseType = "arraybuffer"; + xhr.onload = function() { + if (xhr.status == 200 || xhr.status == 0 && xhr.response) { + onload(xhr.response); + return; + } + onerror(); + }; + xhr.onerror = onerror; + xhr.send(null); + }; + } + setWindowTitle = function(title) { + document.title = title; + }; + } else { + } + var out = Module["print"] || console.log.bind(console); + var err = Module["printErr"] || console.warn.bind(console); + for (key in moduleOverrides) { + if (moduleOverrides.hasOwnProperty(key)) { + Module[key] = moduleOverrides[key]; + } + } + moduleOverrides = null; + if (Module["arguments"]) + arguments_ = Module["arguments"]; + if (Module["thisProgram"]) + thisProgram = Module["thisProgram"]; + if (Module["quit"]) + quit_ = Module["quit"]; + var wasmBinary; + if (Module["wasmBinary"]) + wasmBinary = Module["wasmBinary"]; + var noExitRuntime = Module["noExitRuntime"] || true; + if (typeof WebAssembly !== "object") { + abort("no native wasm support detected"); + } + var wasmMemory; + var ABORT = false; + var EXITSTATUS; + function assert3(condition, text) { + if (!condition) { + abort("Assertion failed: " + text); + } + } + function getCFunc(ident) { + var func2 = Module["_" + ident]; + assert3(func2, "Cannot call unknown function " + ident + ", make sure it is exported"); + return func2; + } + function ccall(ident, returnType, argTypes, args, opts) { + var toC = {string: function(str) { + var ret2 = 0; + if (str !== null && str !== void 0 && str !== 0) { + var len = (str.length << 2) + 1; + ret2 = stackAlloc(len); + stringToUTF8(str, ret2, len); + } + return ret2; + }, array: function(arr) { + var ret2 = stackAlloc(arr.length); + writeArrayToMemory(arr, ret2); + return ret2; + }}; + function convertReturnValue(ret2) { + if (returnType === "string") + return UTF8ToString(ret2); + if (returnType === "boolean") + return Boolean(ret2); + return ret2; + } + var func2 = getCFunc(ident); + var cArgs = []; + var stack2 = 0; + if (args) { + for (var i = 0; i < args.length; i++) { + var converter = toC[argTypes[i]]; + if (converter) { + if (stack2 === 0) + stack2 = stackSave(); + cArgs[i] = converter(args[i]); + } else { + cArgs[i] = args[i]; + } + } + } + var ret = func2.apply(null, cArgs); + ret = convertReturnValue(ret); + if (stack2 !== 0) + stackRestore(stack2); + return ret; + } + function cwrap(ident, returnType, argTypes, opts) { + argTypes = argTypes || []; + var numericArgs = argTypes.every(function(type) { + return type === "number"; + }); + var numericRet = returnType !== "string"; + if (numericRet && numericArgs && !opts) { + return getCFunc(ident); + } + return function() { + return ccall(ident, returnType, argTypes, arguments, opts); + }; + } + var UTF8Decoder = typeof TextDecoder !== "undefined" ? new TextDecoder("utf8") : void 0; + function UTF8ArrayToString(heap, idx, maxBytesToRead) { + var endIdx = idx + maxBytesToRead; + var endPtr = idx; + while (heap[endPtr] && !(endPtr >= endIdx)) + ++endPtr; + if (endPtr - idx > 16 && heap.subarray && UTF8Decoder) { + return UTF8Decoder.decode(heap.subarray(idx, endPtr)); + } else { + var str = ""; + while (idx < endPtr) { + var u0 = heap[idx++]; + if (!(u0 & 128)) { + str += String.fromCharCode(u0); + continue; + } + var u1 = heap[idx++] & 63; + if ((u0 & 224) == 192) { + str += String.fromCharCode((u0 & 31) << 6 | u1); + continue; + } + var u2 = heap[idx++] & 63; + if ((u0 & 240) == 224) { + u0 = (u0 & 15) << 12 | u1 << 6 | u2; + } else { + u0 = (u0 & 7) << 18 | u1 << 12 | u2 << 6 | heap[idx++] & 63; + } + if (u0 < 65536) { + str += String.fromCharCode(u0); + } else { + var ch = u0 - 65536; + str += String.fromCharCode(55296 | ch >> 10, 56320 | ch & 1023); + } + } + } + return str; + } + function UTF8ToString(ptr, maxBytesToRead) { + return ptr ? UTF8ArrayToString(HEAPU8, ptr, maxBytesToRead) : ""; + } + function stringToUTF8Array(str, heap, outIdx, maxBytesToWrite) { + if (!(maxBytesToWrite > 0)) + return 0; + var startIdx = outIdx; + var endIdx = outIdx + maxBytesToWrite - 1; + for (var i = 0; i < str.length; ++i) { + var u = str.charCodeAt(i); + if (u >= 55296 && u <= 57343) { + var u1 = str.charCodeAt(++i); + u = 65536 + ((u & 1023) << 10) | u1 & 1023; + } + if (u <= 127) { + if (outIdx >= endIdx) + break; + heap[outIdx++] = u; + } else if (u <= 2047) { + if (outIdx + 1 >= endIdx) + break; + heap[outIdx++] = 192 | u >> 6; + heap[outIdx++] = 128 | u & 63; + } else if (u <= 65535) { + if (outIdx + 2 >= endIdx) + break; + heap[outIdx++] = 224 | u >> 12; + heap[outIdx++] = 128 | u >> 6 & 63; + heap[outIdx++] = 128 | u & 63; + } else { + if (outIdx + 3 >= endIdx) + break; + heap[outIdx++] = 240 | u >> 18; + heap[outIdx++] = 128 | u >> 12 & 63; + heap[outIdx++] = 128 | u >> 6 & 63; + heap[outIdx++] = 128 | u & 63; + } + } + heap[outIdx] = 0; + return outIdx - startIdx; + } + function stringToUTF8(str, outPtr, maxBytesToWrite) { + return stringToUTF8Array(str, HEAPU8, outPtr, maxBytesToWrite); + } + function writeArrayToMemory(array2, buffer3) { + HEAP8.set(array2, buffer3); + } + function alignUp(x, multiple) { + if (x % multiple > 0) { + x += multiple - x % multiple; + } + return x; + } + var buffer2, HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64; + function updateGlobalBufferAndViews(buf) { + buffer2 = buf; + Module["HEAP8"] = HEAP8 = new Int8Array(buf); + Module["HEAP16"] = HEAP16 = new Int16Array(buf); + Module["HEAP32"] = HEAP32 = new Int32Array(buf); + Module["HEAPU8"] = HEAPU8 = new Uint8Array(buf); + Module["HEAPU16"] = HEAPU16 = new Uint16Array(buf); + Module["HEAPU32"] = HEAPU32 = new Uint32Array(buf); + Module["HEAPF32"] = HEAPF32 = new Float32Array(buf); + Module["HEAPF64"] = HEAPF64 = new Float64Array(buf); + } + var INITIAL_MEMORY = Module["INITIAL_MEMORY"] || 16777216; + var wasmTable; + var __ATPRERUN__ = []; + var __ATINIT__ = []; + var __ATMAIN__ = []; + var __ATPOSTRUN__ = []; + var runtimeInitialized = false; + __ATINIT__.push({func: function() { + ___wasm_call_ctors(); + }}); + function preRun() { + if (Module["preRun"]) { + if (typeof Module["preRun"] == "function") + Module["preRun"] = [Module["preRun"]]; + while (Module["preRun"].length) { + addOnPreRun(Module["preRun"].shift()); + } + } + callRuntimeCallbacks(__ATPRERUN__); + } + function initRuntime() { + runtimeInitialized = true; + callRuntimeCallbacks(__ATINIT__); + } + function preMain() { + callRuntimeCallbacks(__ATMAIN__); + } + function postRun() { + if (Module["postRun"]) { + if (typeof Module["postRun"] == "function") + Module["postRun"] = [Module["postRun"]]; + while (Module["postRun"].length) { + addOnPostRun(Module["postRun"].shift()); + } + } + callRuntimeCallbacks(__ATPOSTRUN__); + } + function addOnPreRun(cb) { + __ATPRERUN__.unshift(cb); + } + function addOnPostRun(cb) { + __ATPOSTRUN__.unshift(cb); + } + var runDependencies = 0; + var runDependencyWatcher = null; + var dependenciesFulfilled = null; + function addRunDependency(id) { + runDependencies++; + if (Module["monitorRunDependencies"]) { + Module["monitorRunDependencies"](runDependencies); + } + } + function removeRunDependency(id) { + runDependencies--; + if (Module["monitorRunDependencies"]) { + Module["monitorRunDependencies"](runDependencies); + } + if (runDependencies == 0) { + if (runDependencyWatcher !== null) { + clearInterval(runDependencyWatcher); + runDependencyWatcher = null; + } + if (dependenciesFulfilled) { + var callback = dependenciesFulfilled; + dependenciesFulfilled = null; + callback(); + } + } + } + Module["preloadedImages"] = {}; + Module["preloadedAudios"] = {}; + function abort(what) { + if (Module["onAbort"]) { + Module["onAbort"](what); + } + what += ""; + err(what); + ABORT = true; + EXITSTATUS = 1; + what = "abort(" + what + "). Build with -s ASSERTIONS=1 for more info."; + var e = new WebAssembly.RuntimeError(what); + readyPromiseReject(e); + throw e; + } + function hasPrefix(str, prefix) { + return String.prototype.startsWith ? str.startsWith(prefix) : str.indexOf(prefix) === 0; + } + var dataURIPrefix = "data:application/octet-stream;base64,"; + function isDataURI(filename) { + return hasPrefix(filename, dataURIPrefix); + } + var fileURIPrefix = "file://"; + function isFileURI(filename) { + return hasPrefix(filename, fileURIPrefix); + } + var wasmBinaryFile = "tfjs-backend-wasm.wasm"; + if (!isDataURI(wasmBinaryFile)) { + wasmBinaryFile = locateFile(wasmBinaryFile); + } + function getBinary(file) { + try { + if (file == wasmBinaryFile && wasmBinary) { + return new Uint8Array(wasmBinary); + } + if (readBinary) { + return readBinary(file); + } else { + throw "both async and sync fetching of the wasm failed"; + } + } catch (err2) { + abort(err2); + } + } + function getBinaryPromise() { + if (!wasmBinary && (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER)) { + if (typeof fetch === "function" && !isFileURI(wasmBinaryFile)) { + return fetch(wasmBinaryFile, {credentials: "same-origin"}).then(function(response) { + if (!response["ok"]) { + throw "failed to load wasm binary file at '" + wasmBinaryFile + "'"; + } + return response["arrayBuffer"](); + }).catch(function() { + return getBinary(wasmBinaryFile); + }); + } else { + if (readAsync) { + return new Promise(function(resolve, reject) { + readAsync(wasmBinaryFile, function(response) { + resolve(new Uint8Array(response)); + }, reject); + }); + } + } + } + return Promise.resolve().then(function() { + return getBinary(wasmBinaryFile); + }); + } + function createWasm() { + var info2 = {a: asmLibraryArg}; + function receiveInstance(instance, module2) { + var exports3 = instance.exports; + Module["asm"] = exports3; + wasmMemory = Module["asm"]["g"]; + updateGlobalBufferAndViews(wasmMemory.buffer); + wasmTable = Module["asm"]["m"]; + removeRunDependency("wasm-instantiate"); + } + addRunDependency("wasm-instantiate"); + function receiveInstantiatedSource(output) { + receiveInstance(output["instance"]); + } + function instantiateArrayBuffer(receiver) { + return getBinaryPromise().then(function(binary) { + return WebAssembly.instantiate(binary, info2); + }).then(receiver, function(reason) { + err("failed to asynchronously prepare wasm: " + reason); + abort(reason); + }); + } + function instantiateAsync() { + if (!wasmBinary && typeof WebAssembly.instantiateStreaming === "function" && !isDataURI(wasmBinaryFile) && !isFileURI(wasmBinaryFile) && typeof fetch === "function") { + return fetch(wasmBinaryFile, {credentials: "same-origin"}).then(function(response) { + var result = WebAssembly.instantiateStreaming(response, info2); + return result.then(receiveInstantiatedSource, function(reason) { + err("wasm streaming compile failed: " + reason); + err("falling back to ArrayBuffer instantiation"); + return instantiateArrayBuffer(receiveInstantiatedSource); + }); + }); + } else { + return instantiateArrayBuffer(receiveInstantiatedSource); + } + } + if (Module["instantiateWasm"]) { + try { + var exports2 = Module["instantiateWasm"](info2, receiveInstance); + return exports2; + } catch (e) { + err("Module.instantiateWasm callback failed with error: " + e); + return false; + } + } + instantiateAsync().catch(readyPromiseReject); + return {}; + } + function callRuntimeCallbacks(callbacks2) { + while (callbacks2.length > 0) { + var callback = callbacks2.shift(); + if (typeof callback == "function") { + callback(Module); + continue; + } + var func2 = callback.func; + if (typeof func2 === "number") { + if (callback.arg === void 0) { + wasmTable.get(func2)(); + } else { + wasmTable.get(func2)(callback.arg); + } + } else { + func2(callback.arg === void 0 ? null : callback.arg); + } + } + } + function _abort() { + abort(); + } + function _emscripten_memcpy_big(dest, src, num) { + HEAPU8.copyWithin(dest, src, src + num); + } + function _emscripten_get_heap_size() { + return HEAPU8.length; + } + function emscripten_realloc_buffer(size) { + try { + wasmMemory.grow(size - buffer2.byteLength + 65535 >>> 16); + updateGlobalBufferAndViews(wasmMemory.buffer); + return 1; + } catch (e) { + } + } + function _emscripten_resize_heap(requestedSize) { + var oldSize = _emscripten_get_heap_size(); + var maxHeapSize = 2147483648; + if (requestedSize > maxHeapSize) { + return false; + } + for (var cutDown = 1; cutDown <= 4; cutDown *= 2) { + var overGrownHeapSize = oldSize * (1 + 0.2 / cutDown); + overGrownHeapSize = Math.min(overGrownHeapSize, requestedSize + 100663296); + var newSize = Math.min(maxHeapSize, alignUp(Math.max(requestedSize, overGrownHeapSize), 65536)); + var replacement = emscripten_realloc_buffer(newSize); + if (replacement) { + return true; + } + } + return false; + } + var SYSCALLS = {mappings: {}, buffers: [null, [], []], printChar: function(stream, curr) { + var buffer3 = SYSCALLS.buffers[stream]; + if (curr === 0 || curr === 10) { + (stream === 1 ? out : err)(UTF8ArrayToString(buffer3, 0)); + buffer3.length = 0; + } else { + buffer3.push(curr); + } + }, varargs: void 0, get: function() { + SYSCALLS.varargs += 4; + var ret = HEAP32[SYSCALLS.varargs - 4 >> 2]; + return ret; + }, getStr: function(ptr) { + var ret = UTF8ToString(ptr); + return ret; + }, get64: function(low, high) { + return low; + }}; + function _fd_close(fd) { + return 0; + } + function _fd_seek(fd, offset_low, offset_high, whence, newOffset) { + } + function _fd_write(fd, iov, iovcnt, pnum) { + var num = 0; + for (var i = 0; i < iovcnt; i++) { + var ptr = HEAP32[iov + i * 8 >> 2]; + var len = HEAP32[iov + (i * 8 + 4) >> 2]; + for (var j = 0; j < len; j++) { + SYSCALLS.printChar(fd, HEAPU8[ptr + j]); + } + num += len; + } + HEAP32[pnum >> 2] = num; + return 0; + } + var asmLibraryArg = {a: _abort, d: _emscripten_memcpy_big, e: _emscripten_resize_heap, f: _fd_close, c: _fd_seek, b: _fd_write}; + var asm = createWasm(); + var ___wasm_call_ctors = Module["___wasm_call_ctors"] = function() { + return (___wasm_call_ctors = Module["___wasm_call_ctors"] = Module["asm"]["h"]).apply(null, arguments); + }; + var _init = Module["_init"] = function() { + return (_init = Module["_init"] = Module["asm"]["i"]).apply(null, arguments); + }; + var _register_tensor = Module["_register_tensor"] = function() { + return (_register_tensor = Module["_register_tensor"] = Module["asm"]["j"]).apply(null, arguments); + }; + var _dispose_data = Module["_dispose_data"] = function() { + return (_dispose_data = Module["_dispose_data"] = Module["asm"]["k"]).apply(null, arguments); + }; + var _dispose = Module["_dispose"] = function() { + return (_dispose = Module["_dispose"] = Module["asm"]["l"]).apply(null, arguments); + }; + var _Abs = Module["_Abs"] = function() { + return (_Abs = Module["_Abs"] = Module["asm"]["n"]).apply(null, arguments); + }; + var _Add = Module["_Add"] = function() { + return (_Add = Module["_Add"] = Module["asm"]["o"]).apply(null, arguments); + }; + var _AddN = Module["_AddN"] = function() { + return (_AddN = Module["_AddN"] = Module["asm"]["p"]).apply(null, arguments); + }; + var _ArgMax = Module["_ArgMax"] = function() { + return (_ArgMax = Module["_ArgMax"] = Module["asm"]["q"]).apply(null, arguments); + }; + var _AvgPool = Module["_AvgPool"] = function() { + return (_AvgPool = Module["_AvgPool"] = Module["asm"]["r"]).apply(null, arguments); + }; + var _BatchMatMul = Module["_BatchMatMul"] = function() { + return (_BatchMatMul = Module["_BatchMatMul"] = Module["asm"]["s"]).apply(null, arguments); + }; + var _Ceil = Module["_Ceil"] = function() { + return (_Ceil = Module["_Ceil"] = Module["asm"]["t"]).apply(null, arguments); + }; + var _ClipByValue = Module["_ClipByValue"] = function() { + return (_ClipByValue = Module["_ClipByValue"] = Module["asm"]["u"]).apply(null, arguments); + }; + var _Conv2D = Module["_Conv2D"] = function() { + return (_Conv2D = Module["_Conv2D"] = Module["asm"]["v"]).apply(null, arguments); + }; + var _Conv2DBackpropInput = Module["_Conv2DBackpropInput"] = function() { + return (_Conv2DBackpropInput = Module["_Conv2DBackpropInput"] = Module["asm"]["w"]).apply(null, arguments); + }; + var _Cos = Module["_Cos"] = function() { + return (_Cos = Module["_Cos"] = Module["asm"]["x"]).apply(null, arguments); + }; + var _CropAndResize = Module["_CropAndResize"] = function() { + return (_CropAndResize = Module["_CropAndResize"] = Module["asm"]["y"]).apply(null, arguments); + }; + var _Cumsum = Module["_Cumsum"] = function() { + return (_Cumsum = Module["_Cumsum"] = Module["asm"]["z"]).apply(null, arguments); + }; + var _DepthToSpace = Module["_DepthToSpace"] = function() { + return (_DepthToSpace = Module["_DepthToSpace"] = Module["asm"]["A"]).apply(null, arguments); + }; + var _DepthwiseConv2dNative = Module["_DepthwiseConv2dNative"] = function() { + return (_DepthwiseConv2dNative = Module["_DepthwiseConv2dNative"] = Module["asm"]["B"]).apply(null, arguments); + }; + var _Equal = Module["_Equal"] = function() { + return (_Equal = Module["_Equal"] = Module["asm"]["C"]).apply(null, arguments); + }; + var _Exp = Module["_Exp"] = function() { + return (_Exp = Module["_Exp"] = Module["asm"]["D"]).apply(null, arguments); + }; + var _FlipLeftRight = Module["_FlipLeftRight"] = function() { + return (_FlipLeftRight = Module["_FlipLeftRight"] = Module["asm"]["E"]).apply(null, arguments); + }; + var _Floor = Module["_Floor"] = function() { + return (_Floor = Module["_Floor"] = Module["asm"]["F"]).apply(null, arguments); + }; + var _FloorDiv = Module["_FloorDiv"] = function() { + return (_FloorDiv = Module["_FloorDiv"] = Module["asm"]["G"]).apply(null, arguments); + }; + var _FusedBatchNorm = Module["_FusedBatchNorm"] = function() { + return (_FusedBatchNorm = Module["_FusedBatchNorm"] = Module["asm"]["H"]).apply(null, arguments); + }; + var _FusedConv2D = Module["_FusedConv2D"] = function() { + return (_FusedConv2D = Module["_FusedConv2D"] = Module["asm"]["I"]).apply(null, arguments); + }; + var _FusedDepthwiseConv2D = Module["_FusedDepthwiseConv2D"] = function() { + return (_FusedDepthwiseConv2D = Module["_FusedDepthwiseConv2D"] = Module["asm"]["J"]).apply(null, arguments); + }; + var _Gather = Module["_Gather"] = function() { + return (_Gather = Module["_Gather"] = Module["asm"]["K"]).apply(null, arguments); + }; + var _GatherNd = Module["_GatherNd"] = function() { + return (_GatherNd = Module["_GatherNd"] = Module["asm"]["L"]).apply(null, arguments); + }; + var _Greater = Module["_Greater"] = function() { + return (_Greater = Module["_Greater"] = Module["asm"]["M"]).apply(null, arguments); + }; + var _GreaterEqual = Module["_GreaterEqual"] = function() { + return (_GreaterEqual = Module["_GreaterEqual"] = Module["asm"]["N"]).apply(null, arguments); + }; + var _LeakyRelu = Module["_LeakyRelu"] = function() { + return (_LeakyRelu = Module["_LeakyRelu"] = Module["asm"]["O"]).apply(null, arguments); + }; + var _Less = Module["_Less"] = function() { + return (_Less = Module["_Less"] = Module["asm"]["P"]).apply(null, arguments); + }; + var _LessEqual = Module["_LessEqual"] = function() { + return (_LessEqual = Module["_LessEqual"] = Module["asm"]["Q"]).apply(null, arguments); + }; + var _Log = Module["_Log"] = function() { + return (_Log = Module["_Log"] = Module["asm"]["R"]).apply(null, arguments); + }; + var _LogicalAnd = Module["_LogicalAnd"] = function() { + return (_LogicalAnd = Module["_LogicalAnd"] = Module["asm"]["S"]).apply(null, arguments); + }; + var _Max = Module["_Max"] = function() { + return (_Max = Module["_Max"] = Module["asm"]["T"]).apply(null, arguments); + }; + var _MaxPool = Module["_MaxPool"] = function() { + return (_MaxPool = Module["_MaxPool"] = Module["asm"]["U"]).apply(null, arguments); + }; + var _Maximum = Module["_Maximum"] = function() { + return (_Maximum = Module["_Maximum"] = Module["asm"]["V"]).apply(null, arguments); + }; + var _Mean = Module["_Mean"] = function() { + return (_Mean = Module["_Mean"] = Module["asm"]["W"]).apply(null, arguments); + }; + var _Min = Module["_Min"] = function() { + return (_Min = Module["_Min"] = Module["asm"]["X"]).apply(null, arguments); + }; + var _Minimum = Module["_Minimum"] = function() { + return (_Minimum = Module["_Minimum"] = Module["asm"]["Y"]).apply(null, arguments); + }; + var _Multiply = Module["_Multiply"] = function() { + return (_Multiply = Module["_Multiply"] = Module["asm"]["Z"]).apply(null, arguments); + }; + var _Neg = Module["_Neg"] = function() { + return (_Neg = Module["_Neg"] = Module["asm"]["_"]).apply(null, arguments); + }; + var _NonMaxSuppressionV3 = Module["_NonMaxSuppressionV3"] = function() { + return (_NonMaxSuppressionV3 = Module["_NonMaxSuppressionV3"] = Module["asm"]["$"]).apply(null, arguments); + }; + var _NonMaxSuppressionV4 = Module["_NonMaxSuppressionV4"] = function() { + return (_NonMaxSuppressionV4 = Module["_NonMaxSuppressionV4"] = Module["asm"]["aa"]).apply(null, arguments); + }; + var _NonMaxSuppressionV5 = Module["_NonMaxSuppressionV5"] = function() { + return (_NonMaxSuppressionV5 = Module["_NonMaxSuppressionV5"] = Module["asm"]["ba"]).apply(null, arguments); + }; + var _NotEqual = Module["_NotEqual"] = function() { + return (_NotEqual = Module["_NotEqual"] = Module["asm"]["ca"]).apply(null, arguments); + }; + var _OneHot = Module["_OneHot"] = function() { + return (_OneHot = Module["_OneHot"] = Module["asm"]["da"]).apply(null, arguments); + }; + var _PadV2 = Module["_PadV2"] = function() { + return (_PadV2 = Module["_PadV2"] = Module["asm"]["ea"]).apply(null, arguments); + }; + var _Pow = Module["_Pow"] = function() { + return (_Pow = Module["_Pow"] = Module["asm"]["fa"]).apply(null, arguments); + }; + var _Prelu = Module["_Prelu"] = function() { + return (_Prelu = Module["_Prelu"] = Module["asm"]["ga"]).apply(null, arguments); + }; + var _Prod = Module["_Prod"] = function() { + return (_Prod = Module["_Prod"] = Module["asm"]["ha"]).apply(null, arguments); + }; + var _RealDiv = Module["_RealDiv"] = function() { + return (_RealDiv = Module["_RealDiv"] = Module["asm"]["ia"]).apply(null, arguments); + }; + var _Relu = Module["_Relu"] = function() { + return (_Relu = Module["_Relu"] = Module["asm"]["ja"]).apply(null, arguments); + }; + var _Relu6 = Module["_Relu6"] = function() { + return (_Relu6 = Module["_Relu6"] = Module["asm"]["ka"]).apply(null, arguments); + }; + var _ResizeBilinear = Module["_ResizeBilinear"] = function() { + return (_ResizeBilinear = Module["_ResizeBilinear"] = Module["asm"]["la"]).apply(null, arguments); + }; + var _Reverse = Module["_Reverse"] = function() { + return (_Reverse = Module["_Reverse"] = Module["asm"]["ma"]).apply(null, arguments); + }; + var _RotateWithOffset = Module["_RotateWithOffset"] = function() { + return (_RotateWithOffset = Module["_RotateWithOffset"] = Module["asm"]["na"]).apply(null, arguments); + }; + var _Round = Module["_Round"] = function() { + return (_Round = Module["_Round"] = Module["asm"]["oa"]).apply(null, arguments); + }; + var _Rsqrt = Module["_Rsqrt"] = function() { + return (_Rsqrt = Module["_Rsqrt"] = Module["asm"]["pa"]).apply(null, arguments); + }; + var _ScatterNd = Module["_ScatterNd"] = function() { + return (_ScatterNd = Module["_ScatterNd"] = Module["asm"]["qa"]).apply(null, arguments); + }; + var _SelectV2 = Module["_SelectV2"] = function() { + return (_SelectV2 = Module["_SelectV2"] = Module["asm"]["ra"]).apply(null, arguments); + }; + var _Sigmoid = Module["_Sigmoid"] = function() { + return (_Sigmoid = Module["_Sigmoid"] = Module["asm"]["sa"]).apply(null, arguments); + }; + var _Sin = Module["_Sin"] = function() { + return (_Sin = Module["_Sin"] = Module["asm"]["ta"]).apply(null, arguments); + }; + var _Softmax = Module["_Softmax"] = function() { + return (_Softmax = Module["_Softmax"] = Module["asm"]["ua"]).apply(null, arguments); + }; + var _Sqrt = Module["_Sqrt"] = function() { + return (_Sqrt = Module["_Sqrt"] = Module["asm"]["va"]).apply(null, arguments); + }; + var _Square = Module["_Square"] = function() { + return (_Square = Module["_Square"] = Module["asm"]["wa"]).apply(null, arguments); + }; + var _SquaredDifference = Module["_SquaredDifference"] = function() { + return (_SquaredDifference = Module["_SquaredDifference"] = Module["asm"]["xa"]).apply(null, arguments); + }; + var _Step = Module["_Step"] = function() { + return (_Step = Module["_Step"] = Module["asm"]["ya"]).apply(null, arguments); + }; + var _StridedSlice = Module["_StridedSlice"] = function() { + return (_StridedSlice = Module["_StridedSlice"] = Module["asm"]["za"]).apply(null, arguments); + }; + var _Sub = Module["_Sub"] = function() { + return (_Sub = Module["_Sub"] = Module["asm"]["Aa"]).apply(null, arguments); + }; + var _Sum = Module["_Sum"] = function() { + return (_Sum = Module["_Sum"] = Module["asm"]["Ba"]).apply(null, arguments); + }; + var _Tanh = Module["_Tanh"] = function() { + return (_Tanh = Module["_Tanh"] = Module["asm"]["Ca"]).apply(null, arguments); + }; + var _Tile = Module["_Tile"] = function() { + return (_Tile = Module["_Tile"] = Module["asm"]["Da"]).apply(null, arguments); + }; + var _TopK = Module["_TopK"] = function() { + return (_TopK = Module["_TopK"] = Module["asm"]["Ea"]).apply(null, arguments); + }; + var _Transpose = Module["_Transpose"] = function() { + return (_Transpose = Module["_Transpose"] = Module["asm"]["Fa"]).apply(null, arguments); + }; + var __FusedMatMul = Module["__FusedMatMul"] = function() { + return (__FusedMatMul = Module["__FusedMatMul"] = Module["asm"]["Ga"]).apply(null, arguments); + }; + var _malloc = Module["_malloc"] = function() { + return (_malloc = Module["_malloc"] = Module["asm"]["Ha"]).apply(null, arguments); + }; + var _free = Module["_free"] = function() { + return (_free = Module["_free"] = Module["asm"]["Ia"]).apply(null, arguments); + }; + var stackSave = Module["stackSave"] = function() { + return (stackSave = Module["stackSave"] = Module["asm"]["Ja"]).apply(null, arguments); + }; + var stackRestore = Module["stackRestore"] = function() { + return (stackRestore = Module["stackRestore"] = Module["asm"]["Ka"]).apply(null, arguments); + }; + var stackAlloc = Module["stackAlloc"] = function() { + return (stackAlloc = Module["stackAlloc"] = Module["asm"]["La"]).apply(null, arguments); + }; + Module["cwrap"] = cwrap; + var calledRun; + function ExitStatus(status) { + this.name = "ExitStatus"; + this.message = "Program terminated with exit(" + status + ")"; + this.status = status; + } + dependenciesFulfilled = function runCaller() { + if (!calledRun) + run2(); + if (!calledRun) + dependenciesFulfilled = runCaller; + }; + function run2(args) { + args = args || arguments_; + if (runDependencies > 0) { + return; + } + preRun(); + if (runDependencies > 0) { + return; + } + function doRun() { + if (calledRun) + return; + calledRun = true; + Module["calledRun"] = true; + if (ABORT) + return; + initRuntime(); + preMain(); + readyPromiseResolve(Module); + if (Module["onRuntimeInitialized"]) + Module["onRuntimeInitialized"](); + postRun(); + } + if (Module["setStatus"]) { + Module["setStatus"]("Running..."); + setTimeout(function() { + setTimeout(function() { + Module["setStatus"](""); + }, 1); + doRun(); + }, 1); + } else { + doRun(); + } + } + Module["run"] = run2; + if (Module["preInit"]) { + if (typeof Module["preInit"] == "function") + Module["preInit"] = [Module["preInit"]]; + while (Module["preInit"].length > 0) { + Module["preInit"].pop()(); + } + } + run2(); + return WasmBackendModule2.ready; + }; + }(); + if (typeof exports === "object" && typeof module === "object") + module.exports = WasmBackendModule; + else if (typeof define === "function" && define["amd"]) + define([], function() { + return WasmBackendModule; + }); + else if (typeof exports === "object") + exports["WasmBackendModule"] = WasmBackendModule; +}); +var require_alea2 = __commonJS2((exports, module) => { + (function(global2, module2, define2) { + function Alea(seed) { + var me = this, mash = Mash(); + me.next = function() { + var t = 2091639 * me.s0 + me.c * 23283064365386963e-26; + me.s0 = me.s1; + me.s1 = me.s2; + return me.s2 = t - (me.c = t | 0); + }; + me.c = 1; + me.s0 = mash(" "); + me.s1 = mash(" "); + me.s2 = mash(" "); + me.s0 -= mash(seed); + if (me.s0 < 0) { + me.s0 += 1; + } + me.s1 -= mash(seed); + if (me.s1 < 0) { + me.s1 += 1; + } + me.s2 -= mash(seed); + if (me.s2 < 0) { + me.s2 += 1; + } + mash = null; + } + function copy(f, t) { + t.c = f.c; + t.s0 = f.s0; + t.s1 = f.s1; + t.s2 = f.s2; + return t; + } + function impl(seed, opts) { + var xg = new Alea(seed), state = opts && opts.state, prng = xg.next; + prng.int32 = function() { + return xg.next() * 4294967296 | 0; + }; + prng.double = function() { + return prng() + (prng() * 2097152 | 0) * 11102230246251565e-32; + }; + prng.quick = prng; + if (state) { + if (typeof state == "object") + copy(state, xg); + prng.state = function() { + return copy(xg, {}); + }; + } + return prng; + } + function Mash() { + var n = 4022871197; + var mash = function(data2) { + data2 = String(data2); + for (var i = 0; i < data2.length; i++) { + n += data2.charCodeAt(i); + var h = 0.02519603282416938 * n; + n = h >>> 0; + h -= n; + h *= n; + n = h >>> 0; + h -= n; + n += h * 4294967296; + } + return (n >>> 0) * 23283064365386963e-26; + }; + return mash; + } + if (module2 && module2.exports) { + module2.exports = impl; + } else if (define2 && define2.amd) { + define2(function() { + return impl; + }); + } else { + this.alea = impl; + } + })(exports, typeof module == "object" && module, typeof define == "function" && define); +}); +var require_xor1282 = __commonJS2((exports, module) => { + (function(global2, module2, define2) { + function XorGen(seed) { + var me = this, strseed = ""; + me.x = 0; + me.y = 0; + me.z = 0; + me.w = 0; + me.next = function() { + var t = me.x ^ me.x << 11; + me.x = me.y; + me.y = me.z; + me.z = me.w; + return me.w ^= me.w >>> 19 ^ t ^ t >>> 8; + }; + if (seed === (seed | 0)) { + me.x = seed; + } else { + strseed += seed; + } + for (var k = 0; k < strseed.length + 64; k++) { + me.x ^= strseed.charCodeAt(k) | 0; + me.next(); + } + } + function copy(f, t) { + t.x = f.x; + t.y = f.y; + t.z = f.z; + t.w = f.w; + return t; + } + function impl(seed, opts) { + var xg = new XorGen(seed), state = opts && opts.state, prng = function() { + return (xg.next() >>> 0) / 4294967296; + }; + prng.double = function() { + do { + var top = xg.next() >>> 11, bot = (xg.next() >>> 0) / 4294967296, result = (top + bot) / (1 << 21); + } while (result === 0); + return result; + }; + prng.int32 = xg.next; + prng.quick = prng; + if (state) { + if (typeof state == "object") + copy(state, xg); + prng.state = function() { + return copy(xg, {}); + }; + } + return prng; + } + if (module2 && module2.exports) { + module2.exports = impl; + } else if (define2 && define2.amd) { + define2(function() { + return impl; + }); + } else { + this.xor128 = impl; + } + })(exports, typeof module == "object" && module, typeof define == "function" && define); +}); +var require_xorwow2 = __commonJS2((exports, module) => { + (function(global2, module2, define2) { + function XorGen(seed) { + var me = this, strseed = ""; + me.next = function() { + var t = me.x ^ me.x >>> 2; + me.x = me.y; + me.y = me.z; + me.z = me.w; + me.w = me.v; + return (me.d = me.d + 362437 | 0) + (me.v = me.v ^ me.v << 4 ^ (t ^ t << 1)) | 0; + }; + me.x = 0; + me.y = 0; + me.z = 0; + me.w = 0; + me.v = 0; + if (seed === (seed | 0)) { + me.x = seed; + } else { + strseed += seed; + } + for (var k = 0; k < strseed.length + 64; k++) { + me.x ^= strseed.charCodeAt(k) | 0; + if (k == strseed.length) { + me.d = me.x << 10 ^ me.x >>> 4; + } + me.next(); + } + } + function copy(f, t) { + t.x = f.x; + t.y = f.y; + t.z = f.z; + t.w = f.w; + t.v = f.v; + t.d = f.d; + return t; + } + function impl(seed, opts) { + var xg = new XorGen(seed), state = opts && opts.state, prng = function() { + return (xg.next() >>> 0) / 4294967296; + }; + prng.double = function() { + do { + var top = xg.next() >>> 11, bot = (xg.next() >>> 0) / 4294967296, result = (top + bot) / (1 << 21); + } while (result === 0); + return result; + }; + prng.int32 = xg.next; + prng.quick = prng; + if (state) { + if (typeof state == "object") + copy(state, xg); + prng.state = function() { + return copy(xg, {}); + }; + } + return prng; + } + if (module2 && module2.exports) { + module2.exports = impl; + } else if (define2 && define2.amd) { + define2(function() { + return impl; + }); + } else { + this.xorwow = impl; + } + })(exports, typeof module == "object" && module, typeof define == "function" && define); +}); +var require_xorshift72 = __commonJS2((exports, module) => { + (function(global2, module2, define2) { + function XorGen(seed) { + var me = this; + me.next = function() { + var X = me.x, i = me.i, t, v, w; + t = X[i]; + t ^= t >>> 7; + v = t ^ t << 24; + t = X[i + 1 & 7]; + v ^= t ^ t >>> 10; + t = X[i + 3 & 7]; + v ^= t ^ t >>> 3; + t = X[i + 4 & 7]; + v ^= t ^ t << 7; + t = X[i + 7 & 7]; + t = t ^ t << 13; + v ^= t ^ t << 9; + X[i] = v; + me.i = i + 1 & 7; + return v; + }; + function init2(me2, seed2) { + var j, w, X = []; + if (seed2 === (seed2 | 0)) { + w = X[0] = seed2; + } else { + seed2 = "" + seed2; + for (j = 0; j < seed2.length; ++j) { + X[j & 7] = X[j & 7] << 15 ^ seed2.charCodeAt(j) + X[j + 1 & 7] << 13; + } + } + while (X.length < 8) + X.push(0); + for (j = 0; j < 8 && X[j] === 0; ++j) + ; + if (j == 8) + w = X[7] = -1; + else + w = X[j]; + me2.x = X; + me2.i = 0; + for (j = 256; j > 0; --j) { + me2.next(); + } + } + init2(me, seed); + } + function copy(f, t) { + t.x = f.x.slice(); + t.i = f.i; + return t; + } + function impl(seed, opts) { + if (seed == null) + seed = +new Date(); + var xg = new XorGen(seed), state = opts && opts.state, prng = function() { + return (xg.next() >>> 0) / 4294967296; + }; + prng.double = function() { + do { + var top = xg.next() >>> 11, bot = (xg.next() >>> 0) / 4294967296, result = (top + bot) / (1 << 21); + } while (result === 0); + return result; + }; + prng.int32 = xg.next; + prng.quick = prng; + if (state) { + if (state.x) + copy(state, xg); + prng.state = function() { + return copy(xg, {}); + }; + } + return prng; + } + if (module2 && module2.exports) { + module2.exports = impl; + } else if (define2 && define2.amd) { + define2(function() { + return impl; + }); + } else { + this.xorshift7 = impl; + } + })(exports, typeof module == "object" && module, typeof define == "function" && define); +}); +var require_xor40962 = __commonJS2((exports, module) => { + (function(global2, module2, define2) { + function XorGen(seed) { + var me = this; + me.next = function() { + var w = me.w, X = me.X, i = me.i, t, v; + me.w = w = w + 1640531527 | 0; + v = X[i + 34 & 127]; + t = X[i = i + 1 & 127]; + v ^= v << 13; + t ^= t << 17; + v ^= v >>> 15; + t ^= t >>> 12; + v = X[i] = v ^ t; + me.i = i; + return v + (w ^ w >>> 16) | 0; + }; + function init2(me2, seed2) { + var t, v, i, j, w, X = [], limit = 128; + if (seed2 === (seed2 | 0)) { + v = seed2; + seed2 = null; + } else { + seed2 = seed2 + "\0"; + v = 0; + limit = Math.max(limit, seed2.length); + } + for (i = 0, j = -32; j < limit; ++j) { + if (seed2) + v ^= seed2.charCodeAt((j + 32) % seed2.length); + if (j === 0) + w = v; + v ^= v << 10; + v ^= v >>> 15; + v ^= v << 4; + v ^= v >>> 13; + if (j >= 0) { + w = w + 1640531527 | 0; + t = X[j & 127] ^= v + w; + i = t == 0 ? i + 1 : 0; + } + } + if (i >= 128) { + X[(seed2 && seed2.length || 0) & 127] = -1; + } + i = 127; + for (j = 4 * 128; j > 0; --j) { + v = X[i + 34 & 127]; + t = X[i = i + 1 & 127]; + v ^= v << 13; + t ^= t << 17; + v ^= v >>> 15; + t ^= t >>> 12; + X[i] = v ^ t; + } + me2.w = w; + me2.X = X; + me2.i = i; + } + init2(me, seed); + } + function copy(f, t) { + t.i = f.i; + t.w = f.w; + t.X = f.X.slice(); + return t; + } + ; + function impl(seed, opts) { + if (seed == null) + seed = +new Date(); + var xg = new XorGen(seed), state = opts && opts.state, prng = function() { + return (xg.next() >>> 0) / 4294967296; + }; + prng.double = function() { + do { + var top = xg.next() >>> 11, bot = (xg.next() >>> 0) / 4294967296, result = (top + bot) / (1 << 21); + } while (result === 0); + return result; + }; + prng.int32 = xg.next; + prng.quick = prng; + if (state) { + if (state.X) + copy(state, xg); + prng.state = function() { + return copy(xg, {}); + }; + } + return prng; + } + if (module2 && module2.exports) { + module2.exports = impl; + } else if (define2 && define2.amd) { + define2(function() { + return impl; + }); + } else { + this.xor4096 = impl; + } + })(exports, typeof module == "object" && module, typeof define == "function" && define); +}); +var require_tychei2 = __commonJS2((exports, module) => { + (function(global2, module2, define2) { + function XorGen(seed) { + var me = this, strseed = ""; + me.next = function() { + var b = me.b, c = me.c, d = me.d, a = me.a; + b = b << 25 ^ b >>> 7 ^ c; + c = c - d | 0; + d = d << 24 ^ d >>> 8 ^ a; + a = a - b | 0; + me.b = b = b << 20 ^ b >>> 12 ^ c; + me.c = c = c - d | 0; + me.d = d << 16 ^ c >>> 16 ^ a; + return me.a = a - b | 0; + }; + me.a = 0; + me.b = 0; + me.c = 2654435769 | 0; + me.d = 1367130551; + if (seed === Math.floor(seed)) { + me.a = seed / 4294967296 | 0; + me.b = seed | 0; + } else { + strseed += seed; + } + for (var k = 0; k < strseed.length + 20; k++) { + me.b ^= strseed.charCodeAt(k) | 0; + me.next(); + } + } + function copy(f, t) { + t.a = f.a; + t.b = f.b; + t.c = f.c; + t.d = f.d; + return t; + } + ; + function impl(seed, opts) { + var xg = new XorGen(seed), state = opts && opts.state, prng = function() { + return (xg.next() >>> 0) / 4294967296; + }; + prng.double = function() { + do { + var top = xg.next() >>> 11, bot = (xg.next() >>> 0) / 4294967296, result = (top + bot) / (1 << 21); + } while (result === 0); + return result; + }; + prng.int32 = xg.next; + prng.quick = prng; + if (state) { + if (typeof state == "object") + copy(state, xg); + prng.state = function() { + return copy(xg, {}); + }; + } + return prng; + } + if (module2 && module2.exports) { + module2.exports = impl; + } else if (define2 && define2.amd) { + define2(function() { + return impl; + }); + } else { + this.tychei = impl; + } + })(exports, typeof module == "object" && module, typeof define == "function" && define); +}); +var require_seedrandom3 = __commonJS2((exports, module) => { + (function(global2, pool3, math) { + var width = 256, chunks = 6, digits = 52, rngname = "random", startdenom = math.pow(width, chunks), significance = math.pow(2, digits), overflow = significance * 2, mask = width - 1, nodecrypto; + function seedrandom5(seed, options, callback) { + var key = []; + options = options == true ? {entropy: true} : options || {}; + var shortseed = mixkey(flatten4(options.entropy ? [seed, tostring(pool3)] : seed == null ? autoseed() : seed, 3), key); + var arc4 = new ARC4(key); + var prng = function() { + var n = arc4.g(chunks), d = startdenom, x = 0; + while (n < significance) { + n = (n + x) * width; + d *= width; + x = arc4.g(1); + } + while (n >= overflow) { + n /= 2; + d /= 2; + x >>>= 1; + } + return (n + x) / d; + }; + prng.int32 = function() { + return arc4.g(4) | 0; + }; + prng.quick = function() { + return arc4.g(4) / 4294967296; + }; + prng.double = prng; + mixkey(tostring(arc4.S), pool3); + return (options.pass || callback || function(prng2, seed2, is_math_call, state) { + if (state) { + if (state.S) { + copy(state, arc4); + } + prng2.state = function() { + return copy(arc4, {}); + }; + } + if (is_math_call) { + math[rngname] = prng2; + return seed2; + } else + return prng2; + })(prng, shortseed, "global" in options ? options.global : this == math, options.state); + } + function ARC4(key) { + var t, keylen = key.length, me = this, i = 0, j = me.i = me.j = 0, s = me.S = []; + if (!keylen) { + key = [keylen++]; + } + while (i < width) { + s[i] = i++; + } + for (i = 0; i < width; i++) { + s[i] = s[j = mask & j + key[i % keylen] + (t = s[i])]; + s[j] = t; + } + (me.g = function(count2) { + var t2, r = 0, i2 = me.i, j2 = me.j, s2 = me.S; + while (count2--) { + t2 = s2[i2 = mask & i2 + 1]; + r = r * width + s2[mask & (s2[i2] = s2[j2 = mask & j2 + t2]) + (s2[j2] = t2)]; + } + me.i = i2; + me.j = j2; + return r; + })(width); + } + function copy(f, t) { + t.i = f.i; + t.j = f.j; + t.S = f.S.slice(); + return t; + } + ; + function flatten4(obj, depth) { + var result = [], typ = typeof obj, prop; + if (depth && typ == "object") { + for (prop in obj) { + try { + result.push(flatten4(obj[prop], depth - 1)); + } catch (e) { + } + } + } + return result.length ? result : typ == "string" ? obj : obj + "\0"; + } + function mixkey(seed, key) { + var stringseed = seed + "", smear, j = 0; + while (j < stringseed.length) { + key[mask & j] = mask & (smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++); + } + return tostring(key); + } + function autoseed() { + try { + var out; + if (nodecrypto && (out = nodecrypto.randomBytes)) { + out = out(width); + } else { + out = new Uint8Array(width); + (global2.crypto || global2.msCrypto).getRandomValues(out); + } + return tostring(out); + } catch (e) { + var browser = global2.navigator, plugins = browser && browser.plugins; + return [+new Date(), global2, plugins, global2.screen, tostring(pool3)]; + } + } + function tostring(a) { + return String.fromCharCode.apply(0, a); + } + mixkey(math.random(), pool3); + if (typeof module == "object" && module.exports) { + module.exports = seedrandom5; + try { + nodecrypto = require_crypto(); + } catch (ex) { + } + } else if (typeof define == "function" && define.amd) { + define(function() { + return seedrandom5; + }); + } else { + math["seed" + rngname] = seedrandom5; + } + })(typeof self !== "undefined" ? self : exports, [], Math); +}); +var require_seedrandom4 = __commonJS2((exports, module) => { + var alea5 = require_alea2(); + var xor128 = require_xor1282(); + var xorwow = require_xorwow2(); + var xorshift7 = require_xorshift72(); + var xor4096 = require_xor40962(); + var tychei = require_tychei2(); + var sr = require_seedrandom3(); + sr.alea = alea5; + sr.xor128 = xor128; + sr.xorwow = xorwow; + sr.xorshift7 = xorshift7; + sr.xor4096 = xor4096; + sr.tychei = tychei; + module.exports = sr; +}); +var require_string_decoder = __commonJS2(() => { +}); +var version = "3.3.0"; +var version2 = "3.3.0"; +var version3 = "3.3.0"; +var version4 = "3.3.0"; +var version5 = "3.3.0"; +/** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ +var EPSILON_FLOAT32 = 1e-7; +var EPSILON_FLOAT16 = 1e-4; +var DataStorage = class { + constructor(backend22, dataMover) { + this.backend = backend22; + this.dataMover = dataMover; + this.data = new WeakMap(); + this.dataIdsCount = 0; + } + get(dataId) { + if (!this.data.has(dataId)) { + this.dataMover.moveData(this.backend, dataId); + } + return this.data.get(dataId); + } + set(dataId, value) { + this.dataIdsCount++; + this.data.set(dataId, value); + } + has(dataId) { + return this.data.has(dataId); + } + delete(dataId) { + this.dataIdsCount--; + return this.data.delete(dataId); + } + numDataIds() { + return this.dataIdsCount; + } +}; +var KernelBackend = class { + refCount(dataId) { + return notYetImplemented("refCount"); + } + incRef(dataId) { + return notYetImplemented("incRef"); + } + timerAvailable() { + return true; + } + time(f) { + return notYetImplemented("time"); + } + read(dataId) { + return notYetImplemented("read"); + } + readSync(dataId) { + return notYetImplemented("readSync"); + } + numDataIds() { + return notYetImplemented("numDataIds"); + } + disposeData(dataId, force) { + return notYetImplemented("disposeData"); + } + write(values, shape, dtype) { + return notYetImplemented("write"); + } + move(dataId, values, shape, dtype, refCount) { + return notYetImplemented("move"); + } + memory() { + return notYetImplemented("memory"); + } + floatPrecision() { + return notYetImplemented("floatPrecision"); + } + epsilon() { + return this.floatPrecision() === 32 ? EPSILON_FLOAT32 : EPSILON_FLOAT16; + } + dispose() { + return notYetImplemented("dispose"); + } +}; +function notYetImplemented(kernelName) { + throw new Error(`'${kernelName}' not yet implemented or not found in the registry. This kernel may not be supported by the tfjs backend you have chosen`); +} +/** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ +function shuffle(array2) { + let counter = array2.length; + let temp = 0; + let index = 0; + while (counter > 0) { + index = Math.random() * counter | 0; + counter--; + temp = array2[counter]; + array2[counter] = array2[index]; + array2[index] = temp; + } +} +function shuffleCombo(array2, array22) { + if (array2.length !== array22.length) { + throw new Error(`Array sizes must match to be shuffled together First array length was ${array2.length}Second array length was ${array22.length}`); + } + let counter = array2.length; + let temp, temp2; + let index = 0; + while (counter > 0) { + index = Math.random() * counter | 0; + counter--; + temp = array2[counter]; + temp2 = array22[counter]; + array2[counter] = array2[index]; + array22[counter] = array22[index]; + array2[index] = temp; + array22[index] = temp2; + } +} +function clamp(min6, x, max6) { + return Math.max(min6, Math.min(x, max6)); +} +function nearestLargerEven(val) { + return val % 2 === 0 ? val : val + 1; +} +function sum(arr) { + let sum6 = 0; + for (let i = 0; i < arr.length; i++) { + sum6 += arr[i]; + } + return sum6; +} +function randUniform(a, b) { + const r = Math.random(); + return b * r + (1 - r) * a; +} +function distSquared(a, b) { + let result = 0; + for (let i = 0; i < a.length; i++) { + const diff = Number(a[i]) - Number(b[i]); + result += diff * diff; + } + return result; +} +function assert(expr, msg) { + if (!expr) { + throw new Error(typeof msg === "string" ? msg : msg()); + } +} +function assertShapesMatch(shapeA, shapeB, errorMessagePrefix = "") { + assert(arraysEqual(shapeA, shapeB), () => errorMessagePrefix + ` Shapes ${shapeA} and ${shapeB} must match`); +} +function assertNonNull(a) { + assert(a != null, () => `The input to the tensor constructor must be a non-null value.`); +} +function flatten(arr, result = [], skipTypedArray = false) { + if (result == null) { + result = []; + } + if (Array.isArray(arr) || isTypedArray(arr) && !skipTypedArray) { + for (let i = 0; i < arr.length; ++i) { + flatten(arr[i], result, skipTypedArray); + } + } else { + result.push(arr); + } + return result; +} +function sizeFromShape(shape) { + if (shape.length === 0) { + return 1; + } + let size = shape[0]; + for (let i = 1; i < shape.length; i++) { + size *= shape[i]; + } + return size; +} +function isScalarShape(shape) { + return shape.length === 0; +} +function arraysEqual(n1, n2) { + if (n1 === n2) { + return true; + } + if (n1 == null || n2 == null) { + return false; + } + if (n1.length !== n2.length) { + return false; + } + for (let i = 0; i < n1.length; i++) { + if (n1[i] !== n2[i]) { + return false; + } + } + return true; +} +function isInt(a) { + return a % 1 === 0; +} +function tanh(x) { + if (Math.tanh != null) { + return Math.tanh(x); + } + if (x === Infinity) { + return 1; + } else if (x === -Infinity) { + return -1; + } else { + const e2x = Math.exp(2 * x); + return (e2x - 1) / (e2x + 1); + } +} +function sizeToSquarishShape(size) { + const width = Math.ceil(Math.sqrt(size)); + return [width, Math.ceil(size / width)]; +} +function createShuffledIndices(n) { + const shuffledIndices = new Uint32Array(n); + for (let i = 0; i < n; ++i) { + shuffledIndices[i] = i; + } + shuffle(shuffledIndices); + return shuffledIndices; +} +function rightPad(a, size) { + if (size <= a.length) { + return a; + } + return a + " ".repeat(size - a.length); +} +function repeatedTry(checkFn, delayFn = (counter) => 0, maxCounter) { + return new Promise((resolve, reject) => { + let tryCount = 0; + const tryFn = () => { + if (checkFn()) { + resolve(); + return; + } + tryCount++; + const nextBackoff = delayFn(tryCount); + if (maxCounter != null && tryCount >= maxCounter) { + reject(); + return; + } + setTimeout(tryFn, nextBackoff); + }; + tryFn(); + }); +} +function inferFromImplicitShape(shape, size) { + let shapeProd = 1; + let implicitIdx = -1; + for (let i = 0; i < shape.length; ++i) { + if (shape[i] >= 0) { + shapeProd *= shape[i]; + } else if (shape[i] === -1) { + if (implicitIdx !== -1) { + throw Error(`Shapes can only have 1 implicit size. Found -1 at dim ${implicitIdx} and dim ${i}`); + } + implicitIdx = i; + } else if (shape[i] < 0) { + throw Error(`Shapes can not be < 0. Found ${shape[i]} at dim ${i}`); + } + } + if (implicitIdx === -1) { + if (size > 0 && size !== shapeProd) { + throw Error(`Size(${size}) must match the product of shape ${shape}`); + } + return shape; + } + if (shapeProd === 0) { + throw Error(`Cannot infer the missing size in [${shape}] when there are 0 elements`); + } + if (size % shapeProd !== 0) { + throw Error(`The implicit shape can't be a fractional number. Got ${size} / ${shapeProd}`); + } + const newShape = shape.slice(); + newShape[implicitIdx] = size / shapeProd; + return newShape; +} +function parseAxisParam(axis, shape) { + const rank = shape.length; + axis = axis == null ? shape.map((s, i) => i) : [].concat(axis); + assert(axis.every((ax) => ax >= -rank && ax < rank), () => `All values in axis param must be in range [-${rank}, ${rank}) but got axis ${axis}`); + assert(axis.every((ax) => isInt(ax)), () => `All values in axis param must be integers but got axis ${axis}`); + return axis.map((a) => a < 0 ? rank + a : a); +} +function squeezeShape(shape, axis) { + const newShape = []; + const keptDims = []; + const isEmptyArray = axis != null && Array.isArray(axis) && axis.length === 0; + const axes = axis == null || isEmptyArray ? null : parseAxisParam(axis, shape).sort(); + let j = 0; + for (let i = 0; i < shape.length; ++i) { + if (axes != null) { + if (axes[j] === i && shape[i] !== 1) { + throw new Error(`Can't squeeze axis ${i} since its dim '${shape[i]}' is not 1`); + } + if ((axes[j] == null || axes[j] > i) && shape[i] === 1) { + newShape.push(shape[i]); + keptDims.push(i); + } + if (axes[j] <= i) { + j++; + } + } + if (shape[i] !== 1) { + newShape.push(shape[i]); + keptDims.push(i); + } + } + return {newShape, keptDims}; +} +function getTypedArrayFromDType(dtype, size) { + let values = null; + if (dtype == null || dtype === "float32") { + values = new Float32Array(size); + } else if (dtype === "int32") { + values = new Int32Array(size); + } else if (dtype === "bool") { + values = new Uint8Array(size); + } else { + throw new Error(`Unknown data type ${dtype}`); + } + return values; +} +function getArrayFromDType(dtype, size) { + let values = null; + if (dtype == null || dtype === "float32") { + values = new Float32Array(size); + } else if (dtype === "int32") { + values = new Int32Array(size); + } else if (dtype === "bool") { + values = new Uint8Array(size); + } else if (dtype === "string") { + values = new Array(size); + } else { + throw new Error(`Unknown data type ${dtype}`); + } + return values; +} +function checkConversionForErrors(vals, dtype) { + for (let i = 0; i < vals.length; i++) { + const num = vals[i]; + if (isNaN(num) || !isFinite(num)) { + throw Error(`A tensor of type ${dtype} being uploaded contains ${num}.`); + } + } +} +function isValidDtype(dtype) { + return dtype === "bool" || dtype === "complex64" || dtype === "float32" || dtype === "int32" || dtype === "string"; +} +function hasEncodingLoss(oldType, newType) { + if (newType === "complex64") { + return false; + } + if (newType === "float32" && oldType !== "complex64") { + return false; + } + if (newType === "int32" && oldType !== "float32" && oldType !== "complex64") { + return false; + } + if (newType === "bool" && oldType === "bool") { + return false; + } + return true; +} +function isTypedArray(a) { + return a instanceof Float32Array || a instanceof Int32Array || a instanceof Uint8Array; +} +function bytesPerElement(dtype) { + if (dtype === "float32" || dtype === "int32") { + return 4; + } else if (dtype === "complex64") { + return 8; + } else if (dtype === "bool") { + return 1; + } else { + throw new Error(`Unknown dtype ${dtype}`); + } +} +function bytesFromStringArray(arr) { + if (arr == null) { + return 0; + } + let bytes = 0; + arr.forEach((x) => bytes += x.length); + return bytes; +} +function isString(value) { + return typeof value === "string" || value instanceof String; +} +function isBoolean(value) { + return typeof value === "boolean"; +} +function isNumber(value) { + return typeof value === "number"; +} +function inferDtype(values) { + if (Array.isArray(values)) { + return inferDtype(values[0]); + } + if (values instanceof Float32Array) { + return "float32"; + } else if (values instanceof Int32Array || values instanceof Uint8Array) { + return "int32"; + } else if (isNumber(values)) { + return "float32"; + } else if (isString(values)) { + return "string"; + } else if (isBoolean(values)) { + return "bool"; + } + return "float32"; +} +function isFunction(f) { + return !!(f && f.constructor && f.call && f.apply); +} +function nearestDivisor(size, start) { + for (let i = start; i < size; ++i) { + if (size % i === 0) { + return i; + } + } + return size; +} +function computeStrides(shape) { + const rank = shape.length; + if (rank < 2) { + return []; + } + const strides = new Array(rank - 1); + strides[rank - 2] = shape[rank - 1]; + for (let i = rank - 3; i >= 0; --i) { + strides[i] = strides[i + 1] * shape[i + 1]; + } + return strides; +} +function createNestedArray(offset, shape, a) { + const ret = new Array(); + if (shape.length === 1) { + const d = shape[0]; + for (let i = 0; i < d; i++) { + ret[i] = a[offset + i]; + } + } else { + const d = shape[0]; + const rest = shape.slice(1); + const len = rest.reduce((acc, c) => acc * c); + for (let i = 0; i < d; i++) { + ret[i] = createNestedArray(offset + i * len, rest, a); + } + } + return ret; +} +function toNestedArray(shape, a) { + if (shape.length === 0) { + return a[0]; + } + const size = shape.reduce((acc, c) => acc * c); + if (size === 0) { + return []; + } + if (size !== a.length) { + throw new Error(`[${shape}] does not match the input size ${a.length}.`); + } + return createNestedArray(0, shape, a); +} +function makeOnesTypedArray(size, dtype) { + const array2 = makeZerosTypedArray(size, dtype); + for (let i = 0; i < array2.length; i++) { + array2[i] = 1; + } + return array2; +} +function makeZerosTypedArray(size, dtype) { + if (dtype == null || dtype === "float32" || dtype === "complex64") { + return new Float32Array(size); + } else if (dtype === "int32") { + return new Int32Array(size); + } else if (dtype === "bool") { + return new Uint8Array(size); + } else { + throw new Error(`Unknown data type ${dtype}`); + } +} +function makeZerosNestedTypedArray(shape, dtype) { + const size = shape.reduce((prev, curr) => prev * curr, 1); + if (dtype == null || dtype === "float32") { + return toNestedArray(shape, new Float32Array(size)); + } else if (dtype === "int32") { + return toNestedArray(shape, new Int32Array(size)); + } else if (dtype === "bool") { + return toNestedArray(shape, new Uint8Array(size)); + } else { + throw new Error(`Unknown data type ${dtype}`); + } +} +function assertNonNegativeIntegerDimensions(shape) { + shape.forEach((dimSize) => { + assert(Number.isInteger(dimSize) && dimSize >= 0, () => `Tensor must have a shape comprised of positive integers but got shape [${shape}].`); + }); +} +function locToIndex(locs, rank, strides) { + if (rank === 0) { + return 0; + } else if (rank === 1) { + return locs[0]; + } + let index = locs[locs.length - 1]; + for (let i = 0; i < locs.length - 1; ++i) { + index += strides[i] * locs[i]; + } + return index; +} +function indexToLoc(index, rank, strides) { + if (rank === 0) { + return []; + } else if (rank === 1) { + return [index]; + } + const locs = new Array(rank); + for (let i = 0; i < locs.length - 1; ++i) { + locs[i] = Math.floor(index / strides[i]); + index -= locs[i] * strides[i]; + } + locs[locs.length - 1] = index; + return locs; +} +function isPromise(object2) { + return object2 && object2.then && typeof object2.then === "function"; +} +/** + * @license + * Copyright 2017 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ +var TENSORFLOWJS_FLAGS_PREFIX = "tfjsflags"; +var Environment = class { + constructor(global2) { + this.global = global2; + this.flags = {}; + this.flagRegistry = {}; + this.urlFlags = {}; + this.populateURLFlags(); + } + setPlatform(platformName, platform) { + if (this.platform != null) { + console.warn(`Platform ${this.platformName} has already been set. Overwriting the platform with ${platform}.`); + } + this.platformName = platformName; + this.platform = platform; + } + registerFlag(flagName, evaluationFn, setHook) { + this.flagRegistry[flagName] = {evaluationFn, setHook}; + if (this.urlFlags[flagName] != null) { + const flagValue = this.urlFlags[flagName]; + console.warn(`Setting feature override from URL ${flagName}: ${flagValue}.`); + this.set(flagName, flagValue); + } + } + async getAsync(flagName) { + if (flagName in this.flags) { + return this.flags[flagName]; + } + this.flags[flagName] = await this.evaluateFlag(flagName); + return this.flags[flagName]; + } + get(flagName) { + if (flagName in this.flags) { + return this.flags[flagName]; + } + const flagValue = this.evaluateFlag(flagName); + if (isPromise(flagValue)) { + throw new Error(`Flag ${flagName} cannot be synchronously evaluated. Please use getAsync() instead.`); + } + this.flags[flagName] = flagValue; + return this.flags[flagName]; + } + getNumber(flagName) { + return this.get(flagName); + } + getBool(flagName) { + return this.get(flagName); + } + getFlags() { + return this.flags; + } + get features() { + return this.flags; + } + set(flagName, value) { + if (this.flagRegistry[flagName] == null) { + throw new Error(`Cannot set flag ${flagName} as it has not been registered.`); + } + this.flags[flagName] = value; + if (this.flagRegistry[flagName].setHook != null) { + this.flagRegistry[flagName].setHook(value); + } + } + evaluateFlag(flagName) { + if (this.flagRegistry[flagName] == null) { + throw new Error(`Cannot evaluate flag '${flagName}': no evaluation function found.`); + } + return this.flagRegistry[flagName].evaluationFn(); + } + setFlags(flags) { + this.flags = Object.assign({}, flags); + } + reset() { + this.flags = {}; + this.urlFlags = {}; + this.populateURLFlags(); + } + populateURLFlags() { + if (typeof this.global === "undefined" || typeof this.global.location === "undefined" || typeof this.global.location.search === "undefined") { + return; + } + const urlParams = getQueryParams(this.global.location.search); + if (TENSORFLOWJS_FLAGS_PREFIX in urlParams) { + const keyValues = urlParams[TENSORFLOWJS_FLAGS_PREFIX].split(","); + keyValues.forEach((keyValue) => { + const [key, value] = keyValue.split(":"); + this.urlFlags[key] = parseValue(key, value); + }); + } + } +}; +function getQueryParams(queryString) { + const params = {}; + queryString.replace(/[?&]([^=?&]+)(?:=([^&]*))?/g, (s, ...t) => { + decodeParam(params, t[0], t[1]); + return t.join("="); + }); + return params; +} +function decodeParam(params, name, value) { + params[decodeURIComponent(name)] = decodeURIComponent(value || ""); +} +function parseValue(flagName, value) { + value = value.toLowerCase(); + if (value === "true" || value === "false") { + return value === "true"; + } else if (`${+value}` === value) { + return +value; + } + throw new Error(`Could not parse value flag value ${value} for flag ${flagName}.`); +} +function env() { + return ENV; +} +var ENV = null; +function setEnvironmentGlobal(environment) { + ENV = environment; +} +/** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ +var globalNameSpace; +function getGlobalNamespace() { + if (globalNameSpace == null) { + let ns; + if (typeof window !== "undefined") { + ns = window; + } else if (typeof global !== "undefined") { + ns = global; + } else if (typeof process !== "undefined") { + ns = process; + } else if (typeof self !== "undefined") { + ns = self; + } else { + throw new Error("Could not find a global object"); + } + globalNameSpace = ns; + } + return globalNameSpace; +} +function getGlobalMap() { + const ns = getGlobalNamespace(); + if (ns._tfGlobals == null) { + ns._tfGlobals = new Map(); + } + return ns._tfGlobals; +} +function getGlobal(key, init2) { + const globalMap = getGlobalMap(); + if (globalMap.has(key)) { + return globalMap.get(key); + } else { + const singleton = init2(); + globalMap.set(key, singleton); + return globalMap.get(key); + } +} +var Abs = "Abs"; +var Acos = "Acos"; +var Acosh = "Acosh"; +var Add = "Add"; +var AddN = "AddN"; +var All = "All"; +var Any = "Any"; +var ArgMax = "ArgMax"; +var ArgMin = "ArgMin"; +var Asin = "Asin"; +var Asinh = "Asinh"; +var Atan = "Atan"; +var Atanh = "Atanh"; +var Atan2 = "Atan2"; +var AvgPool = "AvgPool"; +var AvgPoolGrad = "AvgPoolGrad"; +var AvgPool3D = "AvgPool3D"; +var AvgPool3DGrad = "AvgPool3DGrad"; +var BatchMatMul = "BatchMatMul"; +var BatchToSpaceND = "BatchToSpaceND"; +var Bincount = "Bincount"; +var BroadcastTo = "BroadcastTo"; +var Cast = "Cast"; +var Ceil = "Ceil"; +var ClipByValue = "ClipByValue"; +var Complex = "Complex"; +var ComplexAbs = "ComplexAbs"; +var Concat = "Concat"; +var Conv2D = "Conv2D"; +var Conv2DBackpropFilter = "Conv2DBackpropFilter"; +var Conv2DBackpropInput = "Conv2DBackpropInput"; +var Conv3D = "Conv3D"; +var Conv3DBackpropFilterV2 = "Conv3DBackpropFilterV2"; +var Conv3DBackpropInputV2 = "Conv3DBackpropInputV2"; +var Cos = "Cos"; +var Cosh = "Cosh"; +var Cumsum = "Cumsum"; +var CropAndResize = "CropAndResize"; +var DenseBincount = "DenseBincount"; +var DepthToSpace = "DepthToSpace"; +var DepthwiseConv2dNative = "DepthwiseConv2dNative"; +var DepthwiseConv2dNativeBackpropFilter = "DepthwiseConv2dNativeBackpropFilter"; +var DepthwiseConv2dNativeBackpropInput = "DepthwiseConv2dNativeBackpropInput"; +var Diag = "Diag"; +var Dilation2D = "Dilation2D"; +var Dilation2DBackpropInput = "Dilation2DBackpropInput"; +var Dilation2DBackpropFilter = "Dilation2DBackpropFilter"; +var RealDiv = "RealDiv"; +var Elu = "Elu"; +var EluGrad = "EluGrad"; +var Erf = "Erf"; +var Equal = "Equal"; +var Exp = "Exp"; +var ExpandDims = "ExpandDims"; +var Expm1 = "Expm1"; +var FFT = "FFT"; +var Fill = "Fill"; +var FlipLeftRight = "FlipLeftRight"; +var Floor = "Floor"; +var FloorDiv = "FloorDiv"; +var FusedBatchNorm = "FusedBatchNorm"; +var GatherV2 = "GatherV2"; +var GatherNd = "GatherNd"; +var Greater = "Greater"; +var GreaterEqual = "GreaterEqual"; +var Identity = "Identity"; +var IFFT = "IFFT"; +var Imag = "Imag"; +var IsFinite = "IsFinite"; +var IsInf = "IsInf"; +var IsNan = "IsNan"; +var LeakyRelu = "LeakyRelu"; +var Less = "Less"; +var LessEqual = "LessEqual"; +var LinSpace = "LinSpace"; +var Log = "Log"; +var Log1p = "Log1p"; +var LogicalAnd = "LogicalAnd"; +var LogicalNot = "LogicalNot"; +var LogicalOr = "LogicalOr"; +var LogSoftmax = "LogSoftmax"; +var LRN = "LRN"; +var LRNGrad = "LRNGrad"; +var Max = "Max"; +var Maximum = "Maximum"; +var MaxPool = "MaxPool"; +var MaxPoolGrad = "MaxPoolGrad"; +var MaxPool3D = "MaxPool3D"; +var MaxPool3DGrad = "MaxPool3DGrad"; +var MaxPoolWithArgmax = "MaxPoolWithArgmax"; +var Mean = "Mean"; +var Min = "Min"; +var Minimum = "Minimum"; +var MirrorPad = "MirrorPad"; +var Mod = "Mod"; +var Multinomial = "Multinomial"; +var Multiply = "Multiply"; +var Neg = "Neg"; +var NotEqual = "NotEqual"; +var NonMaxSuppressionV3 = "NonMaxSuppressionV3"; +var NonMaxSuppressionV4 = "NonMaxSuppressionV4"; +var NonMaxSuppressionV5 = "NonMaxSuppressionV5"; +var OnesLike = "OnesLike"; +var OneHot = "OneHot"; +var Pack = "Pack"; +var PadV2 = "PadV2"; +var Pool = "Pool"; +var Pow = "Pow"; +var Prelu = "Prelu"; +var Prod = "Prod"; +var Range = "Range"; +var Real = "Real"; +var Reciprocal = "Reciprocal"; +var Relu = "Relu"; +var Reshape = "Reshape"; +var ResizeNearestNeighbor = "ResizeNearestNeighbor"; +var ResizeNearestNeighborGrad = "ResizeNearestNeighborGrad"; +var ResizeBilinear = "ResizeBilinear"; +var ResizeBilinearGrad = "ResizeBilinearGrad"; +var Relu6 = "Relu6"; +var Reverse = "Reverse"; +var Round = "Round"; +var Rsqrt = "Rsqrt"; +var ScatterNd = "ScatterNd"; +var Select = "Select"; +var Selu = "Selu"; +var Slice = "Slice"; +var Sin = "Sin"; +var Sinh = "Sinh"; +var Sign = "Sign"; +var Sigmoid = "Sigmoid"; +var Softplus = "Softplus"; +var Sqrt = "Sqrt"; +var Sum = "Sum"; +var SpaceToBatchND = "SpaceToBatchND"; +var SplitV = "SplitV"; +var Softmax = "Softmax"; +var SquaredDifference = "SquaredDifference"; +var Square = "Square"; +var Sub = "Sub"; +var SparseToDense = "SparseToDense"; +var StridedSlice = "StridedSlice"; +var Tan = "Tan"; +var Tanh = "Tanh"; +var Tile = "Tile"; +var TopK = "TopK"; +var Transform = "Transform"; +var Transpose = "Transpose"; +var Unique = "Unique"; +var Unpack = "Unpack"; +var UnsortedSegmentSum = "UnsortedSegmentSum"; +var ZerosLike = "ZerosLike"; +var Step = "Step"; +var FromPixels = "FromPixels"; +var RotateWithOffset = "RotateWithOffset"; +var _FusedMatMul = "_FusedMatMul"; +var FusedConv2D = "FusedConv2D"; +var FusedDepthwiseConv2D = "FusedDepthwiseConv2D"; +/** + * @license + * Copyright 2019 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ +var kernelRegistry = getGlobal("kernelRegistry", () => new Map()); +var gradRegistry = getGlobal("gradRegistry", () => new Map()); +function getKernel(kernelName, backendName) { + const key = makeKey(kernelName, backendName); + return kernelRegistry.get(key); +} +function getGradient(kernelName) { + return gradRegistry.get(kernelName); +} +function getKernelsForBackend(backendName) { + const it = kernelRegistry.entries(); + const result = []; + while (true) { + const {done, value} = it.next(); + if (done) { + break; + } + const [key, config3] = value; + const [backend22] = key.split("_"); + if (backend22 === backendName) { + result.push(config3); + } + } + return result; +} +function registerKernel(config3) { + const {kernelName, backendName} = config3; + const key = makeKey(kernelName, backendName); + if (kernelRegistry.has(key)) { + console.warn(`The kernel '${kernelName}' for backend '${backendName}' is already registered`); + } + kernelRegistry.set(key, config3); +} +function registerGradient(config3) { + const {kernelName} = config3; + if (gradRegistry.has(kernelName)) { + if (env().getBool("DEBUG")) { + console.warn(`Overriding the gradient for '${kernelName}'`); + } + } + gradRegistry.set(kernelName, config3); +} +function unregisterKernel(kernelName, backendName) { + const key = makeKey(kernelName, backendName); + if (!kernelRegistry.has(key)) { + throw new Error(`The kernel '${kernelName}' for backend '${backendName}' is not registered`); + } + kernelRegistry.delete(key); +} +function unregisterGradient(kernelName) { + if (!gradRegistry.has(kernelName)) { + throw new Error(`The gradient '${kernelName}' for backend is not registered`); + } + gradRegistry.delete(kernelName); +} +function copyRegisteredKernels(registeredBackendName, newBackendName) { + const kernels = getKernelsForBackend(registeredBackendName); + kernels.forEach((kernelConfig) => { + const newKernelConfig = Object.assign({}, kernelConfig, {backendName: newBackendName}); + registerKernel(newKernelConfig); + }); +} +function makeKey(kernelName, backendName) { + return `${backendName}_${kernelName}`; +} +var util_exports = {}; +__export2(util_exports, { + arraysEqual: () => arraysEqual, + assert: () => assert, + assertNonNegativeIntegerDimensions: () => assertNonNegativeIntegerDimensions, + assertNonNull: () => assertNonNull, + assertShapesMatch: () => assertShapesMatch, + bytesFromStringArray: () => bytesFromStringArray, + bytesPerElement: () => bytesPerElement, + checkConversionForErrors: () => checkConversionForErrors, + clamp: () => clamp, + computeStrides: () => computeStrides, + createScalarValue: () => createScalarValue, + createShuffledIndices: () => createShuffledIndices, + decodeString: () => decodeString, + distSquared: () => distSquared, + encodeString: () => encodeString, + fetch: () => fetch2, + flatten: () => flatten, + getArrayFromDType: () => getArrayFromDType, + getTypedArrayFromDType: () => getTypedArrayFromDType, + hasEncodingLoss: () => hasEncodingLoss, + indexToLoc: () => indexToLoc, + inferDtype: () => inferDtype, + inferFromImplicitShape: () => inferFromImplicitShape, + isBoolean: () => isBoolean, + isFunction: () => isFunction, + isInt: () => isInt, + isNumber: () => isNumber, + isPromise: () => isPromise, + isScalarShape: () => isScalarShape, + isString: () => isString, + isTypedArray: () => isTypedArray, + isValidDtype: () => isValidDtype, + locToIndex: () => locToIndex, + makeOnesTypedArray: () => makeOnesTypedArray, + makeZerosNestedTypedArray: () => makeZerosNestedTypedArray, + makeZerosTypedArray: () => makeZerosTypedArray, + nearestDivisor: () => nearestDivisor, + nearestLargerEven: () => nearestLargerEven, + now: () => now2, + parseAxisParam: () => parseAxisParam, + randUniform: () => randUniform, + repeatedTry: () => repeatedTry, + rightPad: () => rightPad, + shuffle: () => shuffle, + shuffleCombo: () => shuffleCombo, + sizeFromShape: () => sizeFromShape, + sizeToSquarishShape: () => sizeToSquarishShape, + squeezeShape: () => squeezeShape, + sum: () => sum, + tanh: () => tanh, + toNestedArray: () => toNestedArray, + toTypedArray: () => toTypedArray +}); +/** + * @license + * Copyright 2017 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ +function createScalarValue(value, dtype) { + if (dtype === "string") { + return encodeString(value); + } + return toTypedArray([value], dtype); +} +function noConversionNeeded(a, dtype) { + return a instanceof Float32Array && dtype === "float32" || a instanceof Int32Array && dtype === "int32" || a instanceof Uint8Array && dtype === "bool"; +} +function toTypedArray(a, dtype) { + if (dtype === "string") { + throw new Error("Cannot convert a string[] to a TypedArray"); + } + if (Array.isArray(a)) { + a = flatten(a); + } + if (env().getBool("DEBUG")) { + checkConversionForErrors(a, dtype); + } + if (noConversionNeeded(a, dtype)) { + return a; + } + if (dtype == null || dtype === "float32" || dtype === "complex64") { + return new Float32Array(a); + } else if (dtype === "int32") { + return new Int32Array(a); + } else if (dtype === "bool") { + const bool = new Uint8Array(a.length); + for (let i = 0; i < bool.length; ++i) { + if (Math.round(a[i]) !== 0) { + bool[i] = 1; + } + } + return bool; + } else { + throw new Error(`Unknown data type ${dtype}`); + } +} +function now2() { + return env().platform.now(); +} +function fetch2(path, requestInits) { + return env().platform.fetch(path, requestInits); +} +function encodeString(s, encoding = "utf-8") { + encoding = encoding || "utf-8"; + return env().platform.encode(s, encoding); +} +function decodeString(bytes, encoding = "utf-8") { + encoding = encoding || "utf-8"; + return env().platform.decode(bytes, encoding); +} +/** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ +var Profiler = class { + constructor(backendTimer, logger) { + this.backendTimer = backendTimer; + this.logger = logger; + if (logger == null) { + this.logger = new Logger(); + } + } + profileKernel(kernelName, inputs, f) { + let outputs; + const holdResultWrapperFn = () => { + outputs = f(); + }; + let timer; + const start = now2(); + if (this.backendTimer.timerAvailable()) { + timer = this.backendTimer.time(holdResultWrapperFn); + } else { + holdResultWrapperFn(); + for (const output of outputs) { + output.dataSync(); + } + timer = Promise.resolve({kernelMs: now2() - start}); + } + if (env().getBool("CHECK_COMPUTATION_FOR_ERRORS")) { + for (let i = 0; i < outputs.length; i++) { + const output = outputs[i]; + output.data().then((tensorVals) => { + checkComputationForErrors(tensorVals, output.dtype, kernelName); + }); + } + } + const kernelProfile = { + kernelName, + outputs, + inputs, + timeMs: timer.then((timing) => timing.kernelMs), + extraInfo: timer.then((timing) => timing.getExtraProfileInfo != null ? timing.getExtraProfileInfo() : "") + }; + return kernelProfile; + } + logKernelProfile(kernelProfile) { + const {kernelName, outputs, timeMs, inputs, extraInfo} = kernelProfile; + outputs.forEach((result) => { + Promise.all([result.data(), timeMs, extraInfo]).then((valueContainer) => { + this.logger.logKernelProfile(kernelName, result, valueContainer[0], valueContainer[1], inputs, valueContainer[2]); + }); + }); + } +}; +function checkComputationForErrors(vals, dtype, kernelName) { + if (dtype !== "float32") { + return false; + } + for (let i = 0; i < vals.length; i++) { + const num = vals[i]; + if (isNaN(num) || !isFinite(num)) { + console.warn(`Found ${num} in the result of '${kernelName}'`); + return true; + } + } + return false; +} +var Logger = class { + logKernelProfile(name, result, vals, timeMs, inputs, extraInfo) { + const time2 = typeof timeMs === "number" ? rightPad(`${timeMs}ms`, 9) : timeMs["error"]; + const paddedName = rightPad(name, 25); + const rank = result.rank; + const size = result.size; + const shape = rightPad(result.shape.toString(), 14); + let inputShapesDescription = ""; + for (const name2 in inputs) { + const input2 = inputs[name2]; + if (input2 != null) { + const inputShape = input2.shape || result.shape; + const inputRank = inputShape.length; + inputShapesDescription += `${name2}: ${inputRank}D ${inputRank > 0 ? inputShape : ""} `; + } + } + console.log(`%c${paddedName} %c${time2} %c${rank}D ${shape} %c${size} %c${inputShapesDescription} %c${extraInfo}`, "font-weight:bold", "color:red", "color:blue", "color: orange", "color: green", "color: steelblue"); + } +}; +/** + * @license + * Copyright 2017 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ +function getFilteredNodesXToY(tape, xs, y) { + const tensorsFromX = {}; + const nodesFromX = {}; + for (let i = 0; i < xs.length; i++) { + tensorsFromX[xs[i].id] = true; + } + for (let i = 0; i < tape.length; i++) { + const node = tape[i]; + const nodeInputs = node.inputs; + for (const inputName in nodeInputs) { + const input2 = nodeInputs[inputName]; + let anyInputFromX = false; + for (let j = 0; j < xs.length; j++) { + if (tensorsFromX[input2.id]) { + node.outputs.forEach((output) => tensorsFromX[output.id] = true); + anyInputFromX = true; + nodesFromX[node.id] = true; + break; + } + } + if (anyInputFromX) { + break; + } + } + } + const tensorsLeadToY = {}; + tensorsLeadToY[y.id] = true; + const nodesToY = {}; + for (let i = tape.length - 1; i >= 0; i--) { + const node = tape[i]; + const nodeInputs = node.inputs; + for (let j = 0; j < node.outputs.length; j++) { + if (tensorsLeadToY[node.outputs[j].id]) { + for (const inputName in nodeInputs) { + tensorsLeadToY[nodeInputs[inputName].id] = true; + nodesToY[node.id] = true; + } + break; + } + } + } + const filteredTape = []; + for (let i = 0; i < tape.length; i++) { + const node = tape[i]; + if (nodesFromX[node.id] && nodesToY[node.id]) { + const prunedInputs = {}; + for (const inputName in node.inputs) { + const nodeInput = node.inputs[inputName]; + if (tensorsFromX[nodeInput.id]) { + prunedInputs[inputName] = nodeInput; + } + } + const prunedNode = Object.assign({}, node); + prunedNode.inputs = prunedInputs; + prunedNode.outputs = node.outputs; + filteredTape.push(prunedNode); + } + } + return filteredTape; +} +function backpropagateGradients(tensorAccumulatedGradientMap, filteredTape, tidy2, add5) { + for (let i = filteredTape.length - 1; i >= 0; i--) { + const node = filteredTape[i]; + const dys = []; + node.outputs.forEach((o) => { + const gradTensor = tensorAccumulatedGradientMap[o.id]; + if (gradTensor != null) { + dys.push(gradTensor); + } else { + dys.push(null); + } + }); + if (node.gradient == null) { + throw new Error(`Cannot compute gradient: gradient function not found for ${node.kernelName}.`); + } + const inputGradients = node.gradient(dys); + for (const inputName in node.inputs) { + if (!(inputName in inputGradients)) { + throw new Error(`Cannot backprop through input ${inputName}. Available gradients found: ${Object.keys(inputGradients)}.`); + } + const dx = tidy2(() => inputGradients[inputName]()); + if (dx.dtype !== "float32") { + throw new Error(`Error in gradient for op ${node.kernelName}. The gradient of input ${inputName} must have 'float32' dtype, but has '${dx.dtype}'`); + } + const x = node.inputs[inputName]; + if (!arraysEqual(dx.shape, x.shape)) { + throw new Error(`Error in gradient for op ${node.kernelName}. The gradient of input '${inputName}' has shape '${dx.shape}', which does not match the shape of the input '${x.shape}'`); + } + if (tensorAccumulatedGradientMap[x.id] == null) { + tensorAccumulatedGradientMap[x.id] = dx; + } else { + const curGradient = tensorAccumulatedGradientMap[x.id]; + tensorAccumulatedGradientMap[x.id] = add5(curGradient, dx); + curGradient.dispose(); + } + } + } +} +/** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ +var FORMAT_LIMIT_NUM_VALS = 20; +var FORMAT_NUM_FIRST_LAST_VALS = 3; +var FORMAT_NUM_SIG_DIGITS = 7; +function tensorToString(vals, shape, dtype, verbose) { + const strides = computeStrides(shape); + const padPerCol = computeMaxSizePerColumn(vals, shape, dtype, strides); + const rank = shape.length; + const valsLines = subTensorToString(vals, shape, dtype, strides, padPerCol); + const lines2 = ["Tensor"]; + if (verbose) { + lines2.push(` dtype: ${dtype}`); + lines2.push(` rank: ${rank}`); + lines2.push(` shape: [${shape}]`); + lines2.push(` values:`); + } + lines2.push(valsLines.map((l) => " " + l).join("\n")); + return lines2.join("\n"); +} +function computeMaxSizePerColumn(vals, shape, dtype, strides) { + const n = sizeFromShape(shape); + const numCols = strides[strides.length - 1]; + const padPerCol = new Array(numCols).fill(0); + const rank = shape.length; + const valuesOrTuples = dtype === "complex64" ? createComplexTuples(vals) : vals; + if (rank > 1) { + for (let row = 0; row < n / numCols; row++) { + const offset = row * numCols; + for (let j = 0; j < numCols; j++) { + padPerCol[j] = Math.max(padPerCol[j], valToString(valuesOrTuples[offset + j], 0, dtype).length); + } + } + } + return padPerCol; +} +function valToString(val, pad3, dtype) { + let valStr; + if (Array.isArray(val)) { + valStr = `${parseFloat(val[0].toFixed(FORMAT_NUM_SIG_DIGITS))} + ${parseFloat(val[1].toFixed(FORMAT_NUM_SIG_DIGITS))}j`; + } else if (isString(val)) { + valStr = `'${val}'`; + } else if (dtype === "bool") { + valStr = boolNumToString(val); + } else { + valStr = parseFloat(val.toFixed(FORMAT_NUM_SIG_DIGITS)).toString(); + } + return rightPad(valStr, pad3); +} +function boolNumToString(v) { + return v === 0 ? "false" : "true"; +} +function subTensorToString(vals, shape, dtype, strides, padPerCol, isLast = true) { + const storagePerElement = dtype === "complex64" ? 2 : 1; + const size = shape[0]; + const rank = shape.length; + if (rank === 0) { + if (dtype === "complex64") { + const complexTuple = createComplexTuples(vals); + return [valToString(complexTuple[0], 0, dtype)]; + } + if (dtype === "bool") { + return [boolNumToString(vals[0])]; + } + return [vals[0].toString()]; + } + if (rank === 1) { + if (size > FORMAT_LIMIT_NUM_VALS) { + const firstValsSize = FORMAT_NUM_FIRST_LAST_VALS * storagePerElement; + let firstVals = Array.from(vals.slice(0, firstValsSize)); + let lastVals = Array.from(vals.slice((size - FORMAT_NUM_FIRST_LAST_VALS) * storagePerElement, size * storagePerElement)); + if (dtype === "complex64") { + firstVals = createComplexTuples(firstVals); + lastVals = createComplexTuples(lastVals); + } + return [ + "[" + firstVals.map((x, i) => valToString(x, padPerCol[i], dtype)).join(", ") + ", ..., " + lastVals.map((x, i) => valToString(x, padPerCol[size - FORMAT_NUM_FIRST_LAST_VALS + i], dtype)).join(", ") + "]" + ]; + } + const displayVals = dtype === "complex64" ? createComplexTuples(vals) : Array.from(vals); + return [ + "[" + displayVals.map((x, i) => valToString(x, padPerCol[i], dtype)).join(", ") + "]" + ]; + } + const subshape = shape.slice(1); + const substrides = strides.slice(1); + const stride = strides[0] * storagePerElement; + const lines2 = []; + if (size > FORMAT_LIMIT_NUM_VALS) { + for (let i = 0; i < FORMAT_NUM_FIRST_LAST_VALS; i++) { + const start = i * stride; + const end = start + stride; + lines2.push(...subTensorToString(vals.slice(start, end), subshape, dtype, substrides, padPerCol, false)); + } + lines2.push("..."); + for (let i = size - FORMAT_NUM_FIRST_LAST_VALS; i < size; i++) { + const start = i * stride; + const end = start + stride; + lines2.push(...subTensorToString(vals.slice(start, end), subshape, dtype, substrides, padPerCol, i === size - 1)); + } + } else { + for (let i = 0; i < size; i++) { + const start = i * stride; + const end = start + stride; + lines2.push(...subTensorToString(vals.slice(start, end), subshape, dtype, substrides, padPerCol, i === size - 1)); + } + } + const sep = rank === 2 ? "," : ""; + lines2[0] = "[" + lines2[0] + sep; + for (let i = 1; i < lines2.length - 1; i++) { + lines2[i] = " " + lines2[i] + sep; + } + let newLineSep = ",\n"; + for (let i = 2; i < rank; i++) { + newLineSep += "\n"; + } + lines2[lines2.length - 1] = " " + lines2[lines2.length - 1] + "]" + (isLast ? "" : newLineSep); + return lines2; +} +function createComplexTuples(vals) { + const complexTuples = []; + for (let i = 0; i < vals.length; i += 2) { + complexTuples.push([vals[i], vals[i + 1]]); + } + return complexTuples; +} +/** + * @license + * Copyright 2017 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ +var TensorBuffer = class { + constructor(shape, dtype, values) { + this.dtype = dtype; + this.shape = shape.slice(); + this.size = sizeFromShape(shape); + if (values != null) { + const n = values.length; + assert(n === this.size, () => `Length of values '${n}' does not match the size inferred by the shape '${this.size}'.`); + } + if (dtype === "complex64") { + throw new Error(`complex64 dtype TensorBuffers are not supported. Please create a TensorBuffer for the real and imaginary parts separately and call tf.complex(real, imag).`); + } + this.values = values || getArrayFromDType(dtype, this.size); + this.strides = computeStrides(shape); + } + set(value, ...locs) { + if (locs.length === 0) { + locs = [0]; + } + assert(locs.length === this.rank, () => `The number of provided coordinates (${locs.length}) must match the rank (${this.rank})`); + const index = this.locToIndex(locs); + this.values[index] = value; + } + get(...locs) { + if (locs.length === 0) { + locs = [0]; + } + let i = 0; + for (const loc of locs) { + if (loc < 0 || loc >= this.shape[i]) { + const msg = `Requested out of range element at ${locs}. Buffer shape=${this.shape}`; + throw new Error(msg); + } + i++; + } + let index = locs[locs.length - 1]; + for (let i2 = 0; i2 < locs.length - 1; ++i2) { + index += this.strides[i2] * locs[i2]; + } + return this.values[index]; + } + locToIndex(locs) { + if (this.rank === 0) { + return 0; + } else if (this.rank === 1) { + return locs[0]; + } + let index = locs[locs.length - 1]; + for (let i = 0; i < locs.length - 1; ++i) { + index += this.strides[i] * locs[i]; + } + return index; + } + indexToLoc(index) { + if (this.rank === 0) { + return []; + } else if (this.rank === 1) { + return [index]; + } + const locs = new Array(this.shape.length); + for (let i = 0; i < locs.length - 1; ++i) { + locs[i] = Math.floor(index / this.strides[i]); + index -= locs[i] * this.strides[i]; + } + locs[locs.length - 1] = index; + return locs; + } + get rank() { + return this.shape.length; + } + toTensor() { + return trackerFn().makeTensor(this.values, this.shape, this.dtype); + } +}; +var trackerFn = null; +var opHandler = null; +var deprecationWarningFn = null; +function setTensorTracker(fn) { + trackerFn = fn; +} +function setOpHandler(handler) { + opHandler = handler; +} +function setDeprecationWarningFn(fn) { + deprecationWarningFn = fn; +} +var Tensor = class { + constructor(shape, dtype, dataId, id) { + this.kept = false; + this.isDisposedInternal = false; + this.shape = shape.slice(); + this.dtype = dtype || "float32"; + this.size = sizeFromShape(shape); + this.strides = computeStrides(shape); + this.dataId = dataId; + this.id = id; + this.rankType = this.rank < 5 ? this.rank.toString() : "higher"; + } + get rank() { + return this.shape.length; + } + async buffer() { + const vals = await this.data(); + return opHandler.buffer(this.shape, this.dtype, vals); + } + bufferSync() { + return opHandler.buffer(this.shape, this.dtype, this.dataSync()); + } + async array() { + const vals = await this.data(); + return toNestedArray(this.shape, vals); + } + arraySync() { + return toNestedArray(this.shape, this.dataSync()); + } + async data() { + this.throwIfDisposed(); + const data2 = trackerFn().read(this.dataId); + if (this.dtype === "string") { + const bytes = await data2; + try { + return bytes.map((b) => decodeString(b)); + } catch (_a) { + throw new Error("Failed to decode the string bytes into utf-8. To get the original bytes, call tensor.bytes()."); + } + } + return data2; + } + dataSync() { + this.throwIfDisposed(); + const data2 = trackerFn().readSync(this.dataId); + if (this.dtype === "string") { + try { + return data2.map((b) => decodeString(b)); + } catch (_a) { + throw new Error("Failed to decode the string bytes into utf-8. To get the original bytes, call tensor.bytes()."); + } + } + return data2; + } + async bytes() { + this.throwIfDisposed(); + const data2 = await trackerFn().read(this.dataId); + if (this.dtype === "string") { + return data2; + } else { + return new Uint8Array(data2.buffer); + } + } + dispose() { + if (this.isDisposed) { + return; + } + trackerFn().disposeTensor(this); + this.isDisposedInternal = true; + } + get isDisposed() { + return this.isDisposedInternal; + } + throwIfDisposed() { + if (this.isDisposed) { + throw new Error(`Tensor is disposed.`); + } + } + print(verbose = false) { + return opHandler.print(this, verbose); + } + clone() { + this.throwIfDisposed(); + return opHandler.clone(this); + } + toString(verbose = false) { + const vals = this.dataSync(); + return tensorToString(vals, this.shape, this.dtype, verbose); + } + cast(dtype) { + this.throwIfDisposed(); + return opHandler.cast(this, dtype); + } + variable(trainable = true, name, dtype) { + this.throwIfDisposed(); + return trackerFn().makeVariable(this, trainable, name, dtype); + } +}; +Object.defineProperty(Tensor, Symbol.hasInstance, { + value: (instance) => { + return !!instance && instance.data != null && instance.dataSync != null && instance.throwIfDisposed != null; + } +}); +function getGlobalTensorClass() { + return getGlobal("Tensor", () => { + return Tensor; + }); +} +getGlobalTensorClass(); +var Variable = class extends Tensor { + constructor(initialValue, trainable, name, tensorId) { + super(initialValue.shape, initialValue.dtype, initialValue.dataId, tensorId); + this.trainable = trainable; + this.name = name; + } + assign(newValue) { + if (newValue.dtype !== this.dtype) { + throw new Error(`dtype of the new value (${newValue.dtype}) and previous value (${this.dtype}) must match`); + } + if (!arraysEqual(newValue.shape, this.shape)) { + throw new Error(`shape of the new value (${newValue.shape}) and previous value (${this.shape}) must match`); + } + trackerFn().disposeTensor(this); + this.dataId = newValue.dataId; + trackerFn().incRef(this, null); + } + dispose() { + trackerFn().disposeVariable(this); + this.isDisposedInternal = true; + } +}; +Object.defineProperty(Variable, Symbol.hasInstance, { + value: (instance) => { + return instance instanceof Tensor && instance.assign != null && instance.assign instanceof Function; + } +}); +var tensor_util_exports = {}; +__export2(tensor_util_exports, { + assertTypesMatch: () => assertTypesMatch, + getTensorsInContainer: () => getTensorsInContainer, + isTensorInList: () => isTensorInList, + makeTypesMatch: () => makeTypesMatch +}); +/** + * @license + * Copyright 2017 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ +var Rank; +(function(Rank2) { + Rank2["R0"] = "R0"; + Rank2["R1"] = "R1"; + Rank2["R2"] = "R2"; + Rank2["R3"] = "R3"; + Rank2["R4"] = "R4"; + Rank2["R5"] = "R5"; + Rank2["R6"] = "R6"; +})(Rank || (Rank = {})); +var UpcastInt32AndMap; +(function(UpcastInt32AndMap2) { + UpcastInt32AndMap2["float32"] = "float32"; + UpcastInt32AndMap2["int32"] = "int32"; + UpcastInt32AndMap2["bool"] = "int32"; + UpcastInt32AndMap2["complex64"] = "complex64"; +})(UpcastInt32AndMap || (UpcastInt32AndMap = {})); +var UpcastBoolAndMap; +(function(UpcastBoolAndMap2) { + UpcastBoolAndMap2["float32"] = "float32"; + UpcastBoolAndMap2["int32"] = "int32"; + UpcastBoolAndMap2["bool"] = "bool"; + UpcastBoolAndMap2["complex64"] = "complex64"; +})(UpcastBoolAndMap || (UpcastBoolAndMap = {})); +var UpcastFloat32AndMap; +(function(UpcastFloat32AndMap2) { + UpcastFloat32AndMap2["float32"] = "float32"; + UpcastFloat32AndMap2["int32"] = "float32"; + UpcastFloat32AndMap2["bool"] = "float32"; + UpcastFloat32AndMap2["complex64"] = "complex64"; +})(UpcastFloat32AndMap || (UpcastFloat32AndMap = {})); +var UpcastComplex64AndMap; +(function(UpcastComplex64AndMap2) { + UpcastComplex64AndMap2["float32"] = "complex64"; + UpcastComplex64AndMap2["int32"] = "complex64"; + UpcastComplex64AndMap2["bool"] = "complex64"; + UpcastComplex64AndMap2["complex64"] = "complex64"; +})(UpcastComplex64AndMap || (UpcastComplex64AndMap = {})); +var upcastTypeMap = { + float32: UpcastFloat32AndMap, + int32: UpcastInt32AndMap, + bool: UpcastBoolAndMap, + complex64: UpcastComplex64AndMap +}; +function upcastType(typeA, typeB) { + if (typeA === "string" || typeB === "string") { + if (typeA === "string" && typeB === "string") { + return "string"; + } + throw new Error(`Can not upcast ${typeA} with ${typeB}`); + } + return upcastTypeMap[typeA][typeB]; +} +function sumOutType(type) { + return upcastType(type, "int32"); +} +/** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ +function makeTypesMatch(a, b) { + if (a.dtype === b.dtype) { + return [a, b]; + } + const dtype = upcastType(a.dtype, b.dtype); + return [a.cast(dtype), b.cast(dtype)]; +} +function assertTypesMatch(a, b) { + assert(a.dtype === b.dtype, () => `The dtypes of the first(${a.dtype}) and second(${b.dtype}) input must match`); +} +function isTensorInList(tensor2, tensorList) { + return tensorList.some((x) => x.id === tensor2.id); +} +function getTensorsInContainer(result) { + const list = []; + const seen = new Set(); + walkTensorContainer(result, list, seen); + return list; +} +function walkTensorContainer(container, list, seen) { + if (container == null) { + return; + } + if (container instanceof Tensor) { + list.push(container); + return; + } + if (!isIterable(container)) { + return; + } + const iterable = container; + for (const k in iterable) { + const val = iterable[k]; + if (!seen.has(val)) { + seen.add(val); + walkTensorContainer(val, list, seen); + } + } +} +function isIterable(obj) { + return Array.isArray(obj) || typeof obj === "object"; +} +/** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ +function isRegisteredKernelInvocation(kernelInvocation) { + return kernelInvocation.kernelName != null; +} +var EngineState = class { + constructor() { + this.registeredVariables = {}; + this.nextTapeNodeId = 0; + this.numBytes = 0; + this.numTensors = 0; + this.numStringTensors = 0; + this.numDataBuffers = 0; + this.gradientDepth = 0; + this.kernelDepth = 0; + this.scopeStack = []; + this.numDataMovesStack = []; + this.nextScopeId = 0; + this.tensorInfo = new WeakMap(); + this.profiling = false; + this.activeProfile = { + newBytes: 0, + newTensors: 0, + peakBytes: 0, + kernels: [], + result: null, + get kernelNames() { + return Array.from(new Set(this.kernels.map((k) => k.name))); + } + }; + } + dispose() { + for (const variableName in this.registeredVariables) { + this.registeredVariables[variableName].dispose(); + } + } +}; +var Engine = class { + constructor(ENV5) { + this.ENV = ENV5; + this.registry = {}; + this.registryFactory = {}; + this.pendingBackendInitId = 0; + this.state = new EngineState(); + } + async ready() { + if (this.pendingBackendInit != null) { + return this.pendingBackendInit.then(() => { + }); + } + if (this.backendInstance != null) { + return; + } + const sortedBackends = this.getSortedBackends(); + for (let i = 0; i < sortedBackends.length; i++) { + const backendName = sortedBackends[i]; + const success = await this.initializeBackend(backendName).success; + if (success) { + await this.setBackend(backendName); + return; + } + } + throw new Error(`Could not initialize any backends, all backend initializations failed.`); + } + get backend() { + if (this.pendingBackendInit != null) { + throw new Error(`Backend '${this.backendName}' has not yet been initialized. Make sure to await tf.ready() or await tf.setBackend() before calling other methods`); + } + if (this.backendInstance == null) { + const {name, asyncInit} = this.initializeBackendsAndReturnBest(); + if (asyncInit) { + throw new Error(`The highest priority backend '${name}' has not yet been initialized. Make sure to await tf.ready() or await tf.setBackend() before calling other methods`); + } + this.setBackend(name); + } + return this.backendInstance; + } + backendNames() { + return Object.keys(this.registryFactory); + } + findBackend(backendName) { + if (!(backendName in this.registry)) { + if (backendName in this.registryFactory) { + const {asyncInit} = this.initializeBackend(backendName); + if (asyncInit) { + return null; + } + } else { + return null; + } + } + return this.registry[backendName]; + } + findBackendFactory(backendName) { + if (!(backendName in this.registryFactory)) { + return null; + } + return this.registryFactory[backendName].factory; + } + registerBackend(backendName, factory, priority = 1) { + if (backendName in this.registryFactory) { + console.warn(`${backendName} backend was already registered. Reusing existing backend factory.`); + return false; + } + this.registryFactory[backendName] = {factory, priority}; + return true; + } + async setBackend(backendName) { + if (this.registryFactory[backendName] == null) { + throw new Error(`Backend name '${backendName}' not found in registry`); + } + this.backendName = backendName; + if (this.registry[backendName] == null) { + this.backendInstance = null; + const {success, asyncInit} = this.initializeBackend(backendName); + const result = asyncInit ? await success : success; + if (!result) { + return false; + } + } + this.backendInstance = this.registry[backendName]; + this.setupRegisteredKernels(); + this.profiler = new Profiler(this.backendInstance); + return true; + } + setupRegisteredKernels() { + const kernels = getKernelsForBackend(this.backendName); + kernels.forEach((kernel) => { + if (kernel.setupFunc != null) { + kernel.setupFunc(this.backendInstance); + } + }); + } + disposeRegisteredKernels(backendName) { + const kernels = getKernelsForBackend(backendName); + kernels.forEach((kernel) => { + if (kernel.disposeFunc != null) { + kernel.disposeFunc(this.registry[backendName]); + } + }); + } + initializeBackend(backendName) { + const registryFactoryEntry = this.registryFactory[backendName]; + if (registryFactoryEntry == null) { + throw new Error(`Cannot initialize backend ${backendName}, no registration found.`); + } + try { + const backend22 = registryFactoryEntry.factory(); + if (backend22 && !(backend22 instanceof KernelBackend) && typeof backend22.then === "function") { + const promiseId = ++this.pendingBackendInitId; + const success = backend22.then((backendInstance) => { + if (promiseId < this.pendingBackendInitId) { + return false; + } + this.registry[backendName] = backendInstance; + this.pendingBackendInit = null; + return true; + }).catch((err) => { + if (promiseId < this.pendingBackendInitId) { + return false; + } + this.pendingBackendInit = null; + console.warn(`Initialization of backend ${backendName} failed`); + console.warn(err.stack || err.message); + return false; + }); + this.pendingBackendInit = success; + return {success, asyncInit: true}; + } else { + this.registry[backendName] = backend22; + return {success: true, asyncInit: false}; + } + } catch (err) { + console.warn(`Initialization of backend ${backendName} failed`); + console.warn(err.stack || err.message); + return {success: false, asyncInit: false}; + } + } + removeBackend(backendName) { + if (!(backendName in this.registryFactory)) { + throw new Error(`${backendName} backend not found in registry`); + } + if (this.backendName === backendName && this.pendingBackendInit != null) { + this.pendingBackendInitId++; + } + if (backendName in this.registry) { + this.disposeRegisteredKernels(backendName); + this.registry[backendName].dispose(); + delete this.registry[backendName]; + } + delete this.registryFactory[backendName]; + if (this.backendName === backendName) { + this.pendingBackendInit = null; + this.backendName = null; + this.backendInstance = null; + } + } + getSortedBackends() { + if (Object.keys(this.registryFactory).length === 0) { + throw new Error("No backend found in registry."); + } + return Object.keys(this.registryFactory).sort((a, b) => { + return this.registryFactory[b].priority - this.registryFactory[a].priority; + }); + } + initializeBackendsAndReturnBest() { + const sortedBackends = this.getSortedBackends(); + for (let i = 0; i < sortedBackends.length; i++) { + const backendName = sortedBackends[i]; + const {success, asyncInit} = this.initializeBackend(backendName); + if (asyncInit || success) { + return {name: backendName, asyncInit}; + } + } + throw new Error(`Could not initialize any backends, all backend initializations failed.`); + } + moveData(backend22, dataId) { + const info2 = this.state.tensorInfo.get(dataId); + const srcBackend = info2.backend; + const values = this.readSync(dataId); + const refCount = srcBackend.refCount(dataId); + srcBackend.disposeData(dataId, true); + info2.backend = backend22; + backend22.move(dataId, values, info2.shape, info2.dtype, refCount); + if (this.shouldCheckForMemLeaks()) { + this.state.numDataMovesStack[this.state.numDataMovesStack.length - 1]++; + } + } + tidy(nameOrFn, fn) { + let name = null; + if (fn == null) { + if (typeof nameOrFn !== "function") { + throw new Error("Please provide a function to tidy()"); + } + fn = nameOrFn; + } else { + if (typeof nameOrFn !== "string" && !(nameOrFn instanceof String)) { + throw new Error("When calling with two arguments, the first argument to tidy() must be a string"); + } + if (typeof fn !== "function") { + throw new Error("When calling with two arguments, the 2nd argument to tidy() must be a function"); + } + name = nameOrFn; + } + let result; + return this.scopedRun(() => this.startScope(name), () => this.endScope(result), () => { + result = fn(); + if (result instanceof Promise) { + console.error("Cannot return a Promise inside of tidy."); + } + return result; + }); + } + scopedRun(start, end, f) { + start(); + try { + const res = f(); + end(); + return res; + } catch (ex) { + end(); + throw ex; + } + } + nextTensorId() { + return Engine.nextTensorId++; + } + nextVariableId() { + return Engine.nextVariableId++; + } + clone(x) { + const y = ENGINE.runKernel(Identity, {x}); + const inputs = {x}; + const grad2 = (dy) => ({ + x: () => { + const dtype = "float32"; + const gradInputs = {x: dy}; + const attrs = {dtype}; + return ENGINE.runKernel(Cast, gradInputs, attrs); + } + }); + const saved = []; + this.addTapeNode(this.state.activeScope.name, inputs, [y], grad2, saved, {}); + return y; + } + runKernel(kernelName, inputs, attrs) { + const hasKernel = getKernel(kernelName, this.backendName) != null; + if (!hasKernel) { + throw new Error(`Kernel '${kernelName}' not registered for backend '${this.backendName}'`); + } + return this.runKernelFunc({kernelName, inputs, attrs}); + } + shouldCheckForMemLeaks() { + return this.ENV.getBool("IS_TEST"); + } + checkKernelForMemLeak(kernelName, numDataIdsBefore, outInfos) { + const numDataIdsAfter = this.backend.numDataIds(); + let numOutputDataIds = 0; + outInfos.forEach((info2) => { + numOutputDataIds += info2.dtype === "complex64" ? 3 : 1; + }); + const numMoves = this.state.numDataMovesStack[this.state.numDataMovesStack.length - 1]; + const dataIdsLeaked = numDataIdsAfter - numDataIdsBefore - numOutputDataIds - numMoves; + if (dataIdsLeaked > 0) { + throw new Error(`Backend '${this.backendName}' has an internal memory leak (${dataIdsLeaked} data ids) after running '${kernelName}'`); + } + } + runKernelFunc(kernelParams) { + let outputs; + let saved = []; + const isTapeOn = this.isTapeOn(); + const startingBytecount = this.state.numBytes; + const startingNumTensors = this.state.numTensors; + if (this.shouldCheckForMemLeaks()) { + this.state.numDataMovesStack.push(0); + } + let kernelFunc3; + if (this.backendName == null) { + this.backend; + } + let out; + const kernelOrScopeName = isRegisteredKernelInvocation(kernelParams) ? kernelParams.kernelName : this.state.activeScope != null ? this.state.activeScope.name : ""; + if (isRegisteredKernelInvocation(kernelParams)) { + const {kernelName, inputs: inputs2, attrs: attrs2} = kernelParams; + if (this.backendName == null) { + this.backend; + } + const kernel = getKernel(kernelName, this.backendName); + assert(kernel != null, () => `Cannot find registered kernel '${kernelName}' for backend '${this.backendName}'`); + kernelFunc3 = () => { + const numDataIdsBefore = this.backend.numDataIds(); + out = kernel.kernelFunc({inputs: inputs2, attrs: attrs2, backend: this.backend}); + const outInfos = Array.isArray(out) ? out : [out]; + if (this.shouldCheckForMemLeaks()) { + this.checkKernelForMemLeak(kernelName, numDataIdsBefore, outInfos); + } + const outTensors = outInfos.map((outInfo) => { + if (outInfo.rank != null) { + return outInfo; + } + const {dataId, shape, dtype} = outInfo; + return this.makeTensorFromDataId(dataId, shape, dtype); + }); + if (isTapeOn) { + const tensorsToSave = this.getTensorsForGradient(kernelName, inputs2, outTensors); + saved = this.saveTensorsForBackwardMode(tensorsToSave); + } + return outTensors; + }; + } else { + const {forwardFunc} = kernelParams; + const saveFunc = (tensors) => { + if (!isTapeOn) { + return; + } + saved = tensors.map((tensor2) => this.keep(this.clone(tensor2))); + }; + kernelFunc3 = () => { + const numDataIdsBefore = this.backend.numDataIds(); + out = this.tidy(() => forwardFunc(this.backend, saveFunc)); + const outs = Array.isArray(out) ? out : [out]; + if (this.shouldCheckForMemLeaks()) { + this.checkKernelForMemLeak(kernelOrScopeName, numDataIdsBefore, outs); + } + return outs; + }; + } + const {inputs, attrs} = kernelParams; + const backwardsFunc = isRegisteredKernelInvocation(kernelParams) ? null : kernelParams.backwardsFunc; + let kernelProfile; + this.scopedRun(() => this.state.kernelDepth++, () => this.state.kernelDepth--, () => { + if (!this.ENV.getBool("DEBUG") && !this.state.profiling) { + outputs = kernelFunc3(); + } else { + kernelProfile = this.profiler.profileKernel(kernelOrScopeName, inputs, () => kernelFunc3()); + if (this.ENV.getBool("DEBUG")) { + this.profiler.logKernelProfile(kernelProfile); + } + outputs = kernelProfile.outputs; + } + }); + if (isTapeOn) { + this.addTapeNode(kernelOrScopeName, inputs, outputs, backwardsFunc, saved, attrs); + } + if (this.state.profiling) { + this.state.activeProfile.kernels.push({ + name: kernelOrScopeName, + bytesAdded: this.state.numBytes - startingBytecount, + totalBytesSnapshot: this.state.numBytes, + tensorsAdded: this.state.numTensors - startingNumTensors, + totalTensorsSnapshot: this.state.numTensors, + inputShapes: Object.keys(inputs).map((key) => inputs[key] != null ? inputs[key].shape : null), + outputShapes: outputs.map((item) => item.shape), + kernelTimeMs: kernelProfile.timeMs, + extraInfo: kernelProfile.extraInfo + }); + } + return Array.isArray(out) ? outputs : outputs[0]; + } + saveTensorsForBackwardMode(tensors) { + const saved = tensors.map((tensor2) => this.keep(this.clone(tensor2))); + return saved; + } + getTensorsForGradient(kernelName, inputs, outputs) { + const gradConfig = getGradient(kernelName); + if (gradConfig != null) { + const inputsToSave = gradConfig.inputsToSave || []; + const outputsToSave = gradConfig.outputsToSave || []; + let inputTensorsToSave; + if (gradConfig.saveAllInputs) { + assert(Array.isArray(inputs), () => "saveAllInputs is true, expected inputs to be an array."); + inputTensorsToSave = Object.keys(inputs).map((key) => inputs[key]); + } else { + inputTensorsToSave = inputsToSave.map((inputName) => inputs[inputName]); + } + const outputTensorsToSave = outputs.filter((_, i) => outputsToSave[i]); + return inputTensorsToSave.concat(outputTensorsToSave); + } + return []; + } + makeTensor(values, shape, dtype, backend22) { + if (values == null) { + throw new Error("Values passed to engine.makeTensor() are null"); + } + dtype = dtype || "float32"; + backend22 = backend22 || this.backend; + let backendVals = values; + if (dtype === "string" && isString(values[0])) { + backendVals = values.map((d) => encodeString(d)); + } + const dataId = backend22.write(backendVals, shape, dtype); + const t = new Tensor(shape, dtype, dataId, this.nextTensorId()); + this.trackTensor(t, backend22); + if (dtype === "string") { + const info2 = this.state.tensorInfo.get(dataId); + const newBytes = bytesFromStringArray(backendVals); + this.state.numBytes += newBytes - info2.bytes; + info2.bytes = newBytes; + } + return t; + } + makeTensorFromDataId(dataId, shape, dtype, backend22) { + dtype = dtype || "float32"; + const t = new Tensor(shape, dtype, dataId, this.nextTensorId()); + this.trackTensor(t, backend22); + return t; + } + makeVariable(initialValue, trainable = true, name, dtype) { + name = name || this.nextVariableId().toString(); + if (dtype != null && dtype !== initialValue.dtype) { + initialValue = initialValue.cast(dtype); + } + const v = new Variable(initialValue, trainable, name, this.nextTensorId()); + if (this.state.registeredVariables[v.name] != null) { + throw new Error(`Variable with name ${v.name} was already registered`); + } + this.state.registeredVariables[v.name] = v; + this.incRef(v, this.backend); + return v; + } + trackTensor(a, backend22) { + this.state.numTensors++; + if (a.dtype === "string") { + this.state.numStringTensors++; + } + let bytes = 0; + if (a.dtype !== "complex64" && a.dtype !== "string") { + bytes = a.size * bytesPerElement(a.dtype); + } + this.state.numBytes += bytes; + if (!this.state.tensorInfo.has(a.dataId)) { + this.state.numDataBuffers++; + this.state.tensorInfo.set(a.dataId, { + backend: backend22 || this.backend, + dtype: a.dtype, + shape: a.shape, + bytes + }); + } + if (!(a instanceof Variable)) { + this.track(a); + } + } + incRef(a, backend22) { + this.trackTensor(a, backend22); + this.backend.incRef(a.dataId); + } + removeDataId(dataId, backend22) { + if (this.state.tensorInfo.has(dataId) && this.state.tensorInfo.get(dataId).backend === backend22) { + this.state.tensorInfo.delete(dataId); + this.state.numDataBuffers--; + } + } + disposeTensor(a) { + if (!this.state.tensorInfo.has(a.dataId)) { + return; + } + const info2 = this.state.tensorInfo.get(a.dataId); + this.state.numTensors--; + if (a.dtype === "string") { + this.state.numStringTensors--; + this.state.numBytes -= info2.bytes; + } + if (a.dtype !== "complex64" && a.dtype !== "string") { + const bytes = a.size * bytesPerElement(a.dtype); + this.state.numBytes -= bytes; + } + if (info2.backend.disposeData(a.dataId)) { + this.removeDataId(a.dataId, info2.backend); + } + } + disposeVariables() { + for (const varName in this.state.registeredVariables) { + const v = this.state.registeredVariables[varName]; + this.disposeVariable(v); + } + } + disposeVariable(v) { + this.disposeTensor(v); + if (this.state.registeredVariables[v.name] != null) { + delete this.state.registeredVariables[v.name]; + } + } + memory() { + const info2 = this.backend.memory(); + info2.numTensors = this.state.numTensors; + info2.numDataBuffers = this.state.numDataBuffers; + info2.numBytes = this.state.numBytes; + if (this.state.numStringTensors > 0) { + info2.unreliable = true; + if (info2.reasons == null) { + info2.reasons = []; + } + info2.reasons.push("Memory usage by string tensors is approximate (2 bytes per character)"); + } + return info2; + } + async profile(query) { + this.state.profiling = true; + const startBytes = this.state.numBytes; + const startNumTensors = this.state.numTensors; + this.state.activeProfile.kernels = []; + this.state.activeProfile.result = await query(); + this.state.profiling = false; + this.state.activeProfile.peakBytes = Math.max(...this.state.activeProfile.kernels.map((d) => d.totalBytesSnapshot)); + this.state.activeProfile.newBytes = this.state.numBytes - startBytes; + this.state.activeProfile.newTensors = this.state.numTensors - startNumTensors; + for (const kernel of this.state.activeProfile.kernels) { + kernel.kernelTimeMs = await kernel.kernelTimeMs; + kernel.extraInfo = await kernel.extraInfo; + } + return this.state.activeProfile; + } + isTapeOn() { + return this.state.gradientDepth > 0 && this.state.kernelDepth === 0; + } + addTapeNode(kernelName, inputs, outputs, gradientsFunc, saved, attrs) { + const tapeNode = {id: this.state.nextTapeNodeId++, kernelName, inputs, outputs, saved}; + const gradConfig = getGradient(kernelName); + if (gradConfig != null) { + gradientsFunc = gradConfig.gradFunc; + } + if (gradientsFunc != null) { + tapeNode.gradient = (dys) => { + dys = dys.map((dy, i) => { + if (dy == null) { + const output = outputs[i]; + const vals = makeZerosTypedArray(output.size, output.dtype); + return this.makeTensor(vals, output.shape, output.dtype); + } + return dy; + }); + return gradientsFunc(dys.length > 1 ? dys : dys[0], saved, attrs); + }; + } + this.state.activeTape.push(tapeNode); + } + keep(result) { + result.kept = true; + return result; + } + startTape() { + if (this.state.gradientDepth === 0) { + this.state.activeTape = []; + } + this.state.gradientDepth++; + } + endTape() { + this.state.gradientDepth--; + } + startScope(name) { + const scopeInfo = { + track: [], + name: "unnamed scope", + id: this.state.nextScopeId++ + }; + if (name) { + scopeInfo.name = name; + } + this.state.scopeStack.push(scopeInfo); + this.state.activeScope = scopeInfo; + } + endScope(result) { + const tensorsToTrackInParent = getTensorsInContainer(result); + const tensorsToTrackInParentSet = new Set(tensorsToTrackInParent.map((t) => t.id)); + for (let i = 0; i < this.state.activeScope.track.length; i++) { + const tensor2 = this.state.activeScope.track[i]; + if (!tensor2.kept && !tensorsToTrackInParentSet.has(tensor2.id)) { + tensor2.dispose(); + } + } + const oldScope = this.state.scopeStack.pop(); + this.state.activeScope = this.state.scopeStack.length === 0 ? null : this.state.scopeStack[this.state.scopeStack.length - 1]; + tensorsToTrackInParent.forEach((tensor2) => { + if (!tensor2.kept && tensor2.scopeId === oldScope.id) { + this.track(tensor2); + } + }); + } + gradients(f, xs, dy, allowNoGradients = false) { + assert(xs.length > 0, () => "gradients() received an empty list of xs."); + if (dy != null && dy.dtype !== "float32") { + throw new Error(`dy must have 'float32' dtype, but has '${dy.dtype}'`); + } + const y = this.scopedRun(() => this.startTape(), () => this.endTape(), () => this.tidy("forward", f)); + assert(y instanceof Tensor, () => "The result y returned by f() must be a tensor."); + const filteredTape = getFilteredNodesXToY(this.state.activeTape, xs, y); + if (!allowNoGradients && filteredTape.length === 0 && xs.length > 0) { + throw new Error("Cannot compute gradient of y=f(x) with respect to x. Make sure that the f you passed encloses all operations that lead from x to y."); + } + return this.tidy("backward", () => { + const accumulatedGradientMap = {}; + accumulatedGradientMap[y.id] = dy == null ? ones(y.shape) : dy; + backpropagateGradients(accumulatedGradientMap, filteredTape, (f2) => this.tidy(f2), add); + const grads2 = xs.map((x) => accumulatedGradientMap[x.id]); + if (this.state.gradientDepth === 0) { + this.state.activeTape.forEach((node) => { + for (const tensor2 of node.saved) { + tensor2.dispose(); + } + }); + this.state.activeTape = null; + } + return {value: y, grads: grads2}; + }); + } + customGrad(f) { + assert(isFunction(f), () => "The f passed in customGrad(f) must be a function."); + return (...inputs) => { + assert(inputs.every((t) => t instanceof Tensor), () => "The args passed in customGrad(f)(x1, x2,...) must all be tensors"); + let res; + const inputMap = {}; + inputs.forEach((input2, i) => { + inputMap[i] = input2; + }); + const forwardFunc = (_, save) => { + res = f(...[...inputs, save]); + assert(res.value instanceof Tensor, () => "The function f passed in customGrad(f) must return an object where `obj.value` is a tensor"); + assert(isFunction(res.gradFunc), () => "The function f passed in customGrad(f) must return an object where `obj.gradFunc` is a function."); + return res.value; + }; + const backwardsFunc = (dy, saved) => { + const gradRes = res.gradFunc(dy, saved); + const grads2 = Array.isArray(gradRes) ? gradRes : [gradRes]; + assert(grads2.length === inputs.length, () => "The function f passed in customGrad(f) must return an object where `obj.gradFunc` is a function that returns the same number of tensors as inputs passed to f(...)."); + assert(grads2.every((t) => t instanceof Tensor), () => "The function f passed in customGrad(f) must return an object where `obj.gradFunc` is a function that returns a list of only tensors."); + const gradMap = {}; + grads2.forEach((grad2, i) => { + gradMap[i] = () => grad2; + }); + return gradMap; + }; + return this.runKernelFunc({ + forwardFunc, + backwardsFunc, + inputs: inputMap + }); + }; + } + readSync(dataId) { + const info2 = this.state.tensorInfo.get(dataId); + return info2.backend.readSync(dataId); + } + read(dataId) { + const info2 = this.state.tensorInfo.get(dataId); + return info2.backend.read(dataId); + } + async time(query) { + const start = now2(); + const timingInfo = await this.backend.time(query); + timingInfo.wallMs = now2() - start; + return timingInfo; + } + track(result) { + if (this.state.activeScope != null) { + result.scopeId = this.state.activeScope.id; + this.state.activeScope.track.push(result); + } + return result; + } + get registeredVariables() { + return this.state.registeredVariables; + } + reset() { + this.pendingBackendInitId++; + this.state.dispose(); + this.ENV.reset(); + this.state = new EngineState(); + for (const backendName in this.registry) { + this.disposeRegisteredKernels(backendName); + this.registry[backendName].dispose(); + delete this.registry[backendName]; + } + this.backendName = null; + this.backendInstance = null; + this.pendingBackendInit = null; + } +}; +Engine.nextTensorId = 0; +Engine.nextVariableId = 0; +function ones(shape) { + const values = makeOnesTypedArray(sizeFromShape(shape), "float32"); + return ENGINE.makeTensor(values, shape, "float32"); +} +function getOrMakeEngine() { + const ns = getGlobalNamespace(); + if (ns._tfengine == null) { + const environment = new Environment(ns); + ns._tfengine = new Engine(environment); + } + setEnvironmentGlobal(ns._tfengine.ENV); + setTensorTracker(() => ns._tfengine); + return ns._tfengine; +} +var ENGINE = getOrMakeEngine(); +function add(a, b) { + const inputs = {a, b}; + return ENGINE.runKernel(Add, inputs); +} +var device_util_exports = {}; +__export2(device_util_exports, { + isBrowser: () => isBrowser, + isMobile: () => isMobile +}); +/** + * @license + * Copyright 2017 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ +function _isNavigatorDefined() { + return typeof navigator !== "undefined" && navigator != null; +} +function isMobile() { + if (_isNavigatorDefined()) { + const a = navigator.userAgent || navigator.vendor || window.opera; + return /(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(a) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(a.substr(0, 4)); + } + return false; +} +function isBrowser() { + return typeof window !== "undefined" && window.document != null || typeof WorkerGlobalScope !== "undefined"; +} +/** + * @license + * Copyright 2019 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ +var ENV2 = env(); +ENV2.registerFlag("DEBUG", () => false, (debugValue) => { + if (debugValue) { + console.warn("Debugging mode is ON. The output of every math call will be downloaded to CPU and checked for NaNs. This significantly impacts performance."); + } +}); +ENV2.registerFlag("IS_BROWSER", () => isBrowser()); +ENV2.registerFlag("IS_NODE", () => typeof process !== "undefined" && typeof process.versions !== "undefined" && typeof process.versions.node !== "undefined"); +ENV2.registerFlag("IS_CHROME", () => typeof navigator !== "undefined" && navigator != null && navigator.userAgent != null && /Chrome/.test(navigator.userAgent) && /Google Inc/.test(navigator.vendor)); +ENV2.registerFlag("PROD", () => false); +ENV2.registerFlag("TENSORLIKE_CHECK_SHAPE_CONSISTENCY", () => ENV2.getBool("DEBUG")); +ENV2.registerFlag("DEPRECATION_WARNINGS_ENABLED", () => true); +ENV2.registerFlag("IS_TEST", () => false); +ENV2.registerFlag("CHECK_COMPUTATION_FOR_ERRORS", () => true); +ENV2.registerFlag("WRAP_TO_IMAGEBITMAP", () => false); +/** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ +function inferShape(val, dtype) { + let firstElem = val; + if (isTypedArray(val)) { + return dtype === "string" ? [] : [val.length]; + } + if (!Array.isArray(val)) { + return []; + } + const shape = []; + while (Array.isArray(firstElem) || isTypedArray(firstElem) && dtype !== "string") { + shape.push(firstElem.length); + firstElem = firstElem[0]; + } + if (Array.isArray(val) && env().getBool("TENSORLIKE_CHECK_SHAPE_CONSISTENCY")) { + deepAssertShapeConsistency(val, shape, []); + } + return shape; +} +function deepAssertShapeConsistency(val, shape, indices) { + indices = indices || []; + if (!Array.isArray(val) && !isTypedArray(val)) { + assert(shape.length === 0, () => `Element arr[${indices.join("][")}] is a primitive, but should be an array/TypedArray of ${shape[0]} elements`); + return; + } + assert(shape.length > 0, () => `Element arr[${indices.join("][")}] should be a primitive, but is an array of ${val.length} elements`); + assert(val.length === shape[0], () => `Element arr[${indices.join("][")}] should have ${shape[0]} elements, but has ${val.length} elements`); + const subShape = shape.slice(1); + for (let i = 0; i < val.length; ++i) { + deepAssertShapeConsistency(val[i], subShape, indices.concat(i)); + } +} +function assertDtype(expectedDtype, actualDType, argName, functionName) { + if (expectedDtype === "string_or_numeric") { + return; + } + if (expectedDtype == null) { + throw new Error(`Expected dtype cannot be null.`); + } + if (expectedDtype !== "numeric" && expectedDtype !== actualDType || expectedDtype === "numeric" && actualDType === "string") { + throw new Error(`Argument '${argName}' passed to '${functionName}' must be ${expectedDtype} tensor, but got ${actualDType} tensor`); + } +} +function convertToTensor(x, argName, functionName, parseAsDtype = "numeric") { + if (x instanceof Tensor) { + assertDtype(parseAsDtype, x.dtype, argName, functionName); + return x; + } + let inferredDtype = inferDtype(x); + if (inferredDtype !== "string" && ["bool", "int32", "float32"].indexOf(parseAsDtype) >= 0) { + inferredDtype = parseAsDtype; + } + assertDtype(parseAsDtype, inferredDtype, argName, functionName); + if (x == null || !isTypedArray(x) && !Array.isArray(x) && typeof x !== "number" && typeof x !== "boolean" && typeof x !== "string") { + const type = x == null ? "null" : x.constructor.name; + throw new Error(`Argument '${argName}' passed to '${functionName}' must be a Tensor or TensorLike, but got '${type}'`); + } + const inferredShape = inferShape(x, inferredDtype); + if (!isTypedArray(x) && !Array.isArray(x)) { + x = [x]; + } + const skipTypedArray = true; + const values = inferredDtype !== "string" ? toTypedArray(x, inferredDtype) : flatten(x, [], skipTypedArray); + return ENGINE.makeTensor(values, inferredShape, inferredDtype); +} +function convertToTensorArray(arg, argName, functionName, parseAsDtype = "numeric") { + if (!Array.isArray(arg)) { + throw new Error(`Argument ${argName} passed to ${functionName} must be a \`Tensor[]\` or \`TensorLike[]\``); + } + const tensors = arg; + return tensors.map((t, i) => convertToTensor(t, `${argName}[${i}]`, functionName, parseAsDtype)); +} +/** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ +var OP_SCOPE_SUFFIX = "__op"; +function op(f) { + const keys = Object.keys(f); + if (keys.length !== 1) { + throw new Error(`Please provide an object with a single key (operation name) mapping to a function. Got an object with ${keys.length} keys.`); + } + let opName = keys[0]; + const fn = f[opName]; + if (opName.endsWith("_")) { + opName = opName.substring(0, opName.length - 1); + } + opName = opName + OP_SCOPE_SUFFIX; + const f2 = (...args) => { + ENGINE.startScope(opName); + try { + const result = fn(...args); + if (isPromise(result)) { + console.error("Cannot return a Promise inside of tidy."); + } + ENGINE.endScope(result); + return result; + } catch (ex) { + ENGINE.endScope(null); + throw ex; + } + }; + Object.defineProperty(f2, "name", {value: opName, configurable: true}); + return f2; +} +/** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ +function complex_(real4, imag4) { + const $real = convertToTensor(real4, "real", "complex"); + const $imag = convertToTensor(imag4, "imag", "complex"); + assertShapesMatch($real.shape, $imag.shape, `real and imag shapes, ${$real.shape} and ${$imag.shape}, must match in call to tf.complex().`); + const inputs = {real: $real, imag: $imag}; + return ENGINE.runKernel(Complex, inputs); +} +var complex = op({complex_}); +/** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ +function makeTensor(values, shape, inferredShape, dtype) { + if (dtype == null) { + dtype = inferDtype(values); + } + if (dtype === "complex64") { + throw new Error(`Cannot construct a complex64 tensor directly. Please use tf.complex(real, imag).`); + } + if (!isTypedArray(values) && !Array.isArray(values) && typeof values !== "number" && typeof values !== "boolean" && typeof values !== "string") { + throw new Error("values passed to tensor(values) must be a number/boolean/string or an array of numbers/booleans/strings, or a TypedArray"); + } + if (shape != null) { + assertNonNegativeIntegerDimensions(shape); + const providedSize = sizeFromShape(shape); + const inferredSize = sizeFromShape(inferredShape); + assert(providedSize === inferredSize, () => `Based on the provided shape, [${shape}], the tensor should have ${providedSize} values but has ${inferredSize}`); + for (let i = 0; i < inferredShape.length; ++i) { + const inferred = inferredShape[i]; + const flatDimsDontMatch = i === inferredShape.length - 1 ? inferred !== sizeFromShape(shape.slice(i)) : true; + assert(inferredShape[i] === shape[i] || !flatDimsDontMatch, () => `Error creating a new Tensor. Inferred shape (${inferredShape}) does not match the provided shape (${shape}). `); + } + } + if (!isTypedArray(values) && !Array.isArray(values)) { + values = [values]; + } + shape = shape || inferredShape; + values = dtype !== "string" ? toTypedArray(values, dtype) : flatten(values, [], true); + return ENGINE.makeTensor(values, shape, dtype); +} +/** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ +function tensor(values, shape, dtype) { + const inferredShape = inferShape(values, dtype); + return makeTensor(values, shape, inferredShape, dtype); +} +/** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ +var DTYPE_VALUE_SIZE_MAP = { + float32: 4, + float16: 2, + int32: 4, + uint16: 2, + uint8: 1, + bool: 1, + complex64: 8 +}; +/** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ +var NUM_BYTES_STRING_LENGTH = 4; +async function encodeWeights(tensors, group) { + const specs = []; + const dataPromises = []; + const names = Array.isArray(tensors) ? tensors.map((tensor2) => tensor2.name) : Object.keys(tensors); + for (let i = 0; i < names.length; ++i) { + const name = names[i]; + const t = Array.isArray(tensors) ? tensors[i].tensor : tensors[name]; + if (t.dtype !== "float32" && t.dtype !== "int32" && t.dtype !== "bool" && t.dtype !== "string" && t.dtype !== "complex64") { + throw new Error(`Unsupported dtype in weight '${name}': ${t.dtype}`); + } + const spec = {name, shape: t.shape, dtype: t.dtype}; + if (t.dtype === "string") { + const utf8bytes = new Promise(async (resolve) => { + const vals = await t.bytes(); + const totalNumBytes = vals.reduce((p2, c) => p2 + c.length, 0) + NUM_BYTES_STRING_LENGTH * vals.length; + const bytes = new Uint8Array(totalNumBytes); + let offset = 0; + for (let i2 = 0; i2 < vals.length; i2++) { + const val = vals[i2]; + const bytesOfLength = new Uint8Array(new Uint32Array([val.length]).buffer); + bytes.set(bytesOfLength, offset); + offset += NUM_BYTES_STRING_LENGTH; + bytes.set(val, offset); + offset += val.length; + } + resolve(bytes); + }); + dataPromises.push(utf8bytes); + } else { + dataPromises.push(t.data()); + } + if (group != null) { + spec.group = group; + } + specs.push(spec); + } + const tensorValues = await Promise.all(dataPromises); + return {data: concatenateTypedArrays(tensorValues), specs}; +} +function decodeWeights(buffer2, specs) { + const out = {}; + let float16Decode; + let offset = 0; + for (const spec of specs) { + const name = spec.name; + const dtype = spec.dtype; + const shape = spec.shape; + const size = sizeFromShape(shape); + let values; + if ("quantization" in spec) { + const quantization = spec.quantization; + if (quantization.dtype === "uint8" || quantization.dtype === "uint16") { + if (!("min" in quantization && "scale" in quantization)) { + throw new Error(`Weight ${spec.name} with quantization ${quantization.dtype} doesn't have corresponding metadata min and scale.`); + } + } else if (quantization.dtype === "float16") { + if (dtype !== "float32") { + throw new Error(`Weight ${spec.name} is quantized with ${quantization.dtype} which only supports weights of type float32 not ${dtype}.`); + } + } else { + throw new Error(`Weight ${spec.name} has unknown quantization dtype ${quantization.dtype}. Supported quantization dtypes are: 'uint8', 'uint16', and 'float16'.`); + } + const quantizationSizeFactor = DTYPE_VALUE_SIZE_MAP[quantization.dtype]; + const byteBuffer = buffer2.slice(offset, offset + size * quantizationSizeFactor); + const quantizedArray = quantization.dtype === "uint8" ? new Uint8Array(byteBuffer) : new Uint16Array(byteBuffer); + if (dtype === "float32") { + if (quantization.dtype === "uint8" || quantization.dtype === "uint16") { + values = new Float32Array(quantizedArray.length); + for (let i = 0; i < quantizedArray.length; i++) { + const v = quantizedArray[i]; + values[i] = v * quantization.scale + quantization.min; + } + } else if (quantization.dtype === "float16") { + if (float16Decode === void 0) { + float16Decode = getFloat16Decoder(); + } + values = float16Decode(quantizedArray); + } else { + throw new Error(`Unsupported quantization type ${quantization.dtype} for weight type float32.`); + } + } else if (dtype === "int32") { + if (quantization.dtype !== "uint8" && quantization.dtype !== "uint16") { + throw new Error(`Unsupported quantization type ${quantization.dtype} for weight type int32.`); + } + values = new Int32Array(quantizedArray.length); + for (let i = 0; i < quantizedArray.length; i++) { + const v = quantizedArray[i]; + values[i] = Math.round(v * quantization.scale + quantization.min); + } + } else { + throw new Error(`Unsupported dtype in weight '${name}': ${dtype}`); + } + offset += size * quantizationSizeFactor; + } else if (dtype === "string") { + const size2 = sizeFromShape(spec.shape); + values = []; + for (let i = 0; i < size2; i++) { + const byteLength = new Uint32Array(buffer2.slice(offset, offset + NUM_BYTES_STRING_LENGTH))[0]; + offset += NUM_BYTES_STRING_LENGTH; + const bytes = new Uint8Array(buffer2.slice(offset, offset + byteLength)); + values.push(bytes); + offset += byteLength; + } + } else { + const dtypeFactor = DTYPE_VALUE_SIZE_MAP[dtype]; + const byteBuffer = buffer2.slice(offset, offset + size * dtypeFactor); + if (dtype === "float32") { + values = new Float32Array(byteBuffer); + } else if (dtype === "int32") { + values = new Int32Array(byteBuffer); + } else if (dtype === "bool") { + values = new Uint8Array(byteBuffer); + } else if (dtype === "complex64") { + values = new Float32Array(byteBuffer); + const real4 = new Float32Array(values.length / 2); + const image3 = new Float32Array(values.length / 2); + for (let i = 0; i < real4.length; i++) { + real4[i] = values[i * 2]; + image3[i] = values[i * 2 + 1]; + } + const realTensor = tensor(real4, shape, "float32"); + const imageTensor = tensor(image3, shape, "float32"); + out[name] = complex(realTensor, imageTensor); + realTensor.dispose(); + imageTensor.dispose(); + } else { + throw new Error(`Unsupported dtype in weight '${name}': ${dtype}`); + } + offset += size * dtypeFactor; + } + if (dtype !== "complex64") { + out[name] = tensor(values, shape, dtype); + } + } + return out; +} +function concatenateTypedArrays(xs) { + if (xs === null) { + throw new Error(`Invalid input value: ${JSON.stringify(xs)}`); + } + let totalByteLength = 0; + const normalizedXs = []; + xs.forEach((x) => { + totalByteLength += x.byteLength; + normalizedXs.push(x.byteLength === x.buffer.byteLength ? x : new x.constructor(x)); + if (!(x instanceof Float32Array || x instanceof Int32Array || x instanceof Uint8Array)) { + throw new Error(`Unsupported TypedArray subtype: ${x.constructor.name}`); + } + }); + const y = new Uint8Array(totalByteLength); + let offset = 0; + normalizedXs.forEach((x) => { + y.set(new Uint8Array(x.buffer), offset); + offset += x.byteLength; + }); + return y.buffer; +} +var useNodeBuffer = typeof Buffer !== "undefined" && (typeof Blob === "undefined" || typeof atob === "undefined" || typeof btoa === "undefined"); +function stringByteLength(str) { + if (useNodeBuffer) { + return Buffer.byteLength(str); + } + return new Blob([str]).size; +} +function arrayBufferToBase64String(buffer2) { + if (useNodeBuffer) { + return Buffer.from(buffer2).toString("base64"); + } + const buf = new Uint8Array(buffer2); + let s = ""; + for (let i = 0, l = buf.length; i < l; i++) { + s += String.fromCharCode(buf[i]); + } + return btoa(s); +} +function base64StringToArrayBuffer(str) { + if (useNodeBuffer) { + const buf = Buffer.from(str, "base64"); + return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength); + } + const s = atob(str); + const buffer2 = new Uint8Array(s.length); + for (let i = 0; i < s.length; ++i) { + buffer2.set([s.charCodeAt(i)], i); + } + return buffer2.buffer; +} +function concatenateArrayBuffers(buffers) { + if (buffers.length === 1) { + return buffers[0]; + } + let totalByteLength = 0; + buffers.forEach((buffer2) => { + totalByteLength += buffer2.byteLength; + }); + const temp = new Uint8Array(totalByteLength); + let offset = 0; + buffers.forEach((buffer2) => { + temp.set(new Uint8Array(buffer2), offset); + offset += buffer2.byteLength; + }); + return temp.buffer; +} +function basename(path) { + const SEPARATOR = "/"; + path = path.trim(); + while (path.endsWith(SEPARATOR)) { + path = path.slice(0, path.length - 1); + } + const items = path.split(SEPARATOR); + return items[items.length - 1]; +} +function getModelArtifactsInfoForJSON(modelArtifacts) { + if (modelArtifacts.modelTopology instanceof ArrayBuffer) { + throw new Error("Expected JSON model topology, received ArrayBuffer."); + } + return { + dateSaved: new Date(), + modelTopologyType: "JSON", + modelTopologyBytes: modelArtifacts.modelTopology == null ? 0 : stringByteLength(JSON.stringify(modelArtifacts.modelTopology)), + weightSpecsBytes: modelArtifacts.weightSpecs == null ? 0 : stringByteLength(JSON.stringify(modelArtifacts.weightSpecs)), + weightDataBytes: modelArtifacts.weightData == null ? 0 : modelArtifacts.weightData.byteLength + }; +} +function computeFloat16MantisaTable() { + const convertMantissa = (i) => { + let m = i << 13; + let e = 0; + while ((m & 8388608) === 0) { + e -= 8388608; + m <<= 1; + } + m &= ~8388608; + e += 947912704; + return m | e; + }; + const mantisaTable = new Uint32Array(2048); + mantisaTable[0] = 0; + for (let i = 1; i < 1024; i++) { + mantisaTable[i] = convertMantissa(i); + } + for (let i = 1024; i < 2048; i++) { + mantisaTable[i] = 939524096 + (i - 1024 << 13); + } + return mantisaTable; +} +function computeFloat16ExponentTable() { + const exponentTable = new Uint32Array(64); + exponentTable[0] = 0; + exponentTable[31] = 1199570944; + exponentTable[32] = 2147483648; + exponentTable[63] = 3347054592; + for (let i = 1; i < 31; i++) { + exponentTable[i] = i << 23; + } + for (let i = 33; i < 63; i++) { + exponentTable[i] = 2147483648 + (i - 32 << 23); + } + return exponentTable; +} +function computeFloat16OffsetTable() { + const offsetTable = new Uint32Array(64); + for (let i = 0; i < 64; i++) { + offsetTable[i] = 1024; + } + offsetTable[0] = offsetTable[32] = 0; + return offsetTable; +} +function getFloat16Decoder() { + const mantisaTable = computeFloat16MantisaTable(); + const exponentTable = computeFloat16ExponentTable(); + const offsetTable = computeFloat16OffsetTable(); + return (quantizedArray) => { + const buffer2 = new ArrayBuffer(4 * quantizedArray.length); + const bufferUint32View = new Uint32Array(buffer2); + for (let index = 0; index < quantizedArray.length; index++) { + const float16Bits = quantizedArray[index]; + const float32Bits = mantisaTable[offsetTable[float16Bits >> 10] + (float16Bits & 1023)] + exponentTable[float16Bits >> 10]; + bufferUint32View[index] = float32Bits; + } + return new Float32Array(buffer2); + }; +} +/** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ +var IORouterRegistry = class { + constructor() { + this.saveRouters = []; + this.loadRouters = []; + } + static getInstance() { + if (IORouterRegistry.instance == null) { + IORouterRegistry.instance = new IORouterRegistry(); + } + return IORouterRegistry.instance; + } + static registerSaveRouter(saveRouter) { + IORouterRegistry.getInstance().saveRouters.push(saveRouter); + } + static registerLoadRouter(loadRouter) { + IORouterRegistry.getInstance().loadRouters.push(loadRouter); + } + static getSaveHandlers(url) { + return IORouterRegistry.getHandlers(url, "save"); + } + static getLoadHandlers(url, loadOptions) { + return IORouterRegistry.getHandlers(url, "load", loadOptions); + } + static getHandlers(url, handlerType, loadOptions) { + const validHandlers = []; + const routers = handlerType === "load" ? IORouterRegistry.getInstance().loadRouters : IORouterRegistry.getInstance().saveRouters; + routers.forEach((router) => { + const handler = router(url, loadOptions); + if (handler !== null) { + validHandlers.push(handler); + } + }); + return validHandlers; + } +}; +var registerSaveRouter = (loudRouter) => IORouterRegistry.registerSaveRouter(loudRouter); +var registerLoadRouter = (loudRouter) => IORouterRegistry.registerLoadRouter(loudRouter); +var getSaveHandlers = (url) => IORouterRegistry.getSaveHandlers(url); +var getLoadHandlers = (url, loadOptions) => IORouterRegistry.getLoadHandlers(url, loadOptions); +/** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ +var DATABASE_NAME = "tensorflowjs"; +var DATABASE_VERSION = 1; +var MODEL_STORE_NAME = "models_store"; +var INFO_STORE_NAME = "model_info_store"; +function getIndexedDBFactory() { + if (!env().getBool("IS_BROWSER")) { + throw new Error("Failed to obtain IndexedDB factory because the current environmentis not a web browser."); + } + const theWindow = typeof window === "undefined" ? self : window; + const factory = theWindow.indexedDB || theWindow.mozIndexedDB || theWindow.webkitIndexedDB || theWindow.msIndexedDB || theWindow.shimIndexedDB; + if (factory == null) { + throw new Error("The current browser does not appear to support IndexedDB."); + } + return factory; +} +function setUpDatabase(openRequest) { + const db = openRequest.result; + db.createObjectStore(MODEL_STORE_NAME, {keyPath: "modelPath"}); + db.createObjectStore(INFO_STORE_NAME, {keyPath: "modelPath"}); +} +var BrowserIndexedDB = class { + constructor(modelPath) { + this.indexedDB = getIndexedDBFactory(); + if (modelPath == null || !modelPath) { + throw new Error("For IndexedDB, modelPath must not be null, undefined or empty."); + } + this.modelPath = modelPath; + } + async save(modelArtifacts) { + if (modelArtifacts.modelTopology instanceof ArrayBuffer) { + throw new Error("BrowserLocalStorage.save() does not support saving model topology in binary formats yet."); + } + return this.databaseAction(this.modelPath, modelArtifacts); + } + async load() { + return this.databaseAction(this.modelPath); + } + databaseAction(modelPath, modelArtifacts) { + return new Promise((resolve, reject) => { + const openRequest = this.indexedDB.open(DATABASE_NAME, DATABASE_VERSION); + openRequest.onupgradeneeded = () => setUpDatabase(openRequest); + openRequest.onsuccess = () => { + const db = openRequest.result; + if (modelArtifacts == null) { + const modelTx = db.transaction(MODEL_STORE_NAME, "readonly"); + const modelStore = modelTx.objectStore(MODEL_STORE_NAME); + const getRequest = modelStore.get(this.modelPath); + getRequest.onsuccess = () => { + if (getRequest.result == null) { + db.close(); + return reject(new Error(`Cannot find model with path '${this.modelPath}' in IndexedDB.`)); + } else { + resolve(getRequest.result.modelArtifacts); + } + }; + getRequest.onerror = (error) => { + db.close(); + return reject(getRequest.error); + }; + modelTx.oncomplete = () => db.close(); + } else { + const modelArtifactsInfo = getModelArtifactsInfoForJSON(modelArtifacts); + const infoTx = db.transaction(INFO_STORE_NAME, "readwrite"); + let infoStore = infoTx.objectStore(INFO_STORE_NAME); + const putInfoRequest = infoStore.put({modelPath: this.modelPath, modelArtifactsInfo}); + let modelTx; + putInfoRequest.onsuccess = () => { + modelTx = db.transaction(MODEL_STORE_NAME, "readwrite"); + const modelStore = modelTx.objectStore(MODEL_STORE_NAME); + const putModelRequest = modelStore.put({ + modelPath: this.modelPath, + modelArtifacts, + modelArtifactsInfo + }); + putModelRequest.onsuccess = () => resolve({modelArtifactsInfo}); + putModelRequest.onerror = (error) => { + infoStore = infoTx.objectStore(INFO_STORE_NAME); + const deleteInfoRequest = infoStore.delete(this.modelPath); + deleteInfoRequest.onsuccess = () => { + db.close(); + return reject(putModelRequest.error); + }; + deleteInfoRequest.onerror = (error2) => { + db.close(); + return reject(putModelRequest.error); + }; + }; + }; + putInfoRequest.onerror = (error) => { + db.close(); + return reject(putInfoRequest.error); + }; + infoTx.oncomplete = () => { + if (modelTx == null) { + db.close(); + } else { + modelTx.oncomplete = () => db.close(); + } + }; + } + }; + openRequest.onerror = (error) => reject(openRequest.error); + }); + } +}; +BrowserIndexedDB.URL_SCHEME = "indexeddb://"; +var indexedDBRouter = (url) => { + if (!env().getBool("IS_BROWSER")) { + return null; + } else { + if (!Array.isArray(url) && url.startsWith(BrowserIndexedDB.URL_SCHEME)) { + return browserIndexedDB(url.slice(BrowserIndexedDB.URL_SCHEME.length)); + } else { + return null; + } + } +}; +IORouterRegistry.registerSaveRouter(indexedDBRouter); +IORouterRegistry.registerLoadRouter(indexedDBRouter); +function browserIndexedDB(modelPath) { + return new BrowserIndexedDB(modelPath); +} +function maybeStripScheme(key) { + return key.startsWith(BrowserIndexedDB.URL_SCHEME) ? key.slice(BrowserIndexedDB.URL_SCHEME.length) : key; +} +var BrowserIndexedDBManager = class { + constructor() { + this.indexedDB = getIndexedDBFactory(); + } + async listModels() { + return new Promise((resolve, reject) => { + const openRequest = this.indexedDB.open(DATABASE_NAME, DATABASE_VERSION); + openRequest.onupgradeneeded = () => setUpDatabase(openRequest); + openRequest.onsuccess = () => { + const db = openRequest.result; + const tx = db.transaction(INFO_STORE_NAME, "readonly"); + const store = tx.objectStore(INFO_STORE_NAME); + const getAllInfoRequest = store.getAll(); + getAllInfoRequest.onsuccess = () => { + const out = {}; + for (const item of getAllInfoRequest.result) { + out[item.modelPath] = item.modelArtifactsInfo; + } + resolve(out); + }; + getAllInfoRequest.onerror = (error) => { + db.close(); + return reject(getAllInfoRequest.error); + }; + tx.oncomplete = () => db.close(); + }; + openRequest.onerror = (error) => reject(openRequest.error); + }); + } + async removeModel(path) { + path = maybeStripScheme(path); + return new Promise((resolve, reject) => { + const openRequest = this.indexedDB.open(DATABASE_NAME, DATABASE_VERSION); + openRequest.onupgradeneeded = () => setUpDatabase(openRequest); + openRequest.onsuccess = () => { + const db = openRequest.result; + const infoTx = db.transaction(INFO_STORE_NAME, "readwrite"); + const infoStore = infoTx.objectStore(INFO_STORE_NAME); + const getInfoRequest = infoStore.get(path); + let modelTx; + getInfoRequest.onsuccess = () => { + if (getInfoRequest.result == null) { + db.close(); + return reject(new Error(`Cannot find model with path '${path}' in IndexedDB.`)); + } else { + const deleteInfoRequest = infoStore.delete(path); + const deleteModelData = () => { + modelTx = db.transaction(MODEL_STORE_NAME, "readwrite"); + const modelStore = modelTx.objectStore(MODEL_STORE_NAME); + const deleteModelRequest = modelStore.delete(path); + deleteModelRequest.onsuccess = () => resolve(getInfoRequest.result.modelArtifactsInfo); + deleteModelRequest.onerror = (error) => reject(getInfoRequest.error); + }; + deleteInfoRequest.onsuccess = deleteModelData; + deleteInfoRequest.onerror = (error) => { + deleteModelData(); + db.close(); + return reject(getInfoRequest.error); + }; + } + }; + getInfoRequest.onerror = (error) => { + db.close(); + return reject(getInfoRequest.error); + }; + infoTx.oncomplete = () => { + if (modelTx == null) { + db.close(); + } else { + modelTx.oncomplete = () => db.close(); + } + }; + }; + openRequest.onerror = (error) => reject(openRequest.error); + }); + } +}; +/** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ +var PATH_SEPARATOR = "/"; +var PATH_PREFIX = "tensorflowjs_models"; +var INFO_SUFFIX = "info"; +var MODEL_TOPOLOGY_SUFFIX = "model_topology"; +var WEIGHT_SPECS_SUFFIX = "weight_specs"; +var WEIGHT_DATA_SUFFIX = "weight_data"; +var MODEL_METADATA_SUFFIX = "model_metadata"; +function getModelKeys(path) { + return { + info: [PATH_PREFIX, path, INFO_SUFFIX].join(PATH_SEPARATOR), + topology: [PATH_PREFIX, path, MODEL_TOPOLOGY_SUFFIX].join(PATH_SEPARATOR), + weightSpecs: [PATH_PREFIX, path, WEIGHT_SPECS_SUFFIX].join(PATH_SEPARATOR), + weightData: [PATH_PREFIX, path, WEIGHT_DATA_SUFFIX].join(PATH_SEPARATOR), + modelMetadata: [PATH_PREFIX, path, MODEL_METADATA_SUFFIX].join(PATH_SEPARATOR) + }; +} +function getModelPathFromKey(key) { + const items = key.split(PATH_SEPARATOR); + if (items.length < 3) { + throw new Error(`Invalid key format: ${key}`); + } + return items.slice(1, items.length - 1).join(PATH_SEPARATOR); +} +function maybeStripScheme2(key) { + return key.startsWith(BrowserLocalStorage.URL_SCHEME) ? key.slice(BrowserLocalStorage.URL_SCHEME.length) : key; +} +var BrowserLocalStorage = class { + constructor(modelPath) { + if (!env().getBool("IS_BROWSER") || typeof window === "undefined" || typeof window.localStorage === "undefined") { + throw new Error("The current environment does not support local storage."); + } + this.LS = window.localStorage; + if (modelPath == null || !modelPath) { + throw new Error("For local storage, modelPath must not be null, undefined or empty."); + } + this.modelPath = modelPath; + this.keys = getModelKeys(this.modelPath); + } + async save(modelArtifacts) { + if (modelArtifacts.modelTopology instanceof ArrayBuffer) { + throw new Error("BrowserLocalStorage.save() does not support saving model topology in binary formats yet."); + } else { + const topology = JSON.stringify(modelArtifacts.modelTopology); + const weightSpecs = JSON.stringify(modelArtifacts.weightSpecs); + const modelArtifactsInfo = getModelArtifactsInfoForJSON(modelArtifacts); + try { + this.LS.setItem(this.keys.info, JSON.stringify(modelArtifactsInfo)); + this.LS.setItem(this.keys.topology, topology); + this.LS.setItem(this.keys.weightSpecs, weightSpecs); + this.LS.setItem(this.keys.weightData, arrayBufferToBase64String(modelArtifacts.weightData)); + const result = { + format: modelArtifacts.format, + generatedBy: modelArtifacts.generatedBy, + convertedBy: modelArtifacts.convertedBy + }; + if (modelArtifacts.signature != null) { + result.signature = modelArtifacts.signature; + } + if (modelArtifacts.userDefinedMetadata != null) { + result.userDefinedMetadata = modelArtifacts.userDefinedMetadata; + } + if (modelArtifacts.modelInitializer != null) { + result.modelInitializer = modelArtifacts.modelInitializer; + } + this.LS.setItem(this.keys.modelMetadata, JSON.stringify(result)); + return {modelArtifactsInfo}; + } catch (err) { + this.LS.removeItem(this.keys.info); + this.LS.removeItem(this.keys.topology); + this.LS.removeItem(this.keys.weightSpecs); + this.LS.removeItem(this.keys.weightData); + this.LS.removeItem(this.keys.modelMetadata); + throw new Error(`Failed to save model '${this.modelPath}' to local storage: size quota being exceeded is a possible cause of this failure: modelTopologyBytes=${modelArtifactsInfo.modelTopologyBytes}, weightSpecsBytes=${modelArtifactsInfo.weightSpecsBytes}, weightDataBytes=${modelArtifactsInfo.weightDataBytes}.`); + } + } + } + async load() { + const info2 = JSON.parse(this.LS.getItem(this.keys.info)); + if (info2 == null) { + throw new Error(`In local storage, there is no model with name '${this.modelPath}'`); + } + if (info2.modelTopologyType !== "JSON") { + throw new Error("BrowserLocalStorage does not support loading non-JSON model topology yet."); + } + const out = {}; + const topology = JSON.parse(this.LS.getItem(this.keys.topology)); + if (topology == null) { + throw new Error(`In local storage, the topology of model '${this.modelPath}' is missing.`); + } + out.modelTopology = topology; + const weightSpecs = JSON.parse(this.LS.getItem(this.keys.weightSpecs)); + if (weightSpecs == null) { + throw new Error(`In local storage, the weight specs of model '${this.modelPath}' are missing.`); + } + out.weightSpecs = weightSpecs; + const metadataString = this.LS.getItem(this.keys.modelMetadata); + if (metadataString != null) { + const metadata = JSON.parse(metadataString); + out.format = metadata["format"]; + out.generatedBy = metadata["generatedBy"]; + out.convertedBy = metadata["convertedBy"]; + if (metadata["signature"] != null) { + out.signature = metadata["signature"]; + } + if (metadata["userDefinedMetadata"] != null) { + out.userDefinedMetadata = metadata["userDefinedMetadata"]; + } + if (metadata["modelInitializer"] != null) { + out.modelInitializer = metadata["modelInitializer"]; + } + } + const weightDataBase64 = this.LS.getItem(this.keys.weightData); + if (weightDataBase64 == null) { + throw new Error(`In local storage, the binary weight values of model '${this.modelPath}' are missing.`); + } + out.weightData = base64StringToArrayBuffer(weightDataBase64); + return out; + } +}; +BrowserLocalStorage.URL_SCHEME = "localstorage://"; +var localStorageRouter = (url) => { + if (!env().getBool("IS_BROWSER")) { + return null; + } else { + if (!Array.isArray(url) && url.startsWith(BrowserLocalStorage.URL_SCHEME)) { + return browserLocalStorage(url.slice(BrowserLocalStorage.URL_SCHEME.length)); + } else { + return null; + } + } +}; +IORouterRegistry.registerSaveRouter(localStorageRouter); +IORouterRegistry.registerLoadRouter(localStorageRouter); +function browserLocalStorage(modelPath) { + return new BrowserLocalStorage(modelPath); +} +var BrowserLocalStorageManager = class { + constructor() { + assert(env().getBool("IS_BROWSER"), () => "Current environment is not a web browser"); + assert(typeof window === "undefined" || typeof window.localStorage !== "undefined", () => "Current browser does not appear to support localStorage"); + this.LS = window.localStorage; + } + async listModels() { + const out = {}; + const prefix = PATH_PREFIX + PATH_SEPARATOR; + const suffix = PATH_SEPARATOR + INFO_SUFFIX; + for (let i = 0; i < this.LS.length; ++i) { + const key = this.LS.key(i); + if (key.startsWith(prefix) && key.endsWith(suffix)) { + const modelPath = getModelPathFromKey(key); + out[modelPath] = JSON.parse(this.LS.getItem(key)); + } + } + return out; + } + async removeModel(path) { + path = maybeStripScheme2(path); + const keys = getModelKeys(path); + if (this.LS.getItem(keys.info) == null) { + throw new Error(`Cannot find model at path '${path}'`); + } + const info2 = JSON.parse(this.LS.getItem(keys.info)); + this.LS.removeItem(keys.info); + this.LS.removeItem(keys.topology); + this.LS.removeItem(keys.weightSpecs); + this.LS.removeItem(keys.weightData); + return info2; + } +}; +/** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ +var URL_SCHEME_SUFFIX = "://"; +var ModelStoreManagerRegistry = class { + constructor() { + this.managers = {}; + } + static getInstance() { + if (ModelStoreManagerRegistry.instance == null) { + ModelStoreManagerRegistry.instance = new ModelStoreManagerRegistry(); + } + return ModelStoreManagerRegistry.instance; + } + static registerManager(scheme, manager) { + assert(scheme != null, () => "scheme must not be undefined or null."); + if (scheme.endsWith(URL_SCHEME_SUFFIX)) { + scheme = scheme.slice(0, scheme.indexOf(URL_SCHEME_SUFFIX)); + } + assert(scheme.length > 0, () => "scheme must not be an empty string."); + const registry = ModelStoreManagerRegistry.getInstance(); + assert(registry.managers[scheme] == null, () => `A model store manager is already registered for scheme '${scheme}'.`); + registry.managers[scheme] = manager; + } + static getManager(scheme) { + const manager = this.getInstance().managers[scheme]; + if (manager == null) { + throw new Error(`Cannot find model manager for scheme '${scheme}'`); + } + return manager; + } + static getSchemes() { + return Object.keys(this.getInstance().managers); + } +}; +function parseURL(url) { + if (url.indexOf(URL_SCHEME_SUFFIX) === -1) { + throw new Error(`The url string provided does not contain a scheme. Supported schemes are: ${ModelStoreManagerRegistry.getSchemes().join(",")}`); + } + return { + scheme: url.split(URL_SCHEME_SUFFIX)[0], + path: url.split(URL_SCHEME_SUFFIX)[1] + }; +} +async function cloneModelInternal(sourceURL, destURL, deleteSource = false) { + assert(sourceURL !== destURL, () => `Old path and new path are the same: '${sourceURL}'`); + const loadHandlers = IORouterRegistry.getLoadHandlers(sourceURL); + assert(loadHandlers.length > 0, () => `Copying failed because no load handler is found for source URL ${sourceURL}.`); + assert(loadHandlers.length < 2, () => `Copying failed because more than one (${loadHandlers.length}) load handlers for source URL ${sourceURL}.`); + const loadHandler = loadHandlers[0]; + const saveHandlers = IORouterRegistry.getSaveHandlers(destURL); + assert(saveHandlers.length > 0, () => `Copying failed because no save handler is found for destination URL ${destURL}.`); + assert(saveHandlers.length < 2, () => `Copying failed because more than one (${loadHandlers.length}) save handlers for destination URL ${destURL}.`); + const saveHandler = saveHandlers[0]; + const sourceScheme = parseURL(sourceURL).scheme; + const sourcePath = parseURL(sourceURL).path; + const sameMedium = sourceScheme === parseURL(sourceURL).scheme; + const modelArtifacts = await loadHandler.load(); + if (deleteSource && sameMedium) { + await ModelStoreManagerRegistry.getManager(sourceScheme).removeModel(sourcePath); + } + const saveResult = await saveHandler.save(modelArtifacts); + if (deleteSource && !sameMedium) { + await ModelStoreManagerRegistry.getManager(sourceScheme).removeModel(sourcePath); + } + return saveResult.modelArtifactsInfo; +} +async function listModels() { + const schemes = ModelStoreManagerRegistry.getSchemes(); + const out = {}; + for (const scheme of schemes) { + const schemeOut = await ModelStoreManagerRegistry.getManager(scheme).listModels(); + for (const path in schemeOut) { + const url = scheme + URL_SCHEME_SUFFIX + path; + out[url] = schemeOut[path]; + } + } + return out; +} +async function removeModel(url) { + const schemeAndPath = parseURL(url); + const manager = ModelStoreManagerRegistry.getManager(schemeAndPath.scheme); + return manager.removeModel(schemeAndPath.path); +} +async function copyModel(sourceURL, destURL) { + const deleteSource = false; + return cloneModelInternal(sourceURL, destURL, deleteSource); +} +async function moveModel(sourceURL, destURL) { + const deleteSource = true; + return cloneModelInternal(sourceURL, destURL, deleteSource); +} +/** + * @license + * Copyright 2019 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ +var PlatformBrowser = class { + fetch(path, init2) { + return fetch(path, init2); + } + now() { + return performance.now(); + } + encode(text, encoding) { + if (encoding !== "utf-8" && encoding !== "utf8") { + throw new Error(`Browser's encoder only supports utf-8, but got ${encoding}`); + } + if (this.textEncoder == null) { + this.textEncoder = new TextEncoder(); + } + return this.textEncoder.encode(text); + } + decode(bytes, encoding) { + return new TextDecoder(encoding).decode(bytes); + } +}; +if (env().get("IS_BROWSER")) { + env().setPlatform("browser", new PlatformBrowser()); + try { + ModelStoreManagerRegistry.registerManager(BrowserLocalStorage.URL_SCHEME, new BrowserLocalStorageManager()); + } catch (err) { + } + try { + ModelStoreManagerRegistry.registerManager(BrowserIndexedDB.URL_SCHEME, new BrowserIndexedDBManager()); + } catch (err) { + } +} +/** + * @license + * Copyright 2019 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ +var getNodeFetch = { + importFetch: () => require_browser() +}; +var systemFetch; +var PlatformNode = class { + constructor() { + this.util = require("util"); + this.textEncoder = new this.util.TextEncoder(); + } + fetch(path, requestInits) { + if (env().global.fetch != null) { + return env().global.fetch(path, requestInits); + } + if (systemFetch == null) { + systemFetch = getNodeFetch.importFetch(); + } + return systemFetch(path, requestInits); + } + now() { + const time2 = process.hrtime(); + return time2[0] * 1e3 + time2[1] / 1e6; + } + encode(text, encoding) { + if (encoding !== "utf-8" && encoding !== "utf8") { + throw new Error(`Node built-in encoder only supports utf-8, but got ${encoding}`); + } + return this.textEncoder.encode(text); + } + decode(bytes, encoding) { + if (bytes.length === 0) { + return ""; + } + return new this.util.TextDecoder(encoding).decode(bytes); + } +}; +if (env().get("IS_NODE")) { + env().setPlatform("node", new PlatformNode()); +} +/** + * @license + * Copyright 2020 Google Inc. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ +function buffer(shape, dtype = "float32", values) { + dtype = dtype || "float32"; + assertNonNegativeIntegerDimensions(shape); + return new TensorBuffer(shape, dtype, values); +} +/** + * @license + * Copyright 2020 Google Inc. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ +function cast_(x, dtype) { + const $x = convertToTensor(x, "x", "cast"); + if (!isValidDtype(dtype)) { + throw new Error(`Failed to cast to unknown dtype ${dtype}`); + } + if (dtype === "string" && $x.dtype !== "string" || dtype !== "string" && $x.dtype === "string") { + throw new Error("Only strings can be casted to strings"); + } + const inputs = {x: $x}; + const attrs = {dtype}; + return ENGINE.runKernel(Cast, inputs, attrs); +} +var cast = op({cast_}); +/** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ +function clone_(x) { + const $x = convertToTensor(x, "x", "clone", "string_or_numeric"); + const inputs = {x: $x}; + return ENGINE.runKernel(Identity, inputs); +} +var clone = op({clone_}); +/** + * @license + * Copyright 2020 Google Inc. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ +function print2(x, verbose = false) { + console.log(x.toString(verbose)); +} +/** + * @license + * Copyright 2020 Google Inc. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ +getOrMakeEngine(); +var opHandler2 = { + buffer, + cast, + clone, + print: print2 +}; +setOpHandler(opHandler2); +var io_exports = {}; +__export2(io_exports, { + browserFiles: () => browserFiles, + browserHTTPRequest: () => browserHTTPRequest, + concatenateArrayBuffers: () => concatenateArrayBuffers, + copyModel: () => copyModel, + decodeWeights: () => decodeWeights, + encodeWeights: () => encodeWeights, + fromMemory: () => fromMemory, + getLoadHandlers: () => getLoadHandlers, + getModelArtifactsInfoForJSON: () => getModelArtifactsInfoForJSON, + getSaveHandlers: () => getSaveHandlers, + http: () => http, + isHTTPScheme: () => isHTTPScheme, + listModels: () => listModels, + loadWeights: () => loadWeights, + moveModel: () => moveModel, + registerLoadRouter: () => registerLoadRouter, + registerSaveRouter: () => registerSaveRouter, + removeModel: () => removeModel, + weightsLoaderFactory: () => weightsLoaderFactory, + withSaveHandler: () => withSaveHandler +}); +/** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ +var DEFAULT_FILE_NAME_PREFIX = "model"; +var DEFAULT_JSON_EXTENSION_NAME = ".json"; +var DEFAULT_WEIGHT_DATA_EXTENSION_NAME = ".weights.bin"; +function defer(f) { + return new Promise((resolve) => setTimeout(resolve)).then(f); +} +var BrowserDownloads = class { + constructor(fileNamePrefix) { + if (!env().getBool("IS_BROWSER")) { + throw new Error("browserDownloads() cannot proceed because the current environment is not a browser."); + } + if (fileNamePrefix.startsWith(BrowserDownloads.URL_SCHEME)) { + fileNamePrefix = fileNamePrefix.slice(BrowserDownloads.URL_SCHEME.length); + } + if (fileNamePrefix == null || fileNamePrefix.length === 0) { + fileNamePrefix = DEFAULT_FILE_NAME_PREFIX; + } + this.modelTopologyFileName = fileNamePrefix + DEFAULT_JSON_EXTENSION_NAME; + this.weightDataFileName = fileNamePrefix + DEFAULT_WEIGHT_DATA_EXTENSION_NAME; + } + async save(modelArtifacts) { + if (typeof document === "undefined") { + throw new Error("Browser downloads are not supported in this environment since `document` is not present"); + } + const weightsURL = window.URL.createObjectURL(new Blob([modelArtifacts.weightData], {type: "application/octet-stream"})); + if (modelArtifacts.modelTopology instanceof ArrayBuffer) { + throw new Error("BrowserDownloads.save() does not support saving model topology in binary formats yet."); + } else { + const weightsManifest = [{ + paths: ["./" + this.weightDataFileName], + weights: modelArtifacts.weightSpecs + }]; + const modelTopologyAndWeightManifest = { + modelTopology: modelArtifacts.modelTopology, + format: modelArtifacts.format, + generatedBy: modelArtifacts.generatedBy, + convertedBy: modelArtifacts.convertedBy, + weightsManifest + }; + if (modelArtifacts.signature != null) { + modelTopologyAndWeightManifest.signature = modelArtifacts.signature; + } + if (modelArtifacts.userDefinedMetadata != null) { + modelTopologyAndWeightManifest.userDefinedMetadata = modelArtifacts.userDefinedMetadata; + } + if (modelArtifacts.modelInitializer != null) { + modelTopologyAndWeightManifest.modelInitializer = modelArtifacts.modelInitializer; + } + const modelTopologyAndWeightManifestURL = window.URL.createObjectURL(new Blob([JSON.stringify(modelTopologyAndWeightManifest)], {type: "application/json"})); + const jsonAnchor = this.jsonAnchor == null ? document.createElement("a") : this.jsonAnchor; + jsonAnchor.download = this.modelTopologyFileName; + jsonAnchor.href = modelTopologyAndWeightManifestURL; + await defer(() => jsonAnchor.dispatchEvent(new MouseEvent("click"))); + if (modelArtifacts.weightData != null) { + const weightDataAnchor = this.weightDataAnchor == null ? document.createElement("a") : this.weightDataAnchor; + weightDataAnchor.download = this.weightDataFileName; + weightDataAnchor.href = weightsURL; + await defer(() => weightDataAnchor.dispatchEvent(new MouseEvent("click"))); + } + return {modelArtifactsInfo: getModelArtifactsInfoForJSON(modelArtifacts)}; + } + } +}; +BrowserDownloads.URL_SCHEME = "downloads://"; +var BrowserFiles = class { + constructor(files) { + if (files == null || files.length < 1) { + throw new Error(`When calling browserFiles, at least 1 file is required, but received ${files}`); + } + this.files = files; + } + async load() { + const jsonFile = this.files[0]; + const weightFiles = this.files.slice(1); + return new Promise((resolve, reject) => { + const jsonReader = new FileReader(); + jsonReader.onload = (event) => { + const modelJSON = JSON.parse(event.target.result); + const modelTopology = modelJSON.modelTopology; + if (modelTopology == null) { + reject(new Error(`modelTopology field is missing from file ${jsonFile.name}`)); + return; + } + if (weightFiles.length === 0) { + resolve({modelTopology}); + } + const weightsManifest = modelJSON.weightsManifest; + if (weightsManifest == null) { + reject(new Error(`weightManifest field is missing from file ${jsonFile.name}`)); + return; + } + let pathToFile; + try { + pathToFile = this.checkManifestAndWeightFiles(weightsManifest, weightFiles); + } catch (err) { + reject(err); + return; + } + const weightSpecs = []; + const paths = []; + const perFileBuffers = []; + weightsManifest.forEach((weightsGroup) => { + weightsGroup.paths.forEach((path) => { + paths.push(path); + perFileBuffers.push(null); + }); + weightSpecs.push(...weightsGroup.weights); + }); + weightsManifest.forEach((weightsGroup) => { + weightsGroup.paths.forEach((path) => { + const weightFileReader = new FileReader(); + weightFileReader.onload = (event2) => { + const weightData = event2.target.result; + const index = paths.indexOf(path); + perFileBuffers[index] = weightData; + if (perFileBuffers.indexOf(null) === -1) { + const result = { + modelTopology, + weightSpecs, + weightData: concatenateArrayBuffers(perFileBuffers), + format: modelJSON.format, + generatedBy: modelJSON.generatedBy, + convertedBy: modelJSON.convertedBy + }; + if (modelJSON.signature != null) { + result.signature = modelJSON.signature; + } + if (modelJSON.userDefinedMetadata != null) { + result.userDefinedMetadata = modelJSON.userDefinedMetadata; + } + if (modelJSON.modelInitializer != null) { + result.modelInitializer = modelJSON.modelInitializer; + } + resolve(result); + } + }; + weightFileReader.onerror = (error) => reject(`Failed to weights data from file of path '${path}'.`); + weightFileReader.readAsArrayBuffer(pathToFile[path]); + }); + }); + }; + jsonReader.onerror = (error) => reject(`Failed to read model topology and weights manifest JSON from file '${jsonFile.name}'. BrowserFiles supports loading Keras-style tf.Model artifacts only.`); + jsonReader.readAsText(jsonFile); + }); + } + checkManifestAndWeightFiles(manifest, files) { + const basenames = []; + const fileNames = files.map((file) => basename(file.name)); + const pathToFile = {}; + for (const group of manifest) { + group.paths.forEach((path) => { + const pathBasename = basename(path); + if (basenames.indexOf(pathBasename) !== -1) { + throw new Error(`Duplicate file basename found in weights manifest: '${pathBasename}'`); + } + basenames.push(pathBasename); + if (fileNames.indexOf(pathBasename) === -1) { + throw new Error(`Weight file with basename '${pathBasename}' is not provided.`); + } else { + pathToFile[path] = files[fileNames.indexOf(pathBasename)]; + } + }); + } + if (basenames.length !== files.length) { + throw new Error(`Mismatch in the number of files in weights manifest (${basenames.length}) and the number of weight files provided (${files.length}).`); + } + return pathToFile; + } +}; +var browserDownloadsRouter = (url) => { + if (!env().getBool("IS_BROWSER")) { + return null; + } else { + if (!Array.isArray(url) && url.startsWith(BrowserDownloads.URL_SCHEME)) { + return browserDownloads(url.slice(BrowserDownloads.URL_SCHEME.length)); + } else { + return null; + } + } +}; +IORouterRegistry.registerSaveRouter(browserDownloadsRouter); +function browserDownloads(fileNamePrefix = "model") { + return new BrowserDownloads(fileNamePrefix); +} +function browserFiles(files) { + return new BrowserFiles(files); +} +/** + * @license + * Copyright 2019 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ +function monitorPromisesProgress(promises, onProgress, startFraction, endFraction) { + checkPromises(promises); + startFraction = startFraction == null ? 0 : startFraction; + endFraction = endFraction == null ? 1 : endFraction; + checkFraction(startFraction, endFraction); + let resolvedPromise = 0; + const registerMonitor = (promise) => { + promise.then((value) => { + const fraction = startFraction + ++resolvedPromise / promises.length * (endFraction - startFraction); + onProgress(fraction); + return value; + }); + return promise; + }; + function checkPromises(promises2) { + assert(promises2 != null && Array.isArray(promises2) && promises2.length > 0, () => "promises must be a none empty array"); + } + function checkFraction(startFraction2, endFraction2) { + assert(startFraction2 >= 0 && startFraction2 <= 1, () => `Progress fraction must be in range [0, 1], but got startFraction ${startFraction2}`); + assert(endFraction2 >= 0 && endFraction2 <= 1, () => `Progress fraction must be in range [0, 1], but got endFraction ${endFraction2}`); + assert(endFraction2 >= startFraction2, () => `startFraction must be no more than endFraction, but got startFraction ${startFraction2} and endFraction ${endFraction2}`); + } + return Promise.all(promises.map(registerMonitor)); +} +/** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ +async function loadWeightsAsArrayBuffer(fetchURLs, loadOptions) { + if (loadOptions == null) { + loadOptions = {}; + } + const fetchFunc = loadOptions.fetchFunc == null ? env().platform.fetch : loadOptions.fetchFunc; + const requests = fetchURLs.map((fetchURL) => fetchFunc(fetchURL, loadOptions.requestInit, {isBinary: true})); + const fetchStartFraction = 0; + const fetchEndFraction = 0.5; + const responses = loadOptions.onProgress == null ? await Promise.all(requests) : await monitorPromisesProgress(requests, loadOptions.onProgress, fetchStartFraction, fetchEndFraction); + const bufferPromises = responses.map((response) => response.arrayBuffer()); + const bufferStartFraction = 0.5; + const bufferEndFraction = 1; + const buffers = loadOptions.onProgress == null ? await Promise.all(bufferPromises) : await monitorPromisesProgress(bufferPromises, loadOptions.onProgress, bufferStartFraction, bufferEndFraction); + return buffers; +} +async function loadWeights(manifest, filePathPrefix = "", weightNames, requestInit) { + const fetchWeights = (fetchUrls) => loadWeightsAsArrayBuffer(fetchUrls, {requestInit}); + const loadWeights2 = weightsLoaderFactory(fetchWeights); + return loadWeights2(manifest, filePathPrefix, weightNames); +} +function weightsLoaderFactory(fetchWeightsFunction) { + return async (manifest, filePathPrefix = "", weightNames) => { + const groupIndicesToFetchMap = manifest.map(() => false); + const groupWeightsToFetch = {}; + const weightsFound = weightNames != null ? weightNames.map(() => false) : []; + const allManifestWeightNames = []; + manifest.forEach((manifestGroupConfig, groupIndex) => { + let groupOffset = 0; + manifestGroupConfig.weights.forEach((weightsEntry) => { + const rawDtype = "quantization" in weightsEntry ? weightsEntry.quantization.dtype : weightsEntry.dtype; + const weightsBytes = DTYPE_VALUE_SIZE_MAP[rawDtype] * sizeFromShape(weightsEntry.shape); + const enqueueWeightsForFetchingFn = () => { + groupIndicesToFetchMap[groupIndex] = true; + if (groupWeightsToFetch[groupIndex] == null) { + groupWeightsToFetch[groupIndex] = []; + } + groupWeightsToFetch[groupIndex].push({ + manifestEntry: weightsEntry, + groupOffset, + sizeBytes: weightsBytes + }); + }; + if (weightNames != null) { + weightNames.forEach((weightName, weightIndex) => { + if (weightName === weightsEntry.name) { + enqueueWeightsForFetchingFn(); + weightsFound[weightIndex] = true; + } + }); + } else { + enqueueWeightsForFetchingFn(); + } + allManifestWeightNames.push(weightsEntry.name); + groupOffset += weightsBytes; + }); + }); + if (!weightsFound.every((found) => found)) { + const weightsNotFound = weightNames.filter((_, i) => !weightsFound[i]); + throw new Error(`Could not find weights in manifest with names: ${weightsNotFound.join(", ")}. +Manifest JSON has weights with names: ${allManifestWeightNames.join(", ")}.`); + } + const groupIndicesToFetch = groupIndicesToFetchMap.reduce((accumulator, shouldFetch, i) => { + if (shouldFetch) { + accumulator.push(i); + } + return accumulator; + }, []); + const fetchUrls = []; + groupIndicesToFetch.forEach((i) => { + manifest[i].paths.forEach((filepath) => { + const fetchUrl = filePathPrefix + (!filePathPrefix.endsWith("/") ? "/" : "") + filepath; + fetchUrls.push(fetchUrl); + }); + }); + const buffers = await fetchWeightsFunction(fetchUrls); + const weightsTensorMap = {}; + let bufferIndexOffset = 0; + groupIndicesToFetch.forEach((i) => { + const numBuffers = manifest[i].paths.length; + let groupBytes = 0; + for (let i2 = 0; i2 < numBuffers; i2++) { + groupBytes += buffers[bufferIndexOffset + i2].byteLength; + } + const groupBuffer = new ArrayBuffer(groupBytes); + const groupByteBuffer = new Uint8Array(groupBuffer); + let groupBufferOffset = 0; + for (let i2 = 0; i2 < numBuffers; i2++) { + const buffer2 = new Uint8Array(buffers[bufferIndexOffset + i2]); + groupByteBuffer.set(buffer2, groupBufferOffset); + groupBufferOffset += buffer2.byteLength; + } + const weightsEntries = groupWeightsToFetch[i]; + weightsEntries.forEach((weightsEntry) => { + const byteBuffer = groupBuffer.slice(weightsEntry.groupOffset, weightsEntry.groupOffset + weightsEntry.sizeBytes); + const nameToTensorMap = decodeWeights(byteBuffer, [weightsEntry.manifestEntry]); + for (const name in nameToTensorMap) { + weightsTensorMap[name] = nameToTensorMap[name]; + } + }); + bufferIndexOffset += numBuffers; + }); + return weightsTensorMap; + }; +} +/** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ +var OCTET_STREAM_MIME_TYPE = "application/octet-stream"; +var JSON_TYPE = "application/json"; +var HTTPRequest = class { + constructor(path, loadOptions) { + this.DEFAULT_METHOD = "POST"; + if (loadOptions == null) { + loadOptions = {}; + } + this.weightPathPrefix = loadOptions.weightPathPrefix; + this.onProgress = loadOptions.onProgress; + this.weightUrlConverter = loadOptions.weightUrlConverter; + if (loadOptions.fetchFunc != null) { + assert(typeof loadOptions.fetchFunc === "function", () => "Must pass a function that matches the signature of `fetch` (see https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API)"); + this.fetch = loadOptions.fetchFunc; + } else { + this.fetch = env().platform.fetch; + } + assert(path != null && path.length > 0, () => "URL path for http must not be null, undefined or empty."); + if (Array.isArray(path)) { + assert(path.length === 2, () => `URL paths for http must have a length of 2, (actual length is ${path.length}).`); + } + this.path = path; + if (loadOptions.requestInit != null && loadOptions.requestInit.body != null) { + throw new Error("requestInit is expected to have no pre-existing body, but has one."); + } + this.requestInit = loadOptions.requestInit || {}; + } + async save(modelArtifacts) { + if (modelArtifacts.modelTopology instanceof ArrayBuffer) { + throw new Error("BrowserHTTPRequest.save() does not support saving model topology in binary formats yet."); + } + const init2 = Object.assign({method: this.DEFAULT_METHOD}, this.requestInit); + init2.body = new FormData(); + const weightsManifest = [{ + paths: ["./model.weights.bin"], + weights: modelArtifacts.weightSpecs + }]; + const modelTopologyAndWeightManifest = { + modelTopology: modelArtifacts.modelTopology, + format: modelArtifacts.format, + generatedBy: modelArtifacts.generatedBy, + convertedBy: modelArtifacts.convertedBy, + weightsManifest + }; + if (modelArtifacts.signature != null) { + modelTopologyAndWeightManifest.signature = modelArtifacts.signature; + } + if (modelArtifacts.userDefinedMetadata != null) { + modelTopologyAndWeightManifest.userDefinedMetadata = modelArtifacts.userDefinedMetadata; + } + if (modelArtifacts.modelInitializer != null) { + modelTopologyAndWeightManifest.modelInitializer = modelArtifacts.modelInitializer; + } + init2.body.append("model.json", new Blob([JSON.stringify(modelTopologyAndWeightManifest)], {type: JSON_TYPE}), "model.json"); + if (modelArtifacts.weightData != null) { + init2.body.append("model.weights.bin", new Blob([modelArtifacts.weightData], {type: OCTET_STREAM_MIME_TYPE}), "model.weights.bin"); + } + const response = await this.fetch(this.path, init2); + if (response.ok) { + return { + modelArtifactsInfo: getModelArtifactsInfoForJSON(modelArtifacts), + responses: [response] + }; + } else { + throw new Error(`BrowserHTTPRequest.save() failed due to HTTP response status ${response.status}.`); + } + } + async load() { + const modelConfigRequest = await this.fetch(this.path, this.requestInit); + if (!modelConfigRequest.ok) { + throw new Error(`Request to ${this.path} failed with status code ${modelConfigRequest.status}. Please verify this URL points to the model JSON of the model to load.`); + } + let modelConfig; + try { + modelConfig = await modelConfigRequest.json(); + } catch (e) { + let message = `Failed to parse model JSON of response from ${this.path}.`; + if (this.path.endsWith(".pb")) { + message += " Your path contains a .pb file extension. Support for .pb models have been removed in TensorFlow.js 1.0 in favor of .json models. You can re-convert your Python TensorFlow model using the TensorFlow.js 1.0 conversion scripts or you can convert your.pb models with the 'pb2json'NPM script in the tensorflow/tfjs-converter repository."; + } else { + message += " Please make sure the server is serving valid JSON for this request."; + } + throw new Error(message); + } + const modelTopology = modelConfig.modelTopology; + const weightsManifest = modelConfig.weightsManifest; + const generatedBy = modelConfig.generatedBy; + const convertedBy = modelConfig.convertedBy; + const format = modelConfig.format; + const signature = modelConfig.signature; + const userDefinedMetadata = modelConfig.userDefinedMetadata; + if (modelTopology == null && weightsManifest == null) { + throw new Error(`The JSON from HTTP path ${this.path} contains neither model topology or manifest for weights.`); + } + let weightSpecs; + let weightData; + if (weightsManifest != null) { + const results = await this.loadWeights(weightsManifest); + [weightSpecs, weightData] = results; + } + const artifacts = { + modelTopology, + weightSpecs, + weightData, + generatedBy, + convertedBy, + format + }; + if (signature != null) { + artifacts.signature = signature; + } + if (userDefinedMetadata != null) { + artifacts.userDefinedMetadata = userDefinedMetadata; + } + const initializer = modelConfig.modelInitializer; + if (initializer) { + artifacts.modelInitializer = initializer; + } + return artifacts; + } + async loadWeights(weightsManifest) { + const weightPath = Array.isArray(this.path) ? this.path[1] : this.path; + const [prefix, suffix] = parseUrl(weightPath); + const pathPrefix = this.weightPathPrefix || prefix; + const weightSpecs = []; + for (const entry of weightsManifest) { + weightSpecs.push(...entry.weights); + } + const fetchURLs = []; + const urlPromises = []; + for (const weightsGroup of weightsManifest) { + for (const path of weightsGroup.paths) { + if (this.weightUrlConverter != null) { + urlPromises.push(this.weightUrlConverter(path)); + } else { + fetchURLs.push(pathPrefix + path + suffix); + } + } + } + if (this.weightUrlConverter) { + fetchURLs.push(...await Promise.all(urlPromises)); + } + const buffers = await loadWeightsAsArrayBuffer(fetchURLs, { + requestInit: this.requestInit, + fetchFunc: this.fetch, + onProgress: this.onProgress + }); + return [weightSpecs, concatenateArrayBuffers(buffers)]; + } +}; +HTTPRequest.URL_SCHEME_REGEX = /^https?:\/\//; +function parseUrl(url) { + const lastSlash = url.lastIndexOf("/"); + const lastSearchParam = url.lastIndexOf("?"); + const prefix = url.substring(0, lastSlash); + const suffix = lastSearchParam > lastSlash ? url.substring(lastSearchParam) : ""; + return [prefix + "/", suffix]; +} +function isHTTPScheme(url) { + return url.match(HTTPRequest.URL_SCHEME_REGEX) != null; +} +var httpRouter = (url, loadOptions) => { + if (typeof fetch === "undefined" && (loadOptions == null || loadOptions.fetchFunc == null)) { + return null; + } else { + let isHTTP = true; + if (Array.isArray(url)) { + isHTTP = url.every((urlItem) => isHTTPScheme(urlItem)); + } else { + isHTTP = isHTTPScheme(url); + } + if (isHTTP) { + return http(url, loadOptions); + } + } + return null; +}; +IORouterRegistry.registerSaveRouter(httpRouter); +IORouterRegistry.registerLoadRouter(httpRouter); +function http(path, loadOptions) { + return new HTTPRequest(path, loadOptions); +} +function browserHTTPRequest(path, loadOptions) { + return http(path, loadOptions); +} +/** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ +var PassthroughLoader = class { + constructor(modelArtifacts) { + this.modelArtifacts = modelArtifacts; + } + async load() { + return this.modelArtifacts; + } +}; +var PassthroughSaver = class { + constructor(saveHandler) { + this.saveHandler = saveHandler; + } + async save(modelArtifacts) { + return this.saveHandler(modelArtifacts); + } +}; +function fromMemory(modelArtifacts, weightSpecs, weightData, trainingConfig) { + if (arguments.length === 1) { + const isModelArtifacts = modelArtifacts.modelTopology != null || modelArtifacts.weightSpecs != null; + if (isModelArtifacts) { + return new PassthroughLoader(modelArtifacts); + } else { + console.warn("Please call tf.io.fromMemory() with only one argument. The argument should be of type ModelArtifacts. The multi-argument signature of tf.io.fromMemory() has been deprecated and will be removed in a future release."); + return new PassthroughLoader({modelTopology: modelArtifacts}); + } + } else { + console.warn("Please call tf.io.fromMemory() with only one argument. The argument should be of type ModelArtifacts. The multi-argument signature of tf.io.fromMemory() has been deprecated and will be removed in a future release."); + return new PassthroughLoader({ + modelTopology: modelArtifacts, + weightSpecs, + weightData, + trainingConfig + }); + } +} +function withSaveHandler(saveHandler) { + return new PassthroughSaver(saveHandler); +} +/** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ +var math_exports = {}; +__export2(math_exports, { + confusionMatrix: () => confusionMatrix +}); +/** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ +function matMul_(a, b, transposeA = false, transposeB = false) { + let $a = convertToTensor(a, "a", "matMul"); + let $b = convertToTensor(b, "b", "matMul"); + [$a, $b] = makeTypesMatch($a, $b); + const inputs = {a: $a, b: $b}; + const attrs = {transposeA, transposeB}; + return ENGINE.runKernel(BatchMatMul, inputs, attrs); +} +var matMul = op({matMul_}); +/** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ +function oneHot_(indices, depth, onValue = 1, offValue = 0) { + if (depth < 2) { + throw new Error(`Error in oneHot: depth must be >=2, but it is ${depth}`); + } + const $indices = convertToTensor(indices, "indices", "oneHot", "int32"); + const inputs = {indices: $indices}; + const attrs = {depth, onValue, offValue}; + return ENGINE.runKernel(OneHot, inputs, attrs); +} +var oneHot = op({oneHot_}); +/** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ +function transpose_(x, perm) { + const $x = convertToTensor(x, "x", "transpose"); + if (perm == null) { + perm = $x.shape.map((s, i) => i).reverse(); + } + assert($x.rank === perm.length, () => `Error in transpose: rank of input ${$x.rank} must match length of perm ${perm}.`); + perm.forEach((axis) => { + assert(axis >= 0 && axis < $x.rank, () => `All entries in 'perm' must be between 0 and ${$x.rank - 1} but got ${perm}`); + }); + if ($x.rank <= 1) { + return $x.clone(); + } + const inputs = {x: $x}; + const attrs = {perm}; + return ENGINE.runKernel(Transpose, inputs, attrs); +} +var transpose = op({transpose_}); +/** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ +function confusionMatrix_(labels2, predictions, numClasses) { + const $labels = convertToTensor(labels2, "labels", "confusionMatrix"); + const $predictions = convertToTensor(predictions, "predictions", "confusionMatrix"); + assert(numClasses == null || numClasses > 0 && Number.isInteger(numClasses), () => `If provided, numClasses must be a positive integer, but got ${numClasses}`); + assert($labels.rank === 1, () => `Expected the rank of labels to be 1, but got ${$labels.rank}`); + assert($predictions.rank === 1, () => `Expected the rank of predictions to be 1, but got ${$predictions.rank}`); + assert($labels.shape[0] === $predictions.shape[0], () => `Mismatch in the number of examples: ${$labels.shape[0]} vs. ${$predictions.shape[0]}. Labels and predictions should have the same number of elements.`); + assert(numClasses > 0 && Number.isInteger(numClasses), () => `numClasses is required to be a positive integer, but got ${numClasses}`); + const oneHotLabels = oneHot(cast($labels, "int32"), numClasses); + const oneHotPredictions = oneHot(cast($predictions, "int32"), numClasses); + const oneHotLabelsT = transpose(oneHotLabels); + const product = matMul(oneHotLabelsT, oneHotPredictions); + return cast(product, "int32"); +} +var confusionMatrix = op({confusionMatrix_}); +/** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ +var browser_exports = {}; +__export2(browser_exports, { + fromPixels: () => fromPixels, + fromPixelsAsync: () => fromPixelsAsync, + toPixels: () => toPixels +}); +/** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ +function tensor3d(values, shape, dtype) { + assertNonNull(values); + if (shape != null && shape.length !== 3) { + throw new Error("tensor3d() requires shape to have three numbers"); + } + const inferredShape = inferShape(values, dtype); + if (inferredShape.length !== 3 && inferredShape.length !== 1) { + throw new Error("tensor3d() requires values to be number[][][] or flat/TypedArray"); + } + if (inferredShape.length === 1 && shape == null) { + throw new Error("tensor3d() requires shape to be provided when `values` are a flat array"); + } + return makeTensor(values, shape, inferredShape, dtype); +} +/** + * @license + * Copyright 2019 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ +var fromPixels2DContext; +function fromPixels_(pixels, numChannels = 3) { + if (numChannels > 4) { + throw new Error("Cannot construct Tensor with more than 4 channels from pixels."); + } + if (pixels == null) { + throw new Error("pixels passed to tf.browser.fromPixels() can not be null"); + } + let isPixelData2 = false; + let isImageData = false; + let isVideo = false; + let isImage = false; + let isCanvasLike = false; + let isImageBitmap = false; + if (pixels.data instanceof Uint8Array) { + isPixelData2 = true; + } else if (typeof ImageData !== "undefined" && pixels instanceof ImageData) { + isImageData = true; + } else if (typeof HTMLVideoElement !== "undefined" && pixels instanceof HTMLVideoElement) { + isVideo = true; + } else if (typeof HTMLImageElement !== "undefined" && pixels instanceof HTMLImageElement) { + isImage = true; + } else if (pixels.getContext != null) { + isCanvasLike = true; + } else if (typeof ImageBitmap !== "undefined" && pixels instanceof ImageBitmap) { + isImageBitmap = true; + } else { + throw new Error(`pixels passed to tf.browser.fromPixels() must be either an HTMLVideoElement, HTMLImageElement, HTMLCanvasElement, ImageData in browser, or OffscreenCanvas, ImageData in webworker or {data: Uint32Array, width: number, height: number}, but was ${pixels.constructor.name}`); + } + if (isVideo) { + const HAVE_CURRENT_DATA_READY_STATE = 2; + if (isVideo && pixels.readyState < HAVE_CURRENT_DATA_READY_STATE) { + throw new Error("The video element has not loaded data yet. Please wait for `loadeddata` event on the s5){let A=Cu*i,y=Array.from(e.slice(0,A)),g=Array.from(e.slice((o-Cu)*i,o*i));return n==="complex64"&&(y=Ru(y),g=Ru(g)),["["+y.map((w,b)=>Eu(w,a[b],n)).join(", ")+", ..., "+g.map((w,b)=>Eu(w,a[o-Cu+b],n)).join(", ")+"]"]}let m=n==="complex64"?Ru(e):Array.from(e);return["["+m.map((A,y)=>Eu(A,a[y],n)).join(", ")+"]"]}let c=t.slice(1),u=r.slice(1),h=r[0]*i,d=[];if(o>s5){for(let m=0;m`Length of values '${r}' does not match the size inferred by the shape '${this.size}'.`)}if(t==="complex64")throw new Error("complex64 dtype TensorBuffers are not supported. Please create a TensorBuffer for the real and imaginary parts separately and call tf.complex(real, imag).");this.values=n||Gg(t,this.size),this.strides=Xi(e)}set(e,...t){t.length===0&&(t=[0]),M(t.length===this.rank,()=>`The number of provided coordinates (${t.length}) must match the rank (${this.rank})`);let n=this.locToIndex(t);this.values[n]=e}get(...e){e.length===0&&(e=[0]);let t=0;for(let r of e){if(r<0||r>=this.shape[t]){let a=`Requested out of range element at ${e}. Buffer shape=${this.shape}`;throw new Error(a)}t++}let n=e[e.length-1];for(let r=0;rnd(n))}catch(n){throw new Error("Failed to decode the string bytes into utf-8. To get the original bytes, call tensor.bytes().")}}return e}dataSync(){this.throwIfDisposed();let e=Tr().readSync(this.dataId);if(this.dtype==="string")try{return e.map(t=>nd(t))}catch(t){throw new Error("Failed to decode the string bytes into utf-8. To get the original bytes, call tensor.bytes().")}return e}async bytes(){this.throwIfDisposed();let e=await Tr().read(this.dataId);return this.dtype==="string"?e:new Uint8Array(e.buffer)}dispose(){this.isDisposed||(Tr().disposeTensor(this),this.isDisposedInternal=!0)}get isDisposed(){return this.isDisposedInternal}throwIfDisposed(){if(this.isDisposed)throw new Error("Tensor is disposed.")}print(e=!1){return Jo.print(this,e)}clone(){return this.throwIfDisposed(),Jo.clone(this)}toString(e=!1){let t=this.dataSync();return Ek(t,this.shape,this.dtype,e)}cast(e){return this.throwIfDisposed(),Jo.cast(this,e)}variable(e=!0,t,n){return this.throwIfDisposed(),Tr().makeVariable(this,e,t,n)}};Object.defineProperty(Ve,Symbol.hasInstance,{value:e=>!!e&&e.data!=null&&e.dataSync!=null&&e.throwIfDisposed!=null});function Z(){return lf("Tensor",()=>Ve)}Z();var Mu=class extends Ve{constructor(e,t,n,r){super(e.shape,e.dtype,e.dataId,r);this.trainable=t,this.name=n}assign(e){if(e.dtype!==this.dtype)throw new Error(`dtype of the new value (${e.dtype}) and previous value (${this.dtype}) must match`);if(!Qr(e.shape,this.shape))throw new Error(`shape of the new value (${e.shape}) and previous value (${this.shape}) must match`);Tr().disposeTensor(this),this.dataId=e.dataId,Tr().incRef(this,null)}dispose(){Tr().disposeVariable(this),this.isDisposedInternal=!0}};Object.defineProperty(Mu,Symbol.hasInstance,{value:e=>e instanceof Ve&&e.assign!=null&&e.assign instanceof Function});var fr={};Oe(fr,{assertTypesMatch:()=>o5,getTensorsInContainer:()=>df,isTensorInList:()=>Dk,makeTypesMatch:()=>bt});var pf;(function(e){e.R0="R0",e.R1="R1",e.R2="R2",e.R3="R3",e.R4="R4",e.R5="R5",e.R6="R6"})(pf||(pf={}));var ff;(function(e){e.float32="float32",e.int32="int32",e.bool="int32",e.complex64="complex64"})(ff||(ff={}));var mf;(function(e){e.float32="float32",e.int32="int32",e.bool="bool",e.complex64="complex64"})(mf||(mf={}));var Af;(function(e){e.float32="float32",e.int32="float32",e.bool="float32",e.complex64="complex64"})(Af||(Af={}));var yf;(function(e){e.float32="complex64",e.int32="complex64",e.bool="complex64",e.complex64="complex64"})(yf||(yf={}));var Ok={float32:Af,int32:ff,bool:mf,complex64:yf};function nr(e,t){if(e==="string"||t==="string"){if(e==="string"&&t==="string")return"string";throw new Error(`Can not upcast ${e} with ${t}`)}return Ok[e][t]}function ad(e){return nr(e,"int32")}function bt(e,t){if(e.dtype===t.dtype)return[e,t];let n=nr(e.dtype,t.dtype);return[e.cast(n),t.cast(n)]}function o5(e,t){M(e.dtype===t.dtype,()=>`The dtypes of the first(${e.dtype}) and second(${t.dtype}) input must match`)}function Dk(e,t){return t.some(n=>n.id===e.id)}function df(e){let t=[],n=new Set;return l5(e,t,n),t}function l5(e,t,n){if(e==null)return;if(e instanceof Ve){t.push(e);return}if(!zk(e))return;let r=e;for(let a in r){let s=r[a];n.has(s)||(n.add(s),l5(s,t,n))}}function zk(e){return Array.isArray(e)||typeof e=="object"}function gf(e){return e.kernelName!=null}var u5=class{constructor(){this.registeredVariables={},this.nextTapeNodeId=0,this.numBytes=0,this.numTensors=0,this.numStringTensors=0,this.numDataBuffers=0,this.gradientDepth=0,this.kernelDepth=0,this.scopeStack=[],this.numDataMovesStack=[],this.nextScopeId=0,this.tensorInfo=new WeakMap,this.profiling=!1,this.activeProfile={newBytes:0,newTensors:0,peakBytes:0,kernels:[],result:null,get kernelNames(){return Array.from(new Set(this.kernels.map(e=>e.name)))}}}dispose(){for(let e in this.registeredVariables)this.registeredVariables[e].dispose()}},Fu=class{constructor(e){this.ENV=e,this.registry={},this.registryFactory={},this.pendingBackendInitId=0,this.state=new u5}async ready(){if(this.pendingBackendInit!=null)return this.pendingBackendInit.then(()=>{});if(this.backendInstance!=null)return;let e=this.getSortedBackends();for(let t=0;t{e.setupFunc!=null&&e.setupFunc(this.backendInstance)})}disposeRegisteredKernels(e){Yo(e).forEach(t=>{t.disposeFunc!=null&&t.disposeFunc(this.registry[e])})}initializeBackend(e){let t=this.registryFactory[e];if(t==null)throw new Error(`Cannot initialize backend ${e}, no registration found.`);try{let n=t.factory();if(n&&!(n instanceof iu)&&typeof n.then=="function"){let r=++this.pendingBackendInitId,a=n.then(s=>r(rthis.registryFactory[t].priority-this.registryFactory[e].priority)}initializeBackendsAndReturnBest(){let e=this.getSortedBackends();for(let t=0;tthis.startScope(n),()=>this.endScope(r),()=>(r=t(),r instanceof Promise&&console.error("Cannot return a Promise inside of tidy."),r))}scopedRun(e,t,n){e();try{let r=n();return t(),r}catch(r){throw t(),r}}nextTensorId(){return Fu.nextTensorId++}nextVariableId(){return Fu.nextVariableId++}clone(e){let t=$.runKernel(vs,{x:e}),n={x:e},r=s=>({x:()=>{let i="float32",o={x:s},l={dtype:i};return $.runKernel(cs,o,l)}}),a=[];return this.addTapeNode(this.state.activeScope.name,n,[t],r,a,{}),t}runKernel(e,t,n){if(ed(e,this.backendName)==null)throw new Error(`Kernel '${e}' not registered for backend '${this.backendName}'`);return this.runKernelFunc({kernelName:e,inputs:t,attrs:n})}shouldCheckForMemLeaks(){return this.ENV.getBool("IS_TEST")}checkKernelForMemLeak(e,t,n){let r=this.backend.numDataIds(),a=0;n.forEach(o=>{a+=o.dtype==="complex64"?3:1});let s=this.state.numDataMovesStack[this.state.numDataMovesStack.length-1],i=r-t-a-s;if(i>0)throw new Error(`Backend '${this.backendName}' has an internal memory leak (${i} data ids) after running '${e}'`)}runKernelFunc(e){let t,n=[],r=this.isTapeOn(),a=this.state.numBytes,s=this.state.numTensors;this.shouldCheckForMemLeaks()&&this.state.numDataMovesStack.push(0);let i;this.backendName==null&&this.backend;let o,l=gf(e)?e.kernelName:this.state.activeScope!=null?this.state.activeScope.name:"";if(gf(e)){let{kernelName:p,inputs:f,attrs:m}=e;this.backendName==null&&this.backend;let A=ed(p,this.backendName);M(A!=null,()=>`Cannot find registered kernel '${p}' for backend '${this.backendName}'`),i=()=>{let y=this.backend.numDataIds();o=A.kernelFunc({inputs:f,attrs:m,backend:this.backend});let g=Array.isArray(o)?o:[o];this.shouldCheckForMemLeaks()&&this.checkKernelForMemLeak(p,y,g);let w=g.map(b=>{if(b.rank!=null)return b;let{dataId:_,shape:x,dtype:N}=b;return this.makeTensorFromDataId(_,x,N)});if(r){let b=this.getTensorsForGradient(p,f,w);n=this.saveTensorsForBackwardMode(b)}return w}}else{let{forwardFunc:p}=e,f=m=>{!r||(n=m.map(A=>this.keep(this.clone(A))))};i=()=>{let m=this.backend.numDataIds();o=this.tidy(()=>p(this.backend,f));let A=Array.isArray(o)?o:[o];return this.shouldCheckForMemLeaks()&&this.checkKernelForMemLeak(l,m,A),A}}let{inputs:c,attrs:u}=e,h=gf(e)?null:e.backwardsFunc,d;return this.scopedRun(()=>this.state.kernelDepth++,()=>this.state.kernelDepth--,()=>{!this.ENV.getBool("DEBUG")&&!this.state.profiling?t=i():(d=this.profiler.profileKernel(l,c,()=>i()),this.ENV.getBool("DEBUG")&&this.profiler.logKernelProfile(d),t=d.outputs)}),r&&this.addTapeNode(l,c,t,h,n,u),this.state.profiling&&this.state.activeProfile.kernels.push({name:l,bytesAdded:this.state.numBytes-a,totalBytesSnapshot:this.state.numBytes,tensorsAdded:this.state.numTensors-s,totalTensorsSnapshot:this.state.numTensors,inputShapes:Object.keys(c).map(p=>c[p]!=null?c[p].shape:null),outputShapes:t.map(p=>p.shape),kernelTimeMs:d.timeMs,extraInfo:d.extraInfo}),Array.isArray(o)?t:t[0]}saveTensorsForBackwardMode(e){return e.map(t=>this.keep(this.clone(t)))}getTensorsForGradient(e,t,n){let r=cf(e);if(r!=null){let a=r.inputsToSave||[],s=r.outputsToSave||[],i;r.saveAllInputs?(M(Array.isArray(t),()=>"saveAllInputs is true, expected inputs to be an array."),i=Object.keys(t).map(l=>t[l])):i=a.map(l=>t[l]);let o=n.filter((l,c)=>s[c]);return i.concat(o)}return[]}makeTensor(e,t,n,r){if(e==null)throw new Error("Values passed to engine.makeTensor() are null");n=n||"float32",r=r||this.backend;let a=e;n==="string"&&ba(e[0])&&(a=e.map(o=>Tu(o)));let s=r.write(a,t,n),i=new Ve(t,n,s,this.nextTensorId());if(this.trackTensor(i,r),n==="string"){let o=this.state.tensorInfo.get(s),l=Kg(a);this.state.numBytes+=l-o.bytes,o.bytes=l}return i}makeTensorFromDataId(e,t,n,r){n=n||"float32";let a=new Ve(t,n,e,this.nextTensorId());return this.trackTensor(a,r),a}makeVariable(e,t=!0,n,r){n=n||this.nextVariableId().toString(),r!=null&&r!==e.dtype&&(e=e.cast(r));let a=new Mu(e,t,n,this.nextTensorId());if(this.state.registeredVariables[a.name]!=null)throw new Error(`Variable with name ${a.name} was already registered`);return this.state.registeredVariables[a.name]=a,this.incRef(a,this.backend),a}trackTensor(e,t){this.state.numTensors++,e.dtype==="string"&&this.state.numStringTensors++;let n=0;e.dtype!=="complex64"&&e.dtype!=="string"&&(n=e.size*nf(e.dtype)),this.state.numBytes+=n,this.state.tensorInfo.has(e.dataId)||(this.state.numDataBuffers++,this.state.tensorInfo.set(e.dataId,{backend:t||this.backend,dtype:e.dtype,shape:e.shape,bytes:n})),e instanceof Mu||this.track(e)}incRef(e,t){this.trackTensor(e,t),this.backend.incRef(e.dataId)}removeDataId(e,t){this.state.tensorInfo.has(e)&&this.state.tensorInfo.get(e).backend===t&&(this.state.tensorInfo.delete(e),this.state.numDataBuffers--)}disposeTensor(e){if(!this.state.tensorInfo.has(e.dataId))return;let t=this.state.tensorInfo.get(e.dataId);if(this.state.numTensors--,e.dtype==="string"&&(this.state.numStringTensors--,this.state.numBytes-=t.bytes),e.dtype!=="complex64"&&e.dtype!=="string"){let n=e.size*nf(e.dtype);this.state.numBytes-=n}t.backend.disposeData(e.dataId)&&this.removeDataId(e.dataId,t.backend)}disposeVariables(){for(let e in this.state.registeredVariables){let t=this.state.registeredVariables[e];this.disposeVariable(t)}}disposeVariable(e){this.disposeTensor(e),this.state.registeredVariables[e.name]!=null&&delete this.state.registeredVariables[e.name]}memory(){let e=this.backend.memory();return e.numTensors=this.state.numTensors,e.numDataBuffers=this.state.numDataBuffers,e.numBytes=this.state.numBytes,this.state.numStringTensors>0&&(e.unreliable=!0,e.reasons==null&&(e.reasons=[]),e.reasons.push("Memory usage by string tensors is approximate (2 bytes per character)")),e}async profile(e){this.state.profiling=!0;let t=this.state.numBytes,n=this.state.numTensors;this.state.activeProfile.kernels=[],this.state.activeProfile.result=await e(),this.state.profiling=!1,this.state.activeProfile.peakBytes=Math.max(...this.state.activeProfile.kernels.map(r=>r.totalBytesSnapshot)),this.state.activeProfile.newBytes=this.state.numBytes-t,this.state.activeProfile.newTensors=this.state.numTensors-n;for(let r of this.state.activeProfile.kernels)r.kernelTimeMs=await r.kernelTimeMs,r.extraInfo=await r.extraInfo;return this.state.activeProfile}isTapeOn(){return this.state.gradientDepth>0&&this.state.kernelDepth===0}addTapeNode(e,t,n,r,a,s){let i={id:this.state.nextTapeNodeId++,kernelName:e,inputs:t,outputs:n,saved:a},o=cf(e);o!=null&&(r=o.gradFunc),r!=null&&(i.gradient=l=>(l=l.map((c,u)=>{if(c==null){let h=n[u],d=bh(h.size,h.dtype);return this.makeTensor(d,h.shape,h.dtype)}return c}),r(l.length>1?l:l[0],a,s))),this.state.activeTape.push(i)}keep(e){return e.kept=!0,e}startTape(){this.state.gradientDepth===0&&(this.state.activeTape=[]),this.state.gradientDepth++}endTape(){this.state.gradientDepth--}startScope(e){let t={track:[],name:"unnamed scope",id:this.state.nextScopeId++};e&&(t.name=e),this.state.scopeStack.push(t),this.state.activeScope=t}endScope(e){let t=df(e),n=new Set(t.map(a=>a.id));for(let a=0;a{!a.kept&&a.scopeId===r.id&&this.track(a)})}gradients(e,t,n,r=!1){if(M(t.length>0,()=>"gradients() received an empty list of xs."),n!=null&&n.dtype!=="float32")throw new Error(`dy must have 'float32' dtype, but has '${n.dtype}'`);let a=this.scopedRun(()=>this.startTape(),()=>this.endTape(),()=>this.tidy("forward",e));M(a instanceof Ve,()=>"The result y returned by f() must be a tensor.");let s=Sk(this.state.activeTape,t,a);if(!r&&s.length===0&&t.length>0)throw new Error("Cannot compute gradient of y=f(x) with respect to x. Make sure that the f you passed encloses all operations that lead from x to y.");return this.tidy("backward",()=>{let i={};i[a.id]=n==null?Pk(a.shape):n,Tk(i,s,l=>this.tidy(l),Lk);let o=t.map(l=>i[l.id]);return this.state.gradientDepth===0&&(this.state.activeTape.forEach(l=>{for(let c of l.saved)c.dispose()}),this.state.activeTape=null),{value:a,grads:o}})}customGrad(e){return M(_a(e),()=>"The f passed in customGrad(f) must be a function."),(...t)=>{M(t.every(i=>i instanceof Ve),()=>"The args passed in customGrad(f)(x1, x2,...) must all be tensors");let n,r={};t.forEach((i,o)=>{r[o]=i});let a=(i,o)=>(n=e(...t,o),M(n.value instanceof Ve,()=>"The function f passed in customGrad(f) must return an object where `obj.value` is a tensor"),M(_a(n.gradFunc),()=>"The function f passed in customGrad(f) must return an object where `obj.gradFunc` is a function."),n.value),s=(i,o)=>{let l=n.gradFunc(i,o),c=Array.isArray(l)?l:[l];M(c.length===t.length,()=>"The function f passed in customGrad(f) must return an object where `obj.gradFunc` is a function that returns the same number of tensors as inputs passed to f(...)."),M(c.every(h=>h instanceof Ve),()=>"The function f passed in customGrad(f) must return an object where `obj.gradFunc` is a function that returns a list of only tensors.");let u={};return c.forEach((h,d)=>{u[d]=()=>h}),u};return this.runKernelFunc({forwardFunc:a,backwardsFunc:s,inputs:r})}}readSync(e){return this.state.tensorInfo.get(e).backend.readSync(e)}read(e){return this.state.tensorInfo.get(e).backend.read(e)}async time(e){let t=Su(),n=await this.backend.time(e);return n.wallMs=Su()-t,n}track(e){return this.state.activeScope!=null&&(e.scopeId=this.state.activeScope.id,this.state.activeScope.track.push(e)),e}get registeredVariables(){return this.state.registeredVariables}reset(){this.pendingBackendInitId++,this.state.dispose(),this.ENV.reset(),this.state=new u5;for(let e in this.registry)this.disposeRegisteredKernels(e),this.registry[e].dispose(),delete this.registry[e];this.backendName=null,this.backendInstance=null,this.pendingBackendInit=null}};Fu.nextTensorId=0;Fu.nextVariableId=0;function Pk(e){let t=rf(Ft(e),"float32");return $.makeTensor(t,e,"float32")}function c5(){let e=t5();if(e._tfengine==null){let t=new e5(e);e._tfengine=new Fu(t)}return mk(e._tfengine.ENV),Mk(()=>e._tfengine),e._tfengine}var $=c5();function Lk(e,t){let n={a:e,b:t};return $.runKernel(va,n)}var $u={};Oe($u,{isBrowser:()=>h5,isMobile:()=>Wk});function Bk(){return typeof navigator!="undefined"&&navigator!=null}function Wk(){if(Bk()){let e=navigator.userAgent||navigator.vendor||window.opera;return/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(e)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(e.substr(0,4))}return!1}function h5(){return typeof window!="undefined"&&window.document!=null||typeof WorkerGlobalScope!="undefined"}var mr=J();mr.registerFlag("DEBUG",()=>!1,e=>{e&&console.warn("Debugging mode is ON. The output of every math call will be downloaded to CPU and checked for NaNs. This significantly impacts performance.")});mr.registerFlag("IS_BROWSER",()=>h5());mr.registerFlag("IS_NODE",()=>typeof process!="undefined"&&typeof process.versions!="undefined"&&typeof process.versions.node!="undefined");mr.registerFlag("IS_CHROME",()=>typeof navigator!="undefined"&&navigator!=null&&navigator.userAgent!=null&&/Chrome/.test(navigator.userAgent)&&/Google Inc/.test(navigator.vendor));mr.registerFlag("PROD",()=>!1);mr.registerFlag("TENSORLIKE_CHECK_SHAPE_CONSISTENCY",()=>mr.getBool("DEBUG"));mr.registerFlag("DEPRECATION_WARNINGS_ENABLED",()=>!0);mr.registerFlag("IS_TEST",()=>!1);mr.registerFlag("CHECK_COMPUTATION_FOR_ERRORS",()=>!0);mr.registerFlag("WRAP_TO_IMAGEBITMAP",()=>!1);function Cr(e,t){let n=e;if(rn(e))return t==="string"?[]:[e.length];if(!Array.isArray(e))return[];let r=[];for(;Array.isArray(n)||rn(n)&&t!=="string";)r.push(n.length),n=n[0];return Array.isArray(e)&&J().getBool("TENSORLIKE_CHECK_SHAPE_CONSISTENCY")&&d5(e,r,[]),r}function d5(e,t,n){if(n=n||[],!Array.isArray(e)&&!rn(e)){M(t.length===0,()=>`Element arr[${n.join("][")}] is a primitive, but should be an array/TypedArray of ${t[0]} elements`);return}M(t.length>0,()=>`Element arr[${n.join("][")}] should be a primitive, but is an array of ${e.length} elements`),M(e.length===t[0],()=>`Element arr[${n.join("][")}] should have ${t[0]} elements, but has ${e.length} elements`);let r=t.slice(1);for(let a=0;a=0&&(a=r),p5(r,a,t,n),e==null||!rn(e)&&!Array.isArray(e)&&typeof e!="number"&&typeof e!="boolean"&&typeof e!="string"){let o=e==null?"null":e.constructor.name;throw new Error(`Argument '${t}' passed to '${n}' must be a Tensor or TensorLike, but got '${o}'`)}let s=Cr(e,a);!rn(e)&&!Array.isArray(e)&&(e=[e]);let i=a!=="string"?td(e,a):ss(e,[],!0);return $.makeTensor(i,s,a)}function Du(e,t,n,r="numeric"){if(!Array.isArray(e))throw new Error(`Argument ${t} passed to ${n} must be a \`Tensor[]\` or \`TensorLike[]\``);return e.map((a,s)=>E(a,`${t}[${s}]`,n,r))}var f5="__op";function D(e){let t=Object.keys(e);if(t.length!==1)throw new Error(`Please provide an object with a single key (operation name) mapping to a function. Got an object with ${t.length} keys.`);let n=t[0],r=e[n];n.endsWith("_")&&(n=n.substring(0,n.length-1)),n=n+f5;let a=(...s)=>{$.startScope(n);try{let i=r(...s);return sf(i)&&console.error("Cannot return a Promise inside of tidy."),$.endScope(i),i}catch(i){throw $.endScope(null),i}};return Object.defineProperty(a,"name",{value:n,configurable:!0}),a}function Vk(e,t){let n=E(e,"real","complex"),r=E(t,"imag","complex");nn(n.shape,r.shape,`real and imag shapes, ${n.shape} and ${r.shape}, must match in call to tf.complex().`);let a={real:n,imag:r};return $.runKernel(Sh,a)}var Sa=D({complex_:Vk});function Ta(e,t,n,r){if(r==null&&(r=xh(e)),r==="complex64")throw new Error("Cannot construct a complex64 tensor directly. Please use tf.complex(real, imag).");if(!rn(e)&&!Array.isArray(e)&&typeof e!="number"&&typeof e!="boolean"&&typeof e!="string")throw new Error("values passed to tensor(values) must be a number/boolean/string or an array of numbers/booleans/strings, or a TypedArray");if(t!=null){af(t);let a=Ft(t),s=Ft(n);M(a===s,()=>`Based on the provided shape, [${t}], the tensor should have ${a} values but has ${s}`);for(let i=0;i`Error creating a new Tensor. Inferred shape (${n}) does not match the provided shape (${t}). `)}}return!rn(e)&&!Array.isArray(e)&&(e=[e]),t=t||n,e=r!=="string"?td(e,r):ss(e,[],!0),$.makeTensor(e,t,r)}function Ar(e,t,n){let r=Cr(e,n);return Ta(e,t,r,n)}var xf={float32:4,float16:2,int32:4,uint16:2,uint8:1,bool:1,complex64:8},sd=4;async function jk(e,t){let n=[],r=[],a=Array.isArray(e)?e.map(i=>i.name):Object.keys(e);for(let i=0;i{let d=await l.bytes(),p=d.reduce((A,y)=>A+y.length,0)+sd*d.length,f=new Uint8Array(p),m=0;for(let A=0;A{if(t+=s.byteLength,n.push(s.byteLength===s.buffer.byteLength?s:new s.constructor(s)),!(s instanceof Float32Array||s instanceof Int32Array||s instanceof Uint8Array))throw new Error(`Unsupported TypedArray subtype: ${s.constructor.name}`)});let r=new Uint8Array(t),a=0;return n.forEach(s=>{r.set(new Uint8Array(s.buffer),a),a+=s.byteLength}),r.buffer}var wf=typeof Buffer!="undefined"&&(typeof Blob=="undefined"||typeof atob=="undefined"||typeof btoa=="undefined");function A5(e){return wf?Buffer.byteLength(e):new Blob([e]).size}function Gk(e){if(wf)return Buffer.from(e).toString("base64");let t=new Uint8Array(e),n="";for(let r=0,a=t.length;r{t+=a.byteLength});let n=new Uint8Array(t),r=0;return e.forEach(a=>{n.set(new Uint8Array(a),r),r+=a.byteLength}),n.buffer}function y5(e){let t="/";for(e=e.trim();e.endsWith(t);)e=e.slice(0,e.length-1);let n=e.split(t);return n[n.length-1]}function Ou(e){if(e.modelTopology instanceof ArrayBuffer)throw new Error("Expected JSON model topology, received ArrayBuffer.");return{dateSaved:new Date,modelTopologyType:"JSON",modelTopologyBytes:e.modelTopology==null?0:A5(JSON.stringify(e.modelTopology)),weightSpecsBytes:e.weightSpecs==null?0:A5(JSON.stringify(e.weightSpecs)),weightDataBytes:e.weightData==null?0:e.weightData.byteLength}}function Xk(){let e=n=>{let r=n<<13,a=0;for(;(r&8388608)==0;)a-=8388608,r<<=1;return r&=~8388608,a+=947912704,r|a},t=new Uint32Array(2048);t[0]=0;for(let n=1;n<1024;n++)t[n]=e(n);for(let n=1024;n<2048;n++)t[n]=939524096+(n-1024<<13);return t}function Kk(){let e=new Uint32Array(64);e[0]=0,e[31]=1199570944,e[32]=2147483648,e[63]=3347054592;for(let t=1;t<31;t++)e[t]=t<<23;for(let t=33;t<63;t++)e[t]=2147483648+(t-32<<23);return e}function Zk(){let e=new Uint32Array(64);for(let t=0;t<64;t++)e[t]=1024;return e[0]=e[32]=0,e}function Hk(){let e=Xk(),t=Kk(),n=Zk();return r=>{let a=new ArrayBuffer(4*r.length),s=new Uint32Array(a);for(let i=0;i>10]+(o&1023)]+t[o>>10];s[i]=l}return new Float32Array(a)}}var Nt=class{constructor(){this.saveRouters=[],this.loadRouters=[]}static getInstance(){return Nt.instance==null&&(Nt.instance=new Nt),Nt.instance}static registerSaveRouter(e){Nt.getInstance().saveRouters.push(e)}static registerLoadRouter(e){Nt.getInstance().loadRouters.push(e)}static getSaveHandlers(e){return Nt.getHandlers(e,"save")}static getLoadHandlers(e,t){return Nt.getHandlers(e,"load",t)}static getHandlers(e,t,n){let r=[];return(t==="load"?Nt.getInstance().loadRouters:Nt.getInstance().saveRouters).forEach(a=>{let s=a(e,n);s!==null&&r.push(s)}),r}},Yk=e=>Nt.registerSaveRouter(e),Jk=e=>Nt.registerLoadRouter(e),Qk=e=>Nt.getSaveHandlers(e),e9=(e,t)=>Nt.getLoadHandlers(e,t),_f="tensorflowjs",vf=1,ni="models_store",Ca="model_info_store";function g5(){if(!J().getBool("IS_BROWSER"))throw new Error("Failed to obtain IndexedDB factory because the current environmentis not a web browser.");let e=typeof window=="undefined"?self:window,t=e.indexedDB||e.mozIndexedDB||e.webkitIndexedDB||e.msIndexedDB||e.shimIndexedDB;if(t==null)throw new Error("The current browser does not appear to support IndexedDB.");return t}function kf(e){let t=e.result;t.createObjectStore(ni,{keyPath:"modelPath"}),t.createObjectStore(Ca,{keyPath:"modelPath"})}var ri=class{constructor(e){if(this.indexedDB=g5(),e==null||!e)throw new Error("For IndexedDB, modelPath must not be null, undefined or empty.");this.modelPath=e}async save(e){if(e.modelTopology instanceof ArrayBuffer)throw new Error("BrowserLocalStorage.save() does not support saving model topology in binary formats yet.");return this.databaseAction(this.modelPath,e)}async load(){return this.databaseAction(this.modelPath)}databaseAction(e,t){return new Promise((n,r)=>{let a=this.indexedDB.open(_f,vf);a.onupgradeneeded=()=>kf(a),a.onsuccess=()=>{let s=a.result;if(t==null){let i=s.transaction(ni,"readonly"),o=i.objectStore(ni).get(this.modelPath);o.onsuccess=()=>{if(o.result==null)return s.close(),r(new Error(`Cannot find model with path '${this.modelPath}' in IndexedDB.`));n(o.result.modelArtifacts)},o.onerror=l=>(s.close(),r(o.error)),i.oncomplete=()=>s.close()}else{let i=Ou(t),o=s.transaction(Ca,"readwrite"),l=o.objectStore(Ca),c=l.put({modelPath:this.modelPath,modelArtifactsInfo:i}),u;c.onsuccess=()=>{u=s.transaction(ni,"readwrite");let h=u.objectStore(ni).put({modelPath:this.modelPath,modelArtifacts:t,modelArtifactsInfo:i});h.onsuccess=()=>n({modelArtifactsInfo:i}),h.onerror=d=>{l=o.objectStore(Ca);let p=l.delete(this.modelPath);p.onsuccess=()=>(s.close(),r(h.error)),p.onerror=f=>(s.close(),r(h.error))}},c.onerror=h=>(s.close(),r(c.error)),o.oncomplete=()=>{u==null?s.close():u.oncomplete=()=>s.close()}}},a.onerror=s=>r(a.error)})}};ri.URL_SCHEME="indexeddb://";var x5=e=>J().getBool("IS_BROWSER")&&!Array.isArray(e)&&e.startsWith(ri.URL_SCHEME)?t9(e.slice(ri.URL_SCHEME.length)):null;Nt.registerSaveRouter(x5);Nt.registerLoadRouter(x5);function t9(e){return new ri(e)}function n9(e){return e.startsWith(ri.URL_SCHEME)?e.slice(ri.URL_SCHEME.length):e}var r9=class{constructor(){this.indexedDB=g5()}async listModels(){return new Promise((e,t)=>{let n=this.indexedDB.open(_f,vf);n.onupgradeneeded=()=>kf(n),n.onsuccess=()=>{let r=n.result,a=r.transaction(Ca,"readonly"),s=a.objectStore(Ca).getAll();s.onsuccess=()=>{let i={};for(let o of s.result)i[o.modelPath]=o.modelArtifactsInfo;e(i)},s.onerror=i=>(r.close(),t(s.error)),a.oncomplete=()=>r.close()},n.onerror=r=>t(n.error)})}async removeModel(e){return e=n9(e),new Promise((t,n)=>{let r=this.indexedDB.open(_f,vf);r.onupgradeneeded=()=>kf(r),r.onsuccess=()=>{let a=r.result,s=a.transaction(Ca,"readwrite"),i=s.objectStore(Ca),o=i.get(e),l;o.onsuccess=()=>{if(o.result==null)return a.close(),n(new Error(`Cannot find model with path '${e}' in IndexedDB.`));{let c=i.delete(e),u=()=>{l=a.transaction(ni,"readwrite");let h=l.objectStore(ni).delete(e);h.onsuccess=()=>t(o.result.modelArtifactsInfo),h.onerror=d=>n(o.error)};c.onsuccess=u,c.onerror=h=>(u(),a.close(),n(o.error))}},o.onerror=c=>(a.close(),n(o.error)),s.oncomplete=()=>{l==null?a.close():l.oncomplete=()=>a.close()}},r.onerror=a=>n(r.error)})}},ea="/",Qo="tensorflowjs_models",w5="info",a9="model_topology",s9="weight_specs",i9="weight_data",o9="model_metadata";function b5(e){return{info:[Qo,e,w5].join(ea),topology:[Qo,e,a9].join(ea),weightSpecs:[Qo,e,s9].join(ea),weightData:[Qo,e,i9].join(ea),modelMetadata:[Qo,e,o9].join(ea)}}function l9(e){let t=e.split(ea);if(t.length<3)throw new Error(`Invalid key format: ${e}`);return t.slice(1,t.length-1).join(ea)}function u9(e){return e.startsWith(ai.URL_SCHEME)?e.slice(ai.URL_SCHEME.length):e}var ai=class{constructor(e){if(!J().getBool("IS_BROWSER")||typeof window=="undefined"||typeof window.localStorage=="undefined")throw new Error("The current environment does not support local storage.");if(this.LS=window.localStorage,e==null||!e)throw new Error("For local storage, modelPath must not be null, undefined or empty.");this.modelPath=e,this.keys=b5(this.modelPath)}async save(e){if(e.modelTopology instanceof ArrayBuffer)throw new Error("BrowserLocalStorage.save() does not support saving model topology in binary formats yet.");{let t=JSON.stringify(e.modelTopology),n=JSON.stringify(e.weightSpecs),r=Ou(e);try{this.LS.setItem(this.keys.info,JSON.stringify(r)),this.LS.setItem(this.keys.topology,t),this.LS.setItem(this.keys.weightSpecs,n),this.LS.setItem(this.keys.weightData,Gk(e.weightData));let a={format:e.format,generatedBy:e.generatedBy,convertedBy:e.convertedBy};return e.signature!=null&&(a.signature=e.signature),e.userDefinedMetadata!=null&&(a.userDefinedMetadata=e.userDefinedMetadata),e.modelInitializer!=null&&(a.modelInitializer=e.modelInitializer),this.LS.setItem(this.keys.modelMetadata,JSON.stringify(a)),{modelArtifactsInfo:r}}catch(a){throw this.LS.removeItem(this.keys.info),this.LS.removeItem(this.keys.topology),this.LS.removeItem(this.keys.weightSpecs),this.LS.removeItem(this.keys.weightData),this.LS.removeItem(this.keys.modelMetadata),new Error(`Failed to save model '${this.modelPath}' to local storage: size quota being exceeded is a possible cause of this failure: modelTopologyBytes=${r.modelTopologyBytes}, weightSpecsBytes=${r.weightSpecsBytes}, weightDataBytes=${r.weightDataBytes}.`)}}}async load(){let e=JSON.parse(this.LS.getItem(this.keys.info));if(e==null)throw new Error(`In local storage, there is no model with name '${this.modelPath}'`);if(e.modelTopologyType!=="JSON")throw new Error("BrowserLocalStorage does not support loading non-JSON model topology yet.");let t={},n=JSON.parse(this.LS.getItem(this.keys.topology));if(n==null)throw new Error(`In local storage, the topology of model '${this.modelPath}' is missing.`);t.modelTopology=n;let r=JSON.parse(this.LS.getItem(this.keys.weightSpecs));if(r==null)throw new Error(`In local storage, the weight specs of model '${this.modelPath}' are missing.`);t.weightSpecs=r;let a=this.LS.getItem(this.keys.modelMetadata);if(a!=null){let i=JSON.parse(a);t.format=i.format,t.generatedBy=i.generatedBy,t.convertedBy=i.convertedBy,i.signature!=null&&(t.signature=i.signature),i.userDefinedMetadata!=null&&(t.userDefinedMetadata=i.userDefinedMetadata),i.modelInitializer!=null&&(t.modelInitializer=i.modelInitializer)}let s=this.LS.getItem(this.keys.weightData);if(s==null)throw new Error(`In local storage, the binary weight values of model '${this.modelPath}' are missing.`);return t.weightData=qk(s),t}};ai.URL_SCHEME="localstorage://";var _5=e=>J().getBool("IS_BROWSER")&&!Array.isArray(e)&&e.startsWith(ai.URL_SCHEME)?c9(e.slice(ai.URL_SCHEME.length)):null;Nt.registerSaveRouter(_5);Nt.registerLoadRouter(_5);function c9(e){return new ai(e)}var h9=class{constructor(){M(J().getBool("IS_BROWSER"),()=>"Current environment is not a web browser"),M(typeof window=="undefined"||typeof window.localStorage!="undefined",()=>"Current browser does not appear to support localStorage"),this.LS=window.localStorage}async listModels(){let e={},t=Qo+ea,n=ea+w5;for(let r=0;r"scheme must not be undefined or null."),e.endsWith(el)&&(e=e.slice(0,e.indexOf(el))),M(e.length>0,()=>"scheme must not be an empty string.");let n=Hn.getInstance();M(n.managers[e]==null,()=>`A model store manager is already registered for scheme '${e}'.`),n.managers[e]=t}static getManager(e){let t=this.getInstance().managers[e];if(t==null)throw new Error(`Cannot find model manager for scheme '${e}'`);return t}static getSchemes(){return Object.keys(this.getInstance().managers)}};function id(e){if(e.indexOf(el)===-1)throw new Error(`The url string provided does not contain a scheme. Supported schemes are: ${Hn.getSchemes().join(",")}`);return{scheme:e.split(el)[0],path:e.split(el)[1]}}async function v5(e,t,n=!1){M(e!==t,()=>`Old path and new path are the same: '${e}'`);let r=Nt.getLoadHandlers(e);M(r.length>0,()=>`Copying failed because no load handler is found for source URL ${e}.`),M(r.length<2,()=>`Copying failed because more than one (${r.length}) load handlers for source URL ${e}.`);let a=r[0],s=Nt.getSaveHandlers(t);M(s.length>0,()=>`Copying failed because no save handler is found for destination URL ${t}.`),M(s.length<2,()=>`Copying failed because more than one (${r.length}) save handlers for destination URL ${t}.`);let i=s[0],o=id(e).scheme,l=id(e).path,c=o===id(e).scheme,u=await a.load();n&&c&&await Hn.getManager(o).removeModel(l);let h=await i.save(u);return n&&!c&&await Hn.getManager(o).removeModel(l),h.modelArtifactsInfo}async function d9(){let e=Hn.getSchemes(),t={};for(let n of e){let r=await Hn.getManager(n).listModels();for(let a in r){let s=n+el+a;t[s]=r[a]}}return t}async function p9(e){let t=id(e);return Hn.getManager(t.scheme).removeModel(t.path)}async function f9(e,t){return v5(e,t,!1)}async function m9(e,t){return v5(e,t,!0)}var A9=class{fetch(e,t){return fetch(e,t)}now(){return performance.now()}encode(e,t){if(t!=="utf-8"&&t!=="utf8")throw new Error(`Browser's encoder only supports utf-8, but got ${t}`);return this.textEncoder==null&&(this.textEncoder=new TextEncoder),this.textEncoder.encode(e)}decode(e,t){return new TextDecoder(t).decode(e)}};if(J().get("IS_BROWSER")){J().setPlatform("browser",new A9);try{Hn.registerManager(ai.URL_SCHEME,new h9)}catch(e){}try{Hn.registerManager(ri.URL_SCHEME,new r9)}catch(e){}}var y9={importFetch:()=>k8()},If,g9=class{constructor(){this.util=require("util"),this.textEncoder=new this.util.TextEncoder}fetch(e,t){return J().global.fetch!=null?J().global.fetch(e,t):(If==null&&(If=y9.importFetch()),If(e,t))}now(){let e=process.hrtime();return e[0]*1e3+e[1]/1e6}encode(e,t){if(t!=="utf-8"&&t!=="utf8")throw new Error(`Node built-in encoder only supports utf-8, but got ${t}`);return this.textEncoder.encode(e)}decode(e,t){return e.length===0?"":new this.util.TextDecoder(t).decode(e)}};J().get("IS_NODE")&&J().setPlatform("node",new g9);function Le(e,t="float32",n){return t=t||"float32",af(e),new $t(e,t,n)}function x9(e,t){let n=E(e,"x","cast");if(!Xg(t))throw new Error(`Failed to cast to unknown dtype ${t}`);if(t==="string"&&n.dtype!=="string"||t!=="string"&&n.dtype==="string")throw new Error("Only strings can be casted to strings");let r={x:n},a={dtype:t};return $.runKernel(cs,r,a)}var me=D({cast_:x9});function w9(e){let t={x:E(e,"x","clone","string_or_numeric")};return $.runKernel(vs,t)}var Er=D({clone_:w9});function k5(e,t=!1){console.log(e.toString(t))}c5();var b9={buffer:Le,cast:me,clone:Er,print:k5};Fk(b9);var gn={};Oe(gn,{browserFiles:()=>_9,browserHTTPRequest:()=>k9,concatenateArrayBuffers:()=>bf,copyModel:()=>f9,decodeWeights:()=>m5,encodeWeights:()=>jk,fromMemory:()=>I9,getLoadHandlers:()=>e9,getModelArtifactsInfoForJSON:()=>Ou,getSaveHandlers:()=>Qk,http:()=>Sf,isHTTPScheme:()=>Nf,listModels:()=>d9,loadWeights:()=>v9,moveModel:()=>m9,registerLoadRouter:()=>Jk,registerSaveRouter:()=>Yk,removeModel:()=>p9,weightsLoaderFactory:()=>I5,withSaveHandler:()=>N9});var S9="model",T9=".json",C9=".weights.bin";function N5(e){return new Promise(t=>setTimeout(t)).then(e)}var tl=class{constructor(e){if(!J().getBool("IS_BROWSER"))throw new Error("browserDownloads() cannot proceed because the current environment is not a browser.");e.startsWith(tl.URL_SCHEME)&&(e=e.slice(tl.URL_SCHEME.length)),(e==null||e.length===0)&&(e=S9),this.modelTopologyFileName=e+T9,this.weightDataFileName=e+C9}async save(e){if(typeof document=="undefined")throw new Error("Browser downloads are not supported in this environment since `document` is not present");let t=window.URL.createObjectURL(new Blob([e.weightData],{type:"application/octet-stream"}));if(e.modelTopology instanceof ArrayBuffer)throw new Error("BrowserDownloads.save() does not support saving model topology in binary formats yet.");{let n=[{paths:["./"+this.weightDataFileName],weights:e.weightSpecs}],r={modelTopology:e.modelTopology,format:e.format,generatedBy:e.generatedBy,convertedBy:e.convertedBy,weightsManifest:n};e.signature!=null&&(r.signature=e.signature),e.userDefinedMetadata!=null&&(r.userDefinedMetadata=e.userDefinedMetadata),e.modelInitializer!=null&&(r.modelInitializer=e.modelInitializer);let a=window.URL.createObjectURL(new Blob([JSON.stringify(r)],{type:"application/json"})),s=this.jsonAnchor==null?document.createElement("a"):this.jsonAnchor;if(s.download=this.modelTopologyFileName,s.href=a,await N5(()=>s.dispatchEvent(new MouseEvent("click"))),e.weightData!=null){let i=this.weightDataAnchor==null?document.createElement("a"):this.weightDataAnchor;i.download=this.weightDataFileName,i.href=t,await N5(()=>i.dispatchEvent(new MouseEvent("click")))}return{modelArtifactsInfo:Ou(e)}}}};tl.URL_SCHEME="downloads://";var E9=class{constructor(e){if(e==null||e.length<1)throw new Error(`When calling browserFiles, at least 1 file is required, but received ${e}`);this.files=e}async load(){let e=this.files[0],t=this.files.slice(1);return new Promise((n,r)=>{let a=new FileReader;a.onload=s=>{let i=JSON.parse(s.target.result),o=i.modelTopology;if(o==null){r(new Error(`modelTopology field is missing from file ${e.name}`));return}t.length===0&&n({modelTopology:o});let l=i.weightsManifest;if(l==null){r(new Error(`weightManifest field is missing from file ${e.name}`));return}let c;try{c=this.checkManifestAndWeightFiles(l,t)}catch(p){r(p);return}let u=[],h=[],d=[];l.forEach(p=>{p.paths.forEach(f=>{h.push(f),d.push(null)}),u.push(...p.weights)}),l.forEach(p=>{p.paths.forEach(f=>{let m=new FileReader;m.onload=A=>{let y=A.target.result,g=h.indexOf(f);if(d[g]=y,d.indexOf(null)===-1){let w={modelTopology:o,weightSpecs:u,weightData:bf(d),format:i.format,generatedBy:i.generatedBy,convertedBy:i.convertedBy};i.signature!=null&&(w.signature=i.signature),i.userDefinedMetadata!=null&&(w.userDefinedMetadata=i.userDefinedMetadata),i.modelInitializer!=null&&(w.modelInitializer=i.modelInitializer),n(w)}},m.onerror=A=>r(`Failed to weights data from file of path '${f}'.`),m.readAsArrayBuffer(c[f])})})},a.onerror=s=>r(`Failed to read model topology and weights manifest JSON from file '${e.name}'. BrowserFiles supports loading Keras-style tf.Model artifacts only.`),a.readAsText(e)})}checkManifestAndWeightFiles(e,t){let n=[],r=t.map(s=>y5(s.name)),a={};for(let s of e)s.paths.forEach(i=>{let o=y5(i);if(n.indexOf(o)!==-1)throw new Error(`Duplicate file basename found in weights manifest: '${o}'`);if(n.push(o),r.indexOf(o)===-1)throw new Error(`Weight file with basename '${o}' is not provided.`);a[i]=t[r.indexOf(o)]});if(n.length!==t.length)throw new Error(`Mismatch in the number of files in weights manifest (${n.length}) and the number of weight files provided (${t.length}).`);return a}},M9=e=>J().getBool("IS_BROWSER")&&!Array.isArray(e)&&e.startsWith(tl.URL_SCHEME)?R9(e.slice(tl.URL_SCHEME.length)):null;Nt.registerSaveRouter(M9);function R9(e="model"){return new tl(e)}function _9(e){return new E9(e)}function S5(e,t,n,r){i(e),n=n==null?0:n,r=r==null?1:r,o(n,r);let a=0,s=l=>(l.then(c=>{let u=n+ ++a/e.length*(r-n);return t(u),c}),l);function i(l){M(l!=null&&Array.isArray(l)&&l.length>0,()=>"promises must be a none empty array")}function o(l,c){M(l>=0&&l<=1,()=>`Progress fraction must be in range [0, 1], but got startFraction ${l}`),M(c>=0&&c<=1,()=>`Progress fraction must be in range [0, 1], but got endFraction ${c}`),M(c>=l,()=>`startFraction must be no more than endFraction, but got startFraction ${l} and endFraction ${c}`)}return Promise.all(e.map(s))}async function T5(e,t){t==null&&(t={});let n=t.fetchFunc==null?J().platform.fetch:t.fetchFunc,r=e.map(c=>n(c,t.requestInit,{isBinary:!0})),a=0,s=.5,i=(t.onProgress==null?await Promise.all(r):await S5(r,t.onProgress,a,s)).map(c=>c.arrayBuffer()),o=.5,l=1;return t.onProgress==null?await Promise.all(i):await S5(i,t.onProgress,o,l)}async function v9(e,t="",n,r){return I5(a=>T5(a,{requestInit:r}))(e,t,n)}function I5(e){return async(t,n="",r)=>{let a=t.map(()=>!1),s={},i=r!=null?r.map(()=>!1):[],o=[];if(t.forEach((p,f)=>{let m=0;p.weights.forEach(A=>{let y="quantization"in A?A.quantization.dtype:A.dtype,g=xf[y]*Ft(A.shape),w=()=>{a[f]=!0,s[f]==null&&(s[f]=[]),s[f].push({manifestEntry:A,groupOffset:m,sizeBytes:g})};r!=null?r.forEach((b,_)=>{b===A.name&&(w(),i[_]=!0)}):w(),o.push(A.name),m+=g})}),!i.every(p=>p)){let p=r.filter((f,m)=>!i[m]);throw new Error(`Could not find weights in manifest with names: ${p.join(", ")}. -Manifest JSON has weights with names: ${o.join(", ")}.`)}let l=a.reduce((p,f,m)=>(f&&p.push(m),p),[]),c=[];l.forEach(p=>{t[p].paths.forEach(f=>{let m=n+(n.endsWith("/")?"":"/")+f;c.push(m)})});let u=await e(c),h={},d=0;return l.forEach(p=>{let f=t[p].paths.length,m=0;for(let w=0;w{let b=A.slice(w.groupOffset,w.groupOffset+w.sizeBytes),_=m5(b,[w.manifestEntry]);for(let x in _)h[x]=_[x]}),d+=f}),h}}var F9="application/octet-stream",$9="application/json",Tf=class{constructor(e,t){if(this.DEFAULT_METHOD="POST",t==null&&(t={}),this.weightPathPrefix=t.weightPathPrefix,this.onProgress=t.onProgress,this.weightUrlConverter=t.weightUrlConverter,t.fetchFunc!=null?(M(typeof t.fetchFunc=="function",()=>"Must pass a function that matches the signature of `fetch` (see https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API)"),this.fetch=t.fetchFunc):this.fetch=J().platform.fetch,M(e!=null&&e.length>0,()=>"URL path for http must not be null, undefined or empty."),Array.isArray(e)&&M(e.length===2,()=>`URL paths for http must have a length of 2, (actual length is ${e.length}).`),this.path=e,t.requestInit!=null&&t.requestInit.body!=null)throw new Error("requestInit is expected to have no pre-existing body, but has one.");this.requestInit=t.requestInit||{}}async save(e){if(e.modelTopology instanceof ArrayBuffer)throw new Error("BrowserHTTPRequest.save() does not support saving model topology in binary formats yet.");let t=Object.assign({method:this.DEFAULT_METHOD},this.requestInit);t.body=new FormData;let n=[{paths:["./model.weights.bin"],weights:e.weightSpecs}],r={modelTopology:e.modelTopology,format:e.format,generatedBy:e.generatedBy,convertedBy:e.convertedBy,weightsManifest:n};e.signature!=null&&(r.signature=e.signature),e.userDefinedMetadata!=null&&(r.userDefinedMetadata=e.userDefinedMetadata),e.modelInitializer!=null&&(r.modelInitializer=e.modelInitializer),t.body.append("model.json",new Blob([JSON.stringify(r)],{type:$9}),"model.json"),e.weightData!=null&&t.body.append("model.weights.bin",new Blob([e.weightData],{type:F9}),"model.weights.bin");let a=await this.fetch(this.path,t);if(a.ok)return{modelArtifactsInfo:Ou(e),responses:[a]};throw new Error(`BrowserHTTPRequest.save() failed due to HTTP response status ${a.status}.`)}async load(){let e=await this.fetch(this.path,this.requestInit);if(!e.ok)throw new Error(`Request to ${this.path} failed with status code ${e.status}. Please verify this URL points to the model JSON of the model to load.`);let t;try{t=await e.json()}catch(p){let f=`Failed to parse model JSON of response from ${this.path}.`;throw this.path.endsWith(".pb")?f+=" Your path contains a .pb file extension. Support for .pb models have been removed in TensorFlow.js 1.0 in favor of .json models. You can re-convert your Python TensorFlow model using the TensorFlow.js 1.0 conversion scripts or you can convert your.pb models with the 'pb2json'NPM script in the tensorflow/tfjs-converter repository.":f+=" Please make sure the server is serving valid JSON for this request.",new Error(f)}let n=t.modelTopology,r=t.weightsManifest,a=t.generatedBy,s=t.convertedBy,i=t.format,o=t.signature,l=t.userDefinedMetadata;if(n==null&&r==null)throw new Error(`The JSON from HTTP path ${this.path} contains neither model topology or manifest for weights.`);let c,u;r!=null&&([c,u]=await this.loadWeights(r));let h={modelTopology:n,weightSpecs:c,weightData:u,generatedBy:a,convertedBy:s,format:i};o!=null&&(h.signature=o),l!=null&&(h.userDefinedMetadata=l);let d=t.modelInitializer;return d&&(h.modelInitializer=d),h}async loadWeights(e){let t=Array.isArray(this.path)?this.path[1]:this.path,[n,r]=D9(t),a=this.weightPathPrefix||n,s=[];for(let c of e)s.push(...c.weights);let i=[],o=[];for(let c of e)for(let u of c.paths)this.weightUrlConverter!=null?o.push(this.weightUrlConverter(u)):i.push(a+u+r);this.weightUrlConverter&&i.push(...await Promise.all(o));let l=await T5(i,{requestInit:this.requestInit,fetchFunc:this.fetch,onProgress:this.onProgress});return[s,bf(l)]}};Tf.URL_SCHEME_REGEX=/^https?:\/\//;function D9(e){let t=e.lastIndexOf("/"),n=e.lastIndexOf("?"),r=e.substring(0,t),a=n>t?e.substring(n):"";return[r+"/",a]}function Nf(e){return e.match(Tf.URL_SCHEME_REGEX)!=null}var C5=(e,t)=>{if(typeof fetch=="undefined"&&(t==null||t.fetchFunc==null))return null;{let n=!0;if(Array.isArray(e)?n=e.every(r=>Nf(r)):n=Nf(e),n)return Sf(e,t)}return null};Nt.registerSaveRouter(C5);Nt.registerLoadRouter(C5);function Sf(e,t){return new Tf(e,t)}function k9(e,t){return Sf(e,t)}var Cf=class{constructor(e){this.modelArtifacts=e}async load(){return this.modelArtifacts}},O9=class{constructor(e){this.saveHandler=e}async save(e){return this.saveHandler(e)}};function I9(e,t,n,r){return arguments.length===1?e.modelTopology!=null||e.weightSpecs!=null?new Cf(e):(console.warn("Please call tf.io.fromMemory() with only one argument. The argument should be of type ModelArtifacts. The multi-argument signature of tf.io.fromMemory() has been deprecated and will be removed in a future release."),new Cf({modelTopology:e})):(console.warn("Please call tf.io.fromMemory() with only one argument. The argument should be of type ModelArtifacts. The multi-argument signature of tf.io.fromMemory() has been deprecated and will be removed in a future release."),new Cf({modelTopology:e,weightSpecs:t,weightData:n,trainingConfig:r}))}function N9(e){return new O9(e)}var E5={};Oe(E5,{confusionMatrix:()=>z9});function P9(e,t,n=!1,r=!1){let a=E(e,"a","matMul"),s=E(t,"b","matMul");[a,s]=bt(a,s);let i={a,b:s},o={transposeA:n,transposeB:r};return $.runKernel(us,i,o)}var Ge=D({matMul_:P9});function L9(e,t,n=1,r=0){if(t<2)throw new Error(`Error in oneHot: depth must be >=2, but it is ${t}`);let a={indices:E(e,"indices","oneHot","int32")},s={depth:t,onValue:n,offValue:r};return $.runKernel(Fs,a,s)}var nl=D({oneHot_:L9});function W9(e,t){let n=E(e,"x","transpose");if(t==null&&(t=n.shape.map((s,i)=>i).reverse()),M(n.rank===t.length,()=>`Error in transpose: rank of input ${n.rank} must match length of perm ${t}.`),t.forEach(s=>{M(s>=0&&s`All entries in 'perm' must be between 0 and ${n.rank-1} but got ${t}`)}),n.rank<=1)return n.clone();let r={x:n},a={perm:t};return $.runKernel(Ys,r,a)}var nt=D({transpose_:W9});function B9(e,t,n){let r=E(e,"labels","confusionMatrix"),a=E(t,"predictions","confusionMatrix");M(n==null||n>0&&Number.isInteger(n),()=>`If provided, numClasses must be a positive integer, but got ${n}`),M(r.rank===1,()=>`Expected the rank of labels to be 1, but got ${r.rank}`),M(a.rank===1,()=>`Expected the rank of predictions to be 1, but got ${a.rank}`),M(r.shape[0]===a.shape[0],()=>`Mismatch in the number of examples: ${r.shape[0]} vs. ${a.shape[0]}. Labels and predictions should have the same number of elements.`),M(n>0&&Number.isInteger(n),()=>`numClasses is required to be a positive integer, but got ${n}`);let s=nl(me(r,"int32"),n),i=nl(me(a,"int32"),n),o=nt(s),l=Ge(o,i);return me(l,"int32")}var z9=D({confusionMatrix_:B9}),rl={};Oe(rl,{fromPixels:()=>j9,fromPixelsAsync:()=>V9,toPixels:()=>U9});function od(e,t,n){if(as(e),t!=null&&t.length!==3)throw new Error("tensor3d() requires shape to have three numbers");let r=Cr(e,n);if(r.length!==3&&r.length!==1)throw new Error("tensor3d() requires values to be number[][][] or flat/TypedArray");if(r.length===1&&t==null)throw new Error("tensor3d() requires shape to be provided when `values` are a flat array");return Ta(e,t,r,n)}var al;function R5(e,t=3){if(t>4)throw new Error("Cannot construct Tensor with more than 4 channels from pixels.");if(e==null)throw new Error("pixels passed to tf.browser.fromPixels() can not be null");let n=!1,r=!1,a=!1,s=!1,i=!1,o=!1;if(e.data instanceof Uint8Array)n=!0;else if(typeof ImageData!="undefined"&&e instanceof ImageData)r=!0;else if(typeof HTMLVideoElement!="undefined"&&e instanceof HTMLVideoElement)a=!0;else if(typeof HTMLImageElement!="undefined"&&e instanceof HTMLImageElement)s=!0;else if(e.getContext!=null)i=!0;else if(typeof ImageBitmap!="undefined"&&e instanceof ImageBitmap)o=!0;else throw new Error(`pixels passed to tf.browser.fromPixels() must be either an HTMLVideoElement, HTMLImageElement, HTMLCanvasElement, ImageData in browser, or OffscreenCanvas, ImageData in webworker or {data: Uint32Array, width: number, height: number}, but was ${e.constructor.name}`);if(a){let d=2;if(a&&e.readyState element.")}if(ed(Qh,$.backendName)!=null){let d={pixels:e},p={numChannels:t};return $.runKernel(Qh,d,p)}let[l,c]=a?[e.videoWidth,e.videoHeight]:[e.width,e.height],u;i?u=e.getContext("2d").getImageData(0,0,l,c).data:r||n?u=e.data:(s||a||o)&&(al==null&&(al=document.createElement("canvas").getContext("2d")),al.canvas.width=l,al.canvas.height=c,al.drawImage(e,0,0,l,c),u=al.getImageData(0,0,l,c).data);let h;if(t===4)h=new Int32Array(u);else{let d=l*c;h=new Int32Array(d*t);for(let p=0;p4||s===2)throw new Error(`toPixels only supports depth of size 1, 3 or 4 but got ${s}`);if(n.dtype!=="float32"&&n.dtype!=="int32")throw new Error(`Unsupported type for toPixels: ${n.dtype}. Please use float32 or int32 tensors.`);let i=await n.data(),o=n.dtype==="float32"?255:1,l=new Uint8ClampedArray(a*r*4);for(let c=0;c1)throw new Error(`Tensor values for a float32 Tensor must be in the range [0 - 1] but encountered ${p}.`)}else if(n.dtype==="int32"&&(p<0||p>255))throw new Error(`Tensor values for a int32 Tensor must be in the range [0 - 255] but encountered ${p}.`);s===1?(u[0]=p*o,u[1]=p*o,u[2]=p*o):u[d]=p*o}let h=c*4;l[h+0]=Math.round(u[0]),l[h+1]=Math.round(u[1]),l[h+2]=Math.round(u[2]),l[h+3]=Math.round(u[3])}if(t!=null){t.width=a,t.height=r;let c=t.getContext("2d"),u=new ImageData(l,a,r);c.putImageData(u,0,0)}return n!==e&&n.dispose(),l}var j9=D({fromPixels_:R5}),Ef={};Oe(Ef,{prepareAndValidate:()=>M5});function M5(e,t){let n=e.shape.length,r=t.shape.length;if(n<1)throw new Error(`tf.gatherND() expects the input to be rank 1 or higher, but the rank was ${n}.`);if(r<1)throw new Error(`tf.gatherND() expects the indices to be rank 1 or higher, but the rank was ${r}.`);if(t.dtype!=="int32")throw new Error(`tf.gatherND() expects the indices to be int32 type, but the dtype was ${t.dtype}.`);if(t.shape[r-1]>n)throw new Error(`index innermost dimension length must be <= tensor rank; saw: ${t.shape[r-1]} vs. ${n}`);if(Ft(e.shape)===0)throw new Error(`Requested more than 0 entries, but input is empty. Input shape: ${e.shape}.`);let a=t.shape,s=a[a.length-1],i=1;for(let h=0;hh/c),1].slice(0,s);return[l,i,c,u]}var Rf={};Oe(Rf,{calculateShapes:()=>F5,validateInput:()=>Ff,validateUpdateShape:()=>Mf});function Mf(e,t,n){let r=t.rank>1?t.shape[t.rank-1]:1,a=t.rank>1?t.rank-1:1,s=`Must have updates.shape = indices.shape[:batchDim] + shape[sliceDim:], got updates.shape: ${n.shape}, indices.shape: ${t.shape}, shape: ${e}, sliceDim: ${r}, and batchDim: ${a}.`;if(n.rank1?t.shape[r-1]:1,s=n.length,i=1;for(let h=a;hK9,computeFlatOffset:()=>Y9,computeOutShape:()=>$5,getNormalizedAxes:()=>O5,isSliceContinous:()=>Z9,maskToAxes:()=>ld,parseSliceParams:()=>V5,sliceInfo:()=>J9,startForAxis:()=>W5,startIndicesWithElidedDims:()=>z5,stopForAxis:()=>B5,stopIndicesWithElidedDims:()=>P5,stridesForAxis:()=>L5,stridesWithElidedDims:()=>D5});function K9(e,t,n){let r=e.shape.length;M(r===t.length,()=>`Error in slice${r}D: Length of begin ${t} must match the rank of the array (${r}).`),M(r===n.length,()=>`Error in slice${r}D: Length of size ${n} must match the rank of the array (${r}).`);for(let a=0;a`Error in slice${r}D: begin[${a}] + size[${a}] (${t[a]+n[a]}) would overflow input.shape[${a}] (${e.shape[a]})`)}function ld(e){let t=[],n=0;for(;e>0;)e&1&&t.push(n),e/=2,n++;return t}function $5(e,t,n){let r=[];for(let a=0;a0){let p=t[0],f=n+1;u=z5(i,p,f,r,e),h=P5(o,p,f,a,e),d=D5(s,p,f,e)}else for(let p=0;p-1)s[o]=0;else{let l=U5(t,n,o),c=r[l];e&1<-1)s[o]=Number.MAX_SAFE_INTEGER;else{let l=U5(t,n,o),c=r[l];e&1<0?i=Number.MIN_SAFE_INTEGER:i=Number.MAX_SAFE_INTEGER);let l=r[a];return i<0&&(i+=l),i=ou(0,i,l-1),i}function B5(e,t,n,r,a,s){let i=t[a],o=n[a]||1;(e&1<0?i=Number.MAX_SAFE_INTEGER:i=Number.MIN_SAFE_INTEGER);let l=r[a];return i<0&&(i+=l),o>0?i=ou(0,i,l):i=ou(-1,i,l-1),i}function Z9(e,t,n){let r=n.length;for(let a=0;a1){r=a;break}for(let a=r+1;a0||n[a]!==e[a])return!1;return!0}function Y9(e,t){let n=e.length>0?e[e.length-1]:1;for(let r=0;r{M(i!==-1,()=>"slice() does not support negative begin indexing.")});let s;return n==null?s=new Array(a).fill(-1):typeof n=="number"?s=[n,...new Array(a-1).fill(-1)]:n.lengthi>=0?i:(M(i===-1,()=>`Negative size values should be exactly -1 but got ${i} for the slice() size at index ${o}.`),e.shape[o]-r[o])),[r,s]}function J9(e,t,n,r,a,s,i,o,l){let c=t.slice(),u=n.slice(),h=r;r==null&&(h=new Array(c.length));let d=ld(i);if(d.length>1)throw new Error("Multiple ellipses in slice is not allowed.");if(i!==0&&o!==0)throw new Error("Using both ellipsisMask and newAxisMask is not yet supported.");if(i!==0&&l!==0)throw new Error("Using both ellipsisMask and shrinkAxisMask is not yet supported.");let p=e.length-c.length,f=ld(o),m=e.slice();f.forEach(x=>{c[x]=0,u[x]=1,m.splice(x,0,1)});let{begin:A,end:y,strides:g}=O5(m,d,p,c,u,h,a,s,i);c=A,u=y,h=g;let w=ld(l);w.forEach(x=>{u[x]=c[x]+1,h[x]=1});let b=$5(c,u,h),_=b.filter((x,N)=>w.indexOf(N)===-1);return{nonStrided:h.every(x=>x===1),$begin:c,$end:u,$strides:h,size:b,newShape:m,outShape:_}}var re={};Oe(re,{Serializable:()=>H5,SerializationMap:()=>si,registerClass:()=>Ea});var H5=class{getClassName(){return this.constructor.className}static fromConfig(e,t){return new e(t)}},si=class{constructor(){this.classNameMap={}}static getMap(){return si.instance==null&&(si.instance=new si),si.instance}static register(e){si.getMap().classNameMap[e.className]=[e,e.fromConfig]}};function Ea(e){M(e.className!=null,()=>"Class being registered does not have the static className property defined."),M(typeof e.className=="string",()=>"className is required to be a string, but got type "+typeof e.className),M(e.className.length>0,()=>"Class being registered has an empty-string as its className, which is disallowed."),si.register(e)}var G5={};Oe(G5,{TEST_EPSILON_FLOAT16:()=>q5,encodeStrings:()=>X5,expectArrayBuffersEqual:()=>aI,expectArraysClose:()=>Q9,expectArraysEqual:()=>tI,expectNumbersClose:()=>nI,expectPromiseToFail:()=>eI,expectValuesInRange:()=>rI,testEpsilon:()=>$f});var sI=.001,q5=.1;function Q9(e,t,n){return n==null&&(n=$f()),Df(e,t,(r,a)=>Of(r,a,n))}function $f(){return $.backend.floatPrecision()===32?sI:q5}function Df(e,t,n){let r=!0;if((rn(e)||rn(t))&&(r=!1),rn(e)&&rn(t)&&(r=!0),r){let i=e.constructor.name,o=t.constructor.name;if(i!==o)throw new Error(`Arrays are of different type. Actual: ${i}. Expected: ${o}`)}if(Array.isArray(e)&&Array.isArray(t)){let i=Cr(e),o=Cr(t);if(!Qr(i,o))throw new Error(`Arrays have different shapes. Actual: [${i}]. Expected: [${o}]`)}let a=rn(e)?e:ss(e),s=rn(t)?t:ss(t);if(a.length!==s.length)throw new Error(`Arrays have different lengths actual: ${a.length} vs expected: ${s.length}. -Actual: ${a}. -Expected: ${s}.`);for(let i=0;it.fail(),()=>t())}function tI(e,t){let n=typeof t=="string"||typeof t=="number"||typeof t=="boolean"?[t]:t;return ba(e)||ba(e[0])||ba(t)||ba(t[0])?Df(e,n,(r,a)=>r==a):Df(e,t,(r,a)=>Of(r,a,0))}function nI(e,t,n){if(n==null&&(n=$f()),!Of(e,t,n))throw new Error(`Numbers differ: actual === ${e}, expected === ${t}`)}function Of(e,t,n){return!isFinite(e)&&!isFinite(t)?!0:!(isNaN(e)||isNaN(t)||Math.abs(e-t)>n)}function rI(e,t,n){for(let r=0;rn)throw new Error(`Value out of range:${e[r]} low: ${t}, high: ${n}`)}function aI(e,t){expect(new Float32Array(e)).toEqual(new Float32Array(t))}function X5(e){for(let t=0;tt.dispose())}function Ut(e){return $.keep(e)}function hI(e){return $.time(e)}function dI(e){return $.setBackend(e)}function pI(){return $.ready()}function fI(){return $.backendName}function mI(e){$.removeBackend(e)}function Pf(e){return $.findBackend(e)}function AI(e){return $.findBackendFactory(e)}function sl(e,t,n=1){return $.registerBackend(e,t,n)}function K5(){return $.backend}function yI(e,t){J().setPlatform(e,t)}function gI(e,t){let n=E(e,"a","add"),r=E(t,"b","add");[n,r]=bt(n,r);let a={a:n,b:r};return $.runKernel(va,a)}var se=D({add_:gI});function xI(e,t){let n=E(e,"a","floorDiv"),r=E(t,"b","floorDiv");[n,r]=bt(n,r);let a={a:n,b:r};return $.runKernel(ws,a)}var cd=D({floorDiv_:xI});function wI(e,t){let n=E(e,"a","div"),r=E(t,"b","div");if([n,r]=bt(n,r),n.dtype==="int32"&&r.dtype==="int32")return cd(n,r);let a={a:n,b:r},s={};return $.runKernel(ys,a,s)}var ge=D({div_:wI});function bI(e,t){let n=E(e,"a","mul"),r=E(t,"b","mul");[n,r]=bt(n,r);let a={a:n,b:r};return $.runKernel(Ms,a)}var P=D({mul_:bI});function _I(e){let t=E(e,"x","abs");if(t.dtype==="complex64"){let n={x:t};return $.runKernel(du,n)}else{let n={x:t};return $.runKernel(Zi,n)}}var Dt=D({abs_:_I});function vI(e){let t={x:E(e,"x","acos")};return $.runKernel(Yi,t)}var Lf=D({acos_:vI});function kI(e){let t={x:E(e,"x","acosh")};return $.runKernel(Ji,t)}var Wf=D({acosh_:kI});function II(e){M(Array.isArray(e),()=>"The argument passed to tf.addN() must be a list of tensors"),M(e.length>=1,()=>`Must pass at least one tensor to tf.addN(), but got ${e.length}`);let t=e.map((a,s)=>E(a,`tensors${s}`,"addN")),n=t[0];t.forEach(a=>{if(a.dtype!==n.dtype)throw new Error("All tensors passed to tf.addN() must have the same dtype")}),t.forEach(a=>{if(!Qr(a.shape,n.shape))throw new Error("All tensors passed to tf.addN() must have the same shape")});let r=t;return $.runKernel(is,r)}var Ra=D({addN_:II});function NI(e,t=null,n=!1){let r={x:E(e,"x","all","bool")},a={axis:t,keepDims:n};return $.runKernel(_h,r,a)}var hd=D({all_:NI});function SI(e,t=null,n=!1){let r={x:E(e,"x","any","bool")},a={axis:t,keepDims:n};return $.runKernel(vh,r,a)}var zu=D({any_:SI});function TI(e,t=0){let n={x:E(e,"x","argMax")},r={axis:t};return $.runKernel(os,n,r)}var Pu=D({argMax_:TI});function CI(e,t=0){let n={x:E(e,"x","argMin")},r={axis:t};return $.runKernel(uu,n,r)}var Bf=D({argMin_:CI});function EI(e){let t={x:E(e,"x","asin")};return $.runKernel(Qi,t)}var Vf=D({asin_:EI});function RI(e){let t={x:E(e,"x","asinh")};return $.runKernel(eo,t)}var Uf=D({asinh_:RI});function MI(e){let t={x:E(e,"x","atan")};return $.runKernel(to,t)}var jf=D({atan_:MI});function FI(e,t){let n=E(e,"a","atan2"),r=E(t,"b","atan2");[n,r]=bt(n,r);let a={a:n,b:r};return $.runKernel(ro,a)}var Hf=D({atan2_:FI});function $I(e){let t={x:E(e,"x","atanh")};return $.runKernel(no,t)}var Gf=D({atanh_:$I});function DI(e,t,n,r,a="NHWC",s){let i=e[3],o=[...t,i],l=Z5(a);return Lu(e,o,n,s,r,null,null,l)}function Y5(e,t,n,r,a,s,i="channelsLast"){let[o,l]=dd(t),c;if(i==="channelsLast")c=[o,l,e[3],e[3]];else if(i==="channelsFirst")c=[o,l,e[1],e[1]];else throw new Error(`Unknown dataFormat ${i}`);return Lu(e,c,n,r,a,s,!1,i)}function OI(e,t,n,r,a,s,i="NDHWC"){let[o,l,c]=qf(t),u,h;if(i==="NDHWC")h="channelsLast",u=[o,l,c,e[4],e[4]];else if(i==="NCDHW")h="channelsFirst",u=[o,l,c,e[1],e[1]];else throw new Error(`Unknown dataFormat ${i}`);return J5(e,u,n,r,a,!1,h,s)}function Lu(e,t,n,r,a,s,i=!1,o="channelsLast"){let[l,c,u,h]=[-1,-1,-1,-1];if(o==="channelsLast")[l,c,u,h]=e;else if(o==="channelsFirst")[l,h,c,u]=e;else throw new Error(`Unknown dataFormat ${o}`);let[d,p,,f]=t,[m,A]=dd(n),[y,g]=dd(r),w=il(d,y),b=il(p,g),{padInfo:_,outHeight:x,outWidth:N}=zI(a,c,u,m,A,w,b,s,o),T=i?f*h:f,C;return o==="channelsFirst"?C=[l,T,x,N]:o==="channelsLast"&&(C=[l,x,N,T]),{batchSize:l,dataFormat:o,inHeight:c,inWidth:u,inChannels:h,outHeight:x,outWidth:N,outChannels:T,padInfo:_,strideHeight:m,strideWidth:A,filterHeight:d,filterWidth:p,effectiveFilterHeight:w,effectiveFilterWidth:b,dilationHeight:y,dilationWidth:g,inShape:e,outShape:C,filterShape:t}}function J5(e,t,n,r,a,s=!1,i="channelsLast",o){let[l,c,u,h,d]=[-1,-1,-1,-1,-1];if(i==="channelsLast")[l,c,u,h,d]=e;else if(i==="channelsFirst")[l,d,c,u,h]=e;else throw new Error(`Unknown dataFormat ${i}`);let[p,f,m,,A]=t,[y,g,w]=qf(n),[b,_,x]=qf(r),N=il(p,b),T=il(f,_),C=il(m,x),{padInfo:F,outDepth:O,outHeight:W,outWidth:V}=PI(a,c,u,h,y,g,w,N,T,C,o),U=s?A*d:A,j;return i==="channelsFirst"?j=[l,U,O,W,V]:i==="channelsLast"&&(j=[l,O,W,V,U]),{batchSize:l,dataFormat:i,inDepth:c,inHeight:u,inWidth:h,inChannels:d,outDepth:O,outHeight:W,outWidth:V,outChannels:U,padInfo:F,strideDepth:y,strideHeight:g,strideWidth:w,filterDepth:p,filterHeight:f,filterWidth:m,effectiveFilterDepth:N,effectiveFilterHeight:T,effectiveFilterWidth:C,dilationDepth:b,dilationHeight:_,dilationWidth:x,inShape:e,outShape:j,filterShape:t}}function LI(e,t,n,r,a){r==null&&(r=Xf(e,t,n));let s=e[0],i=e[1],o=ii((s-t+2*r)/n+1,a),l=ii((i-t+2*r)/n+1,a);return[o,l]}function WI(e,t,n,r,a,s){a==null&&(a=Xf(e,t,r));let i=e[0],o=e[1],l=e[2],c=ii((i-t+2*a)/r+1,s),u=ii((o-t+2*a)/r+1,s),h=ii((l-t+2*a)/r+1,s);return[c,u,h,n]}function Xf(e,t,n,r=1){let a=il(t,r);return Math.floor((e[0]*(n-1)-n+a)/2)}function dd(e){return typeof e=="number"?[e,e,e]:e.length===2?[e[0],e[1],1]:e}function qf(e){return typeof e=="number"?[e,e,e]:e}function il(e,t){return t<=1?e:e+(e-1)*(t-1)}function zI(e,t,n,r,a,s,i,o,l){let c,u,h;if(typeof e=="number"){c={top:e,bottom:e,left:e,right:e,type:e===0?"VALID":"NUMBER"};let d=LI([t,n],s,r,e,o);u=d[0],h=d[1]}else if(e==="same"){u=Math.ceil(t/r),h=Math.ceil(n/a);let d=Math.max(0,(u-1)*r+s-t),p=Math.max(0,(h-1)*a+i-n),f=Math.floor(d/2),m=d-f,A=Math.floor(p/2),y=p-A;c={top:f,bottom:m,left:A,right:y,type:"SAME"}}else if(e==="valid")c={top:0,bottom:0,left:0,right:0,type:"VALID"},u=Math.ceil((t-s+1)/r),h=Math.ceil((n-i+1)/a);else if(typeof e=="object"){let d=l==="channelsLast"?e[1][0]:e[2][0],p=l==="channelsLast"?e[1][1]:e[2][1],f=l==="channelsLast"?e[2][0]:e[3][0],m=l==="channelsLast"?e[2][1]:e[3][1];c={top:d,bottom:p,left:f,right:m,type:d===0&&p===0&&f===0&&m===0?"VALID":"EXPLICIT"},u=ii((t-s+d+p)/r+1,o),h=ii((n-i+f+m)/a+1,o)}else throw Error(`Unknown padding parameter: ${e}`);return{padInfo:c,outHeight:u,outWidth:h}}function PI(e,t,n,r,a,s,i,o,l,c,u){let h,d,p,f;if(typeof e=="number"){h={top:e,bottom:e,left:e,right:e,front:e,back:e,type:e===0?"VALID":"NUMBER"};let m=WI([t,n,r,1],o,1,a,e,u);d=m[0],p=m[1],f=m[2]}else if(e==="same"){d=Math.ceil(t/a),p=Math.ceil(n/s),f=Math.ceil(r/i);let m=(d-1)*a+o-t,A=(p-1)*s+l-n,y=(f-1)*i+c-r,g=Math.floor(m/2),w=m-g,b=Math.floor(A/2),_=A-b,x=Math.floor(y/2),N=y-x;h={top:b,bottom:_,left:x,right:N,front:g,back:w,type:"SAME"}}else if(e==="valid")h={top:0,bottom:0,left:0,right:0,front:0,back:0,type:"VALID"},d=Math.ceil((t-o+1)/a),p=Math.ceil((n-l+1)/s),f=Math.ceil((r-c+1)/i);else throw Error(`Unknown padding parameter: ${e}`);return{padInfo:h,outDepth:d,outHeight:p,outWidth:f}}function ii(e,t){if(!t)return Math.trunc(e);switch(t){case"round":return Math.round(e);case"ceil":return Math.ceil(e);case"floor":return Math.floor(e);default:throw new Error(`Unknown roundingMode ${t}`)}}function Ma(e){let[t,n,r]=dd(e);return t===1&&n===1&&r===1}function Mr(e,t){return Ma(e)||Ma(t)}function Z5(e){if(e==="NHWC")return"channelsLast";if(e==="NCHW")return"channelsFirst";throw new Error(`Unknown dataFormat ${e}`)}function BI(e,t){let n={x:E(e,"x","reshape","string_or_numeric")},r={shape:t};return $.runKernel(Do,n,r)}var H=D({reshape_:BI});function VI(e,t,n,r,a){let s=E(e,"x","avgPool","float32"),i=1;M(Mr(n,i),()=>`Error in avgPool: Either strides or dilations must be 1. Got strides ${n} and dilations '${i}'`);let o=s,l=!1;s.rank===3&&(l=!0,o=H(s,[1,s.shape[0],s.shape[1],s.shape[2]])),M(o.rank===4,()=>`Error in avgPool: x must be rank 4 but got rank ${o.rank}.`),a!=null&&M(Vt(r),()=>`Error in avgPool: pad must be an integer when using, dimRoundingMode ${a} but got pad ${r}.`);let c={x:o},u={filterSize:t,strides:n,pad:r,dimRoundingMode:a},h=$.runKernel(ls,c,u);return h=me(h,s.dtype),l?H(h,[h.shape[1],h.shape[2],h.shape[3]]):h}var Wu=D({avgPool_:VI});function UI(e,t,n,r,a,s="NDHWC"){let i=E(e,"x","avgPool3d","float32"),o=i,l=!1;i.rank===4&&(l=!0,o=H(i,[1,i.shape[0],i.shape[1],i.shape[2],i.shape[3]])),M(o.rank===5,()=>`Error in avgPool3d: x must be rank 5 but got rank ${o.rank}.`),M(s==="NDHWC",()=>`Error in avgPool3d: Only NDHWC is currently supported, but got dataFormat of ${s}`),a!=null&&M(Vt(r),()=>`Error in avgPool3d: pad must be an integer when using, dimRoundingMode ${a} but got pad ${r}.`);let c={x:o},u={filterSize:t,strides:n,pad:r,dimRoundingMode:a,dataFormat:s},h=$.runKernel(cu,c,u);return h=me(h,o.dtype),l?H(h,[h.shape[1],h.shape[2],h.shape[3],h.shape[4]]):h}var Kf=D({avgPool3d_:UI});function jI(e,t=0){M(e.length>=1,()=>"Pass at least one tensor to concat");let n=Du(e,"tensors","concat","string_or_numeric");if(n[0].dtype==="complex64"&&n.forEach(s=>{if(s.dtype!=="complex64")throw new Error(`Cannot concatenate complex64 tensors with a tensor - with dtype ${s.dtype}. `)}),n.length===1)return Er(n[0]);let r=n,a={axis:t};return $.runKernel(ao,r,a)}var rt=D({concat_:jI});function HI(e){let t={x:E(e,"x","sigmoid")};return $.runKernel(js,t)}var Cn=D({sigmoid_:HI});function GI(e,t,n){let r=E(e,"x","slice","string_or_numeric");if(r.rank===0)throw new Error("Slicing scalar is not possible");let a={x:r},s={begin:t,size:n};return $.runKernel(Lo,a,s)}var Ee=D({slice_:GI});function qI(e){let t={x:E(e,"x","tanh")};return $.runKernel(Zs,t)}var ol=D({tanh_:qI});function XI(e,t,n,r,a,s){let i=E(e,"forgetBias","basicLSTMCell"),o=E(t,"lstmKernel","basicLSTMCell"),l=E(n,"lstmBias","basicLSTMCell"),c=E(r,"data","basicLSTMCell"),u=E(a,"c","basicLSTMCell"),h=E(s,"h","basicLSTMCell"),d=rt([c,h],1),p=Ge(d,o),f=se(p,l),m=f.shape[0],A=f.shape[1]/4,y=[m,A],g=Ee(f,[0,0],y),w=Ee(f,[0,A],y),b=Ee(f,[0,A*2],y),_=Ee(f,[0,A*3],y),x=se(P(Cn(g),ol(w)),P(u,Cn(se(i,b)))),N=P(ol(x),Cn(_));return[x,N]}var KI=D({basicLSTMCell_:XI});function ZI(e,t,n){let r=E(e,"x","batchToSpaceND"),a=t.reduce((o,l)=>o*l);M(r.rank>=1+t.length,()=>`input rank is ${r.rank} but should be > than blockShape.length ${t.length}`),M(n.length===t.length,()=>`crops.length is ${n.length} but should be equal to blockShape.length ${t.length}`),M(r.shape[0]%a==0,()=>`input tensor batch is ${r.shape[0]} but is not divisible by the product of the elements of blockShape ${t.join(" * ")} === ${a}`);let s={x:r},i={blockShape:t,crops:n};return $.runKernel(hu,s,i)}var Bu=D({batchToSpaceND_:ZI});function YI(e){let t;return e.rank===0||e.rank===1?t=H(e,[1,1,1,e.size]):e.rank===2?t=H(e,[1,1,e.shape[0],e.shape[1]]):e.rank===3?t=H(e,[1,e.shape[0],e.shape[1],e.shape[2]]):t=e,t}function JI(e,t,n,r,a,s){s==null&&(s=.001);let i=E(e,"x","batchNorm"),o=E(t,"mean","batchNorm"),l=E(n,"variance","batchNorm"),c;a!=null&&(c=E(a,"scale","batchNorm"));let u;r!=null&&(u=E(r,"offset","batchNorm")),M(o.rank===l.rank,()=>"Batch normalization gradient requires mean and variance to have equal ranks."),M(u==null||o.rank===u.rank,()=>"Batch normalization gradient requires mean and offset to have equal ranks."),M(c==null||o.rank===c.rank,()=>"Batch normalization gradient requires mean and scale to have equal ranks.");let h={x:YI(i),scale:c,offset:u,mean:o,variance:l},d={varianceEpsilon:s},p=$.runKernel(bs,h,d);return H(p,i.shape)}var oi=D({batchNorm_:JI});function QI(e,t,n,r,a,s){let i=E(e,"x","batchNorm"),o=E(t,"mean","batchNorm"),l=E(n,"variance","batchNorm"),c;a!=null&&(c=E(a,"scale","batchNorm"));let u;return r!=null&&(u=E(r,"offset","batchNorm")),M(i.rank===2,()=>`Error in batchNorm2D: x must be rank 2 but got rank ${i.rank}.`),M(o.rank===2||o.rank===1,()=>`Error in batchNorm2D: mean must be rank 2 or rank 1 but got rank ${o.rank}.`),M(l.rank===2||l.rank===1,()=>`Error in batchNorm2D: variance must be rank 2 or rank 1 but got rank ${l.rank}.`),c!=null&&M(c.rank===2||c.rank===1,()=>`Error in batchNorm2D: scale must be rank 2 or rank 1 but got rank ${c.rank}.`),u!=null&&M(u.rank===2||u.rank===1,()=>`Error in batchNorm2D: offset must be rank 2 or rank 1 but got rank ${u.rank}.`),oi(i,o,l,u,c,s)}var Q5=D({batchNorm2d_:QI});function eN(e,t,n,r,a,s){let i=E(e,"x","batchNorm"),o=E(t,"mean","batchNorm"),l=E(n,"variance","batchNorm"),c;a!=null&&(c=E(a,"scale","batchNorm"));let u;return r!=null&&(u=E(r,"offset","batchNorm")),M(i.rank===3,()=>`Error in batchNorm3D: x must be rank 3 but got rank ${i.rank}.`),M(o.rank===3||o.rank===1,()=>`Error in batchNorm3D: mean must be rank 3 or rank 1 but got rank ${o.rank}.`),M(l.rank===3||l.rank===1,()=>`Error in batchNorm3D: variance must be rank 3 or rank 1 but got rank ${l.rank}.`),c!=null&&M(c.rank===3||c.rank===1,()=>`Error in batchNorm3D: scale must be rank 3 or rank 1 but got rank ${c.rank}.`),u!=null&&M(u.rank===3||u.rank===1,()=>`Error in batchNorm3D: offset must be rank 3 or rank 1 but got rank ${u.rank}.`),oi(i,o,l,u,c,s)}var ex=D({batchNorm3d_:eN});function tN(e,t,n,r,a,s){let i=E(e,"x","batchNorm"),o=E(t,"mean","batchNorm"),l=E(n,"variance","batchNorm"),c;a!=null&&(c=E(a,"scale","batchNorm"));let u;return r!=null&&(u=E(r,"offset","batchNorm")),M(i.rank===4,()=>`Error in batchNorm4D: x must be rank 4 but got rank ${i.rank}.`),M(o.rank===4||o.rank===1,()=>`Error in batchNorm4D: mean must be rank 4 or rank 1 but got rank ${o.rank}.`),M(l.rank===4||l.rank===1,()=>`Error in batchNorm4D: variance must be rank 4 or rank 1 but got rank ${l.rank}.`),c!=null&&M(c.rank===4||c.rank===1,()=>`Error in batchNorm4D: scale must be rank 4 or rank 1 but got rank ${c.rank}.`),u!=null&&M(u.rank===4||u.rank===1,()=>`Error in batchNorm4D: offset must be rank 4 or rank 1 but got rank ${u.rank}.`),oi(i,o,l,u,c,s)}var tx=D({batchNorm4d_:tN});function nN(e,t,n){let r=E(e,"x","bincount"),a=E(t,"weights","bincount");M(r.dtype==="int32",()=>`Error in bincount: input dtype must be int32, but got ${r.dtype}`),M(n>=0,()=>`size must be non-negative, but got ${n}.`),M(a.size===r.size||a.size===0,()=>`Error in bincount: weights must have the same size as input or0-length, but got input shape: ${r.shape}, weights shape: ${a.shape}.`);let s={x:r,weights:a},i={size:n};return $.runKernel(Nh,s,i)}var nx=D({bincount_:nN});function rN(e,t){let n=E(e,"broadcastTo","x"),r=n.shape;if(t.some(l=>!(l>0)||l%1!=0))throw new Error(`broadcastTo(): Invalid broadcast shape [${t}].`);if(t.lengthn.rank){let l=n.shape.slice();for(;l.length=0;l--)if(a[l]===t[l])s[l]=1;else if(n.shape[l]!==1)throw new Error(`broadcastTo(): [${r}] cannot be broadcast to [${t}].`);if(s.map((l,c)=>l>1?c:-1).filter(l=>l>=0).length===0)return Er(n);let i={x:n},o={reps:s};return $.runKernel(Ia,i,o)}var Vu=D({broadcastTo_:rN});function aN(e){let t={x:E(e,"x","ceil")};return $.runKernel(hs,t)}var Zf=D({ceil_:aN});function sN(e,t,n){let r=E(e,"x","clipByValue");M(t<=n,()=>`Error in clip: min (${t}) must be less than or equal to max (${n}).`);let a={x:r},s={clipValueMin:t,clipValueMax:n};return $.runKernel(ka,a,s)}var wn=D({clipByValue_:sN});function iN(e){return rt(e,0)}var rx=D({concat1d_:iN});function oN(e,t){return rt(e,t)}var ll=D({concat2d_:oN});function lN(e,t){return rt(e,t)}var ax=D({concat3d_:lN});function uN(e,t){return rt(e,t)}var sx=D({concat4d_:uN});function cN(e,t,n,r,a="NHWC",s=[1,1],i){let o=E(e,"x","conv2d"),l=E(t,"filter","conv2d"),c=o,u=!1;o.rank===3&&(u=!0,c=H(o,[1,o.shape[0],o.shape[1],o.shape[2]])),M(c.rank===4,()=>`Error in conv2d: input must be rank 4, but got rank ${c.rank}.`),M(l.rank===4,()=>`Error in conv2d: filter must be rank 4, but got rank ${l.rank}.`),i!=null&&M(Vt(r),()=>`Error in conv2d: pad must be an integer when using, dimRoundingMode ${i} but got pad ${r}.`);let h=a==="NHWC"?c.shape[3]:c.shape[1];M(h===l.shape[2],()=>`Error in conv2d: depth of input (${h}) must match input depth for filter ${l.shape[2]}.`),M(Mr(n,s),()=>`Error in conv2D: Either strides or dilations must be 1. Got strides ${n} and dilations '${s}'`);let d={x:c,filter:l},p={strides:n,pad:r,dataFormat:a,dilations:s,dimRoundingMode:i},f=$.runKernel(ds,d,p);return u?H(f,[f.shape[1],f.shape[2],f.shape[3]]):f}var ta=D({conv2d_:cN});function hN(e,t,n,r,a="NWC",s=1,i){let o=E(e,"x","conv1d"),l=E(t,"filter","conv1d"),c=o,u=!1;o.rank===2&&(u=!0,c=H(o,[1,o.shape[0],o.shape[1]])),M(c.rank===3,()=>`Error in conv1d: input must be rank 3, but got rank ${c.rank}.`),M(l.rank===3,()=>`Error in conv1d: filter must be rank 3, but got rank ${l.rank}.`),i!=null&&M(Vt(r),()=>`Error in conv1d: pad must be an integer when using, dimRoundingMode ${i} but got pad ${r}.`),M(c.shape[2]===l.shape[1],()=>`Error in conv1d: depth of input (${c.shape[2]}) must match input depth for filter ${l.shape[1]}.`),M(Mr(n,s),()=>`Error in conv1D: Either stride or dilation must be 1. Got stride ${n} and dilation '${s}'`),M(a==="NWC",()=>`Error in conv1d: got dataFormat of ${a} but only NWC is currently supported.`);let h=H(l,[1,l.shape[0],l.shape[1],l.shape[2]]),d=H(c,[c.shape[0],1,c.shape[1],c.shape[2]]),p=ta(d,h,[1,n],r,"NHWC",[1,s],i);return u?H(p,[p.shape[2],p.shape[3]]):H(p,[p.shape[0],p.shape[2],p.shape[3]])}var pd=D({conv1d_:hN});function dN(e,t,n,r,a,s="NHWC",i){M(e.length===t.rank,()=>`Length of inShape (${e.length}) and rank of dy (${t.rank}) must match`);let o=e,l=t,c=!1;t.rank===3&&(c=!0,l=H(t,[1,t.shape[0],t.shape[1],t.shape[2]]),o=[1,e[0],e[1],e[2]]),M(o.length===4,()=>`Error in conv2dDerInput: inShape must be length 4, but got length ${o.length}.`),M(l.rank===4,()=>`Error in conv2dDerInput: dy must be rank 4, but got rank ${l.rank}`),M(n.rank===4,()=>`Error in conv2dDerInput: filter must be rank 4, but got rank ${n.rank}`);let u=s==="NHWC"?o[3]:o[1],h=s==="NHWC"?l.shape[3]:l.shape[1];M(u===n.shape[2],()=>`Error in conv2dDerInput: depth of input (${u}) must match input depth for filter ${n.shape[2]}.`),M(h===n.shape[3],()=>`Error in conv2dDerInput: depth of output (${h}) must match output depth for filter ${n.shape[3]}.`),i!=null&&M(Vt(a),()=>`Error in conv2dDerInput: pad must be an integer when using, dimRoundingMode ${i} but got pad ${a}.`);let d={dy:l,filter:n},p={strides:r,pad:a,dataFormat:s,dimRoundingMode:i,inputShape:o},f=$.runKernel(ps,d,p);return c?H(f,[f.shape[1],f.shape[2],f.shape[3]]):f}var Yf=D({conv2DBackpropInput_:dN});function pN(e,t,n,r,a,s){let i=E(e,"x","conv2dTranspose"),o=E(t,"filter","conv2dTranspose");return Yf(n,i,o,r,a,"NHWC",s)}var fd=D({conv2dTranspose_:pN});function fN(e,t,n,r,a="NDHWC",s=[1,1,1]){let i=E(e,"x","conv3d"),o=E(t,"filter","conv3d"),l=i,c=!1;i.rank===4&&(c=!0,l=H(i,[1,i.shape[0],i.shape[1],i.shape[2],i.shape[3]])),M(l.rank===5,()=>`Error in conv3d: input must be rank 5, but got rank ${l.rank}.`),M(o.rank===5,()=>`Error in conv3d: filter must be rank 5, but got rank ${o.rank}.`),M(l.shape[4]===o.shape[3],()=>`Error in conv3d: depth of input (${l.shape[4]}) must match input depth for filter ${o.shape[3]}.`),M(Mr(n,s),()=>`Error in conv3D: Either strides or dilations must be 1. Got strides ${n} and dilations '${s}'`),M(a==="NDHWC",()=>`Error in conv3d: got dataFormat of ${a} but only NDHWC is currently supported.`);let u={x:l,filter:o},h={strides:n,pad:r,dataFormat:a,dilations:s},d=$.runKernel(pu,u,h);return c?H(d,[d.shape[1],d.shape[2],d.shape[3],d.shape[4]]):d}var Jf=D({conv3d_:fN});function mN(e,t,n,r,a){M(e.length===t.rank,()=>`Length of inShape (${e.length}) and rank of dy (${t.rank}) must match`);let s=e,i=t,o=!1;t.rank===4&&(o=!0,i=H(t,[1,t.shape[0],t.shape[1],t.shape[2],t.shape[3]]),s=[1,e[0],e[1],e[2],e[3]]);let l=s[4],c=i.shape[4];M(s.length===5,()=>`Error in conv3dDerInput: inShape must be length 5, but got length ${s.length}.`),M(i.rank===5,()=>`Error in conv3dDerInput: dy must be rank 5, but got rank ${i.rank}`),M(n.rank===5,()=>`Error in conv3dDerInput: filter must be rank 5, but got rank ${n.rank}`),M(l===n.shape[3],()=>`Error in conv3dDerInput: depth of input (${l}) must match input depth for filter ${n.shape[3]}.`),M(c===n.shape[4],()=>`Error in conv3dDerInput: depth of output (${c}) must match output depth for filter ${n.shape[4]}.`);let u={dy:i,filter:n},h={pad:a,strides:r,inputShape:s},d=$.runKernel(Eh,u,h);return o?H(d,[d.shape[1],d.shape[2],d.shape[3],d.shape[4]]):d}var ix=D({conv3DBackpropInput_:mN});function AN(e,t,n,r,a){let s=E(e,"x","conv3dTranspose"),i=E(t,"filter","conv3dTranspose");return ix(n,s,i,r,a)}var yN=D({conv3dTranspose_:AN});function gN(e){let t={x:E(e,"x","cos")};return $.runKernel(fs,t)}var Uu=D({cos_:gN});function xN(e){let t={x:E(e,"x","cosh")};return $.runKernel(so,t)}var md=D({cosh_:xN});function wN(e,t=0,n=!1,r=!1){let a={x:E(e,"x","cumsum")},s={axis:t,exclusive:n,reverse:r};return $.runKernel(ms,a,s)}var Ad=D({cumsum_:wN});function bN(e,t,n,r=!1){let a=E(e,"x","denseBincount"),s=E(t,"weights","denseBincount");M(a.dtype==="int32",()=>`Error in denseBincount: input dtype must be int32, but got ${a.dtype}`),M(a.rank<=2,()=>`Error in denseBincount: input must be at most rank 2, but got rank ${a.rank}.`),M(n>=0,()=>`size must be non-negative, but got ${n}.`),M(s.size===a.size||s.size===0,()=>`Error in denseBincount: weights must have the same shape as x or 0-length, but got x shape: ${a.shape}, weights shape: ${s.shape}.`);let i={x:a,weights:s},o={size:n,binaryOutput:r};return $.runKernel(Rh,i,o)}var ox=D({denseBincount_:bN});function _N(e,t,n="NHWC"){let r=E(e,"x","depthToSpace"),a=n==="NHWC"?r.shape[1]:r.shape[2],s=n==="NHWC"?r.shape[2]:r.shape[3],i=n==="NHWC"?r.shape[3]:r.shape[1];M(a*t>=0,()=>`Negative dimension size caused by overflow when multiplying - ${a} and ${t} for depthToSpace with input shape - ${r.shape}`),M(s*t>=0,()=>`Negative dimension size caused by overflow when multiplying - ${s} and ${t} for depthToSpace with input shape - ${r.shape}`),M(i%(t*t)==0,()=>`Dimension size must be evenly divisible by ${t*t} but is ${i} for depthToSpace with input shape ${r.shape}`);let o={x:r},l={blockSize:t,dataFormat:n};return $.runKernel(oo,o,l)}var Qf=D({depthToSpace_:_N});function vN(e,t,n,r,a="NHWC",s=[1,1],i){let o=E(e,"x","depthwiseConv2d"),l=E(t,"filter","depthwiseConv2d"),c=o,u=!1;o.rank===3&&(u=!0,c=H(o,[1,o.shape[0],o.shape[1],o.shape[2]])),M(c.rank===4,()=>`Error in depthwiseConv2d: input must be rank 4, but got rank ${c.rank}.`),M(l.rank===4,()=>`Error in depthwiseConv2d: filter must be rank 4, but got rank ${l.rank}.`),M(c.shape[3]===l.shape[2],()=>`Error in depthwiseConv2d: number of input channels (${c.shape[3]}) must match the inChannels dimension in filter ${l.shape[2]}.`),i!=null&&M(Vt(r),()=>`Error in depthwiseConv2d: pad must be an integer when using, dimRoundingMode ${i} but got pad ${r}.`);let h={x:c,filter:l},d={strides:n,pad:r,dataFormat:a,dilations:s,dimRoundingMode:i},p=$.runKernel(As,h,d);return u?H(p,[p.shape[1],p.shape[2],p.shape[3]]):p}var ul=D({depthwiseConv2d_:vN});function kN(e){let t={x:E(e,"x","diag")};return $.runKernel($h,t)}var IN=D({diag_:kN});function NN(e,t,n,r,a=[1,1],s="NHWC"){let i=E(e,"x","dilation2d"),o=E(t,"filter","dilation2d");M(i.rank===3||i.rank===4,()=>`Error in dilation2d: input must be rank 3 or 4, but got rank ${i.rank}.`),M(o.rank===3,()=>`Error in dilation2d: filter must be rank 3, but got rank ${o.rank}.`),M(s==="NHWC",()=>`Error in dilation2d: Only NHWC is currently supported, but got dataFormat of ${s}`);let l=i,c=!1;i.rank===3&&(l=H(i,[1,i.shape[0],i.shape[1],i.shape[2]]),c=!0);let u={x:l,filter:o},h={strides:n,pad:r,dilations:a},d=$.runKernel(fu,u,h);return c?H(d,[d.shape[1],d.shape[2],d.shape[3]]):d}var em=D({dilation2d_:NN});function SN(e,t){let n=e.length,r=[];for(let a=0;a1&&i===1&&r.unshift(s)}return r}function Ot(e,t){let n=[];for(let r=0;r1)&&n.unshift(s)}return n}function ft(e,t){let n=[],r=Math.max(e.length,t.length);for(let a=0;a"The first dimension of `a` must match the size of `condition`."),s.rank!==1&&nn(s.shape,l.shape,"Error in where: ");let c={condition:s,t:o,e:l};return $.runKernel(zo,c)}var bn=D({where_:CN});function EN(e){let t={x:E(e,"x","zerosLike")};return $.runKernel(Xo,t)}var je=D({zerosLike_:EN});function RN(e,t){let n=E(e,"a","div"),r=E(t,"b","div");[n,r]=bt(n,r);let a=ge(n,r),s=je(a),i=Fa(r,s);return bn(i,s,a)}var tm=D({divNoNan_:RN});function MN(e,t){let n=E(e,"t1","dot"),r=E(t,"t2","dot");M((n.rank===1||n.rank===2)&&(r.rank===1||r.rank===2),()=>`Error in dot: inputs must all be rank 1 or 2, but got ranks ${n.rank} and ${r.rank}.`);let a=n.rank===1?n.size:n.shape[1],s=r.rank===1?r.size:r.shape[0];if(M(a===s,()=>`Error in dot: inner dimensions of inputs must match, but got ${a} and ${s}.`),n.rank===1&&r.rank===1){let i=H(n,[1,-1]),o=H(r,[-1,1]),l=Ge(i,o);return H(l,[])}else if(n.rank===1&&r.rank===2){let i=H(n,[1,-1]),o=H(r,[r.shape[0],r.shape[1]]),l=Ge(i,o);return H(l,[l.size])}else if(n.rank===2&&r.rank===1){let i=H(r,[-1,1]),o=Ge(n,i);return H(o,[o.size])}else{let i=H(r,[r.shape[0],r.shape[1]]);return Ge(n,i)}}var lx=D({dot_:MN});function FN(e){let t={x:E(e,"x","elu")};return $.runKernel(lo,t)}var cl=D({elu_:FN});function $N(e){let t=E(e,"x","erf");M(t.dtype==="int32"||t.dtype==="float32",()=>"Input dtype must be `int32` or `float32`."),t.dtype==="int32"&&(t=me(t,"float32"));let n={x:t};return $.runKernel(uo,n)}var nm=D({erf_:$N});function DN(e){let t={x:E(e,"x","exp")};return $.runKernel(gs,t)}var Gn=D({exp_:DN});function ON(e,t=0){let n=E(e,"x","expandDims","string_or_numeric");M(t<=n.rank,()=>"Axis must be <= rank of the tensor");let r={input:n},a={dim:t};return $.runKernel(ho,r,a)}var Yt=D({expandDims_:ON});function zN(e){let t={x:E(e,"x","expm1")};return $.runKernel(po,t)}var rm=D({expm1_:zN});function PN(e,t){let n=E(e,"x","tile","string_or_numeric");M(n.rank===t.length,()=>`Error in transpose: rank of input ${n.rank} must match length of reps ${t}.`);let r={x:n},a={reps:t};return $.runKernel(Ia,r,a)}var $a=D({tile_:PN});function LN(e,t,n,r="float32"){t==null&&(t=e);let a=Le([e,t],r),s=e<=t?e:t;for(let o=0;o`Error in localResponseNormalization: x must be rank 3 or 4 but got - rank ${s.rank}.`),M(Vt(t),()=>`Error in localResponseNormalization: depthRadius must be an integer but got depthRadius ${t}.`);let i=s,o=!1;s.rank===3&&(o=!0,i=H(s,[1,s.shape[0],s.shape[1],s.shape[2]]));let l={x:i},c={depthRadius:t,bias:n,alpha:r,beta:a},u=$.runKernel(gu,l,c);return o?H(u,[u.shape[1],u.shape[2],u.shape[3]]):u}var sm=D({localResponseNormalization_:YN});function JN(e){let t={x:E(e,"x","log")};return $.runKernel(Is,t)}var En=D({log_:JN});function QN(e){let t={x:E(e,"x","log1p")};return $.runKernel(vo,t)}var xd=D({log1p_:QN});function eS(e){return M(_a(e),()=>"The f passed in grad(f) must be a function"),(t,n)=>{let r=E(t,"x","tf.grad","string_or_numeric"),a=n!=null?E(n,"dy","tf.grad"):null;return $.tidy(()=>{let{value:s,grads:i}=$.gradients(()=>e(r),[r],a);return a!=null&&nn(s.shape,a.shape,"The shape of dy passed in grad(f)(x, dy) must match the shape returned by f(x)"),wd(i),i[0]})}}function tS(e){return M(_a(e),()=>"The f passed in grads(f) must be a function"),(t,n)=>{M(Array.isArray(t),()=>"The args passed in grads(f)(args) must be an array of `Tensor`s or `TensorLike`s");let r=Du(t,"args","tf.grads","string_or_numeric"),a=n!=null?E(n,"dy","tf.grads"):null;return $.tidy(()=>{let{value:s,grads:i}=$.gradients(()=>e(...r),r,a);return a!=null&&nn(s.shape,a.shape,"The shape of dy passed in grads(f)([x1,...], dy) must match the shape returned by f([x1,...])"),wd(i),i})}}function nS(e){return M(_a(e),()=>"The f passed in valueAndGrad(f) must be a function"),(t,n)=>{M(t instanceof Ve,()=>"The x passed in valueAndGrad(f)(x) must be a tensor"),M(n==null||n instanceof Ve,()=>"The dy passed in valueAndGrad(f)(x, dy) must be a tensor");let{grads:r,value:a}=$.gradients(()=>e(t),[t],n);return wd(r),{grad:r[0],value:a}}}function rS(e){return M(_a(e),()=>"The f passed in valueAndGrads(f) must be a function"),(t,n)=>{M(Array.isArray(t)&&t.every(a=>a instanceof Ve),()=>"The args passed in valueAndGrads(f)(args) must be array of tensors"),M(n==null||n instanceof Ve,()=>"The dy passed in valueAndGrads(f)(args, dy) must be a tensor");let r=$.gradients(()=>e(...t),t,n);return n!=null&&nn(r.value.shape,n.shape,"The shape of dy passed in valueAndGrads(f)([x1,...], dy) must match the shape returned by f([x1,...])"),wd(r.grads),r}}function px(e,t){M(_a(e),()=>"The f passed in variableGrads(f) must be a function"),M(t==null||Array.isArray(t)&&t.every(c=>c instanceof Mu),()=>"The varList passed in variableGrads(f, varList) must be an array of variables");let n=t!=null;if(!n){t=[];for(let c in $.registeredVariables)t.push($.registeredVariables[c])}let r=n?t.filter(c=>!c.trainable):null,a=t.length;t=t.filter(c=>c.trainable),M(t.length>0,()=>`variableGrads() expects at least one of the input variables to be trainable, but none of the ${a} variables is trainable.`);let s=!0,{value:i,grads:o}=$.gradients(e,t,null,s);M(o.some(c=>c!=null),()=>"Cannot find a connection between any variable and the result of the loss function y=f(x). Please make sure the operations that use variables are inside the function f passed to minimize()."),M(i.rank===0,()=>`The f passed in variableGrads(f) must return a scalar, but it returned a rank-${i.rank} tensor`);let l={};return t.forEach((c,u)=>{o[u]!=null&&(l[c.name]=o[u])}),r!=null&&r.forEach(c=>l[c.name]=null),{value:i,grads:l}}function Fr(e){return $.customGrad(e)}function wd(e){if(e.filter(t=>t==null).length>0)throw new Error(`Cannot compute gradient of y=f(x) with respect to x. Make sure that - the f you passed encloses all operations that lead from x to y.`)}function aS(e){let t={x:E(e,"x","neg")};return $.runKernel(No,t)}var _t=D({neg_:aS});function sS(e){let t={x:E(e,"x","softplus")};return $.runKernel(Vo,t)}var dl=D({softplus_:sS});function iS(e){let t=E(e,"x","logSigmoid");return Fr(n=>({value:_t(dl(_t(n))),gradFunc:r=>P(r,Cn(_t(n)))}))(t)}var fx=D({logSigmoid_:iS});function oS(e,t=null,n=!1){let r={x:E(e,"x","max")},a={reductionIndices:t,keepDims:n};return $.runKernel(Ns,r,a)}var qn=D({max_:oS});function lS(e,t){let n=E(e,"a","sub"),r=E(t,"b","sub");[n,r]=bt(n,r);let a={a:n,b:r};return $.runKernel(Ks,a)}var ye=D({sub_:lS});function uS(e,t=null,n=!1){let r=E(e,"x","sum");r.dtype==="bool"&&(r=me(r,"int32"));let a={x:r},s={axis:t,keepDims:n};return $.runKernel(Gs,a,s)}var Ce=D({sum_:uS});function cS(e,t=-1){let n=E(e,"logits","logSoftmax");if(t===-1&&(t=n.rank-1),t!==n.rank-1)throw Error(`Log Softmax along a non-last dimension is not yet supported. Logits was rank ${n.rank} and axis was ${t}`);return Fr((r,a)=>{let s=!0,i=qn(r,t,!0),o=ye(r,i),l=ye(me(o,"float32"),En(Ce(Gn(o),t,s)));return a([l]),{value:l,gradFunc:(c,u)=>{let[h]=u,d=!0,p=Gn(h);return ye(c,P(Ce(c,t,d),p))}}})(n)}var bd=D({logSoftmax_:cS});function im(e,t){for(let n=0;ne[s]);return[n,a]}function ci(e,t){let n=t.map(r=>1);return mx(e,n,t)}function hS(e,t,n){M(im(t,n),()=>`${e} supports only inner-most axes for now. Got axes ${t} and rank-${n} input.`)}function yx(e,t){if(im(e,t))return null;let n=[];for(let r=0;rn.push(r)),n}function om(e){return e.map((t,n)=>[n,t]).sort((t,n)=>t[1]-n[1]).map(t=>t[0])}function dS(e,t){let n=[];for(let r=t-e;r`Error in maxPool: input must be rank 4 but got rank ${o.rank}.`),M(Mr(n,i),()=>`Error in maxPool: Either strides or dilations must be 1. Got strides ${n} and dilations '${i}'`),a!=null&&M(Vt(r),()=>`Error in maxPool: pad must be an integer when using, dimRoundingMode ${a} but got pad ${r}.`);let c={x:o},u={filterSize:t,strides:n,pad:r,dimRoundingMode:a},h=$.runKernel(Ts,c,u);return l?H(h,[h.shape[1],h.shape[2],h.shape[3]]):h}var qu=D({maxPool_:gS});function xS(e,t=[1,1,1],n,r,a,s="NDHWC"){let i=E(e,"x","maxPool3d"),o=i,l=!1;i.rank===4&&(l=!0,o=H(i,[1,i.shape[0],i.shape[1],i.shape[2],i.shape[3]])),M(o.rank===5,()=>`Error in maxPool3d: x must be rank 5 but got rank ${o.rank}.`),M(s==="NDHWC",()=>`Error in maxPool3d: Only NDHWC is currently supported, but got dataFormat of ${s}`),a!=null&&M(Vt(r),()=>`Error in maxPool3d: pad must be an integer when using, dimRoundingMode ${a} but got pad ${r}.`);let c={x:o},u={filterSize:t,strides:n,pad:r,dimRoundingMode:a,dataFormat:s},h=$.runKernel(xu,c,u);return l?H(h,[h.shape[1],h.shape[2],h.shape[3],h.shape[4]]):h}var um=D({maxPool3d_:xS});function wS(e,t,n,r,a=!1){let s={x:E(e,"x","maxPoolWithArgmax")},i={filterSize:t,strides:n,pad:r,includeBatchInIndex:a},o=$.runKernel(Hh,s,i);return{result:o[0],indexes:o[1]}}var xx=D({maxPoolWithArgmax_:wS});function bS(e,t){let n=E(e,"a","maximum"),r=E(t,"b","maximum");[n,r]=bt(n,r),n.dtype==="bool"&&(n=me(n,"int32"),r=me(r,"int32")),ft(n.shape,r.shape);let a={a:n,b:r};return $.runKernel(Ss,a)}var $r=D({maximum_:bS});function _S(e,t=null,n=!1){let r={x:E(e,"x","mean")},a={axis:t,keepDims:n};return $.runKernel(Cs,r,a)}var vt=D({mean_:_S});function vS(e,t=null,n=!1){let r={x:E(e,"x","min")},a={axis:t,keepDims:n};return $.runKernel(Es,r,a)}var pl=D({min_:vS});function kS(e,t){let n=E(e,"a","minimum"),r=E(t,"b","minimum");[n,r]=bt(n,r),n.dtype==="bool"&&(n=me(n,"int32"),r=me(r,"int32")),ft(n.shape,r.shape);let a={a:n,b:r};return $.runKernel(Rs,a)}var fl=D({minimum_:kS});function IS(e,t,n){M(n==="reflect"||n==="symmetric",()=>`Invalid mode. Mode must be either reflect or symmetric. Got ${n}.`);let r=E(e,"x","mirrorPad");if(r.rank===0)throw new Error("mirrorPad(scalar) is not defined. Pass non-scalar to mirrorPad");M(t.length===r.rank,()=>`Padding doesn't match input. Must be ${r.rank}. Got ${t.length}.`);let a=n==="reflect"?1:0;for(let o=0;o"Invalid number of paddings. Must be length of 2 each."),M(t[o][0]>=0&&t[o][0]<=r.shape[o]-a&&t[o][1]>=0&&t[o][1]<=r.shape[o]-a,()=>`Padding in dimension ${o} cannot be greater than or equal to ${r.shape[o]-a} or less than 0 for input of shape ${r.shape}`);let s={paddings:t,mode:n},i={x:r};return $.runKernel(wu,i,s)}var cm=D({mirrorPad_:IS});function NS(e,t){let n=E(e,"a","mod"),r=E(t,"b","mod");[n,r]=bt(n,r);let a={a:n,b:r};return $.runKernel(Io,a)}var hm=D({mod_:NS});function SS(e){let t=E(e,"x","square"),n={};return $.runKernel("Square",{x:t},n)}var it=D({square_:SS});function TS(e,t=null,n=!1){e=E(e,"x","moments");let r=tr(t,e.shape),a=vt(e,r,n),s=a.shape;n||(s=ci(a.shape,r));let i=it(ye(me(e,"float32"),H(a,s))),o=vt(i,r,n);return{mean:a,variance:o}}var vd=D({moments_:TS});function CS(e,t,n,r){let a=E(t,"data","multiRNNCell"),s=Du(n,"c","multiRNNCell"),i=Du(r,"h","multiRNNCell"),o=a,l=[];for(let h=0;h2)throw new Error(`Rank of probabilities must be 1 or 2, but is ${i}`);n=n||Math.random();let o={logits:i===1?H(a,[1,-1]):a},l={numSamples:t,seed:n,normalized:r},c=$.runKernel(Gh,o,l);return i===1?H(c,[c.size]):c}var wx=D({multinomial_:RS});function MS(e,t){let n=E(e,"a","notEqual"),r=E(t,"b","notEqual");[n,r]=bt(n,r),ft(n.shape,r.shape);let a={a:n,b:r};return $.runKernel(So,a)}var hi=D({notEqual_:MS});function Ct(e,t="float32"){if(t==="complex64"){let r=Ct(e,"float32"),a=Ct(e,"float32");return Sa(r,a)}let n=bh(Ft(e),t);return $.makeTensor(n,e,t)}function Dr(e,t="float32"){if(t==="complex64"){let r=Dr(e,"float32"),a=Ct(e,"float32");return Sa(r,a)}let n=rf(Ft(e),t);return $.makeTensor(n,e,t)}function FS(e){let t={x:E(e,"x","onesLike")};return $.runKernel(Ro,t)}var Rn=D({onesLike_:FS});function $S(e,t){let n=E(e,"v1","outerProduct"),r=E(t,"v2","outerProduct");M(n.rank===1&&r.rank===1,()=>`Error in outerProduct: inputs must be rank 1, but got ranks ${n.rank} and ${r.rank}.`);let a=H(n,[-1,1]),s=H(r,[1,-1]);return Ge(a,s)}var DS=D({outerProduct_:$S});function OS(e,t,n=0){let r=E(e,"x","pad");if(r.rank===0)throw new Error("pad(scalar) is not defined. Pass non-scalar to pad");let a={paddings:t,constantValue:n},s={x:r};return $.runKernel($s,s,a)}var na=D({pad_:OS});function zS(e,t,n=0){return M(t.length===2,()=>"Invalid number of paddings. Must be length of 2."),na(e,[t],n)}var PS=D({pad1d_:zS});function LS(e,t,n=0){return M(t.length===2&&t[0].length===2&&t[1].length===2,()=>"Invalid number of paddings. Must be length of 2 each."),na(e,t,n)}var WS=D({pad2d_:LS});function BS(e,t,n=0){return M(t.length===3&&t[0].length===2&&t[1].length===2&&t[2].length===2,()=>"Invalid number of paddings. Must be length of 2 each."),na(e,t,n)}var VS=D({pad3d_:BS});function US(e,t,n=0){return M(t.length===4&&t[0].length===2&&t[1].length===2&&t[2].length===2&&t[3].length===2,()=>"Invalid number of paddings. Must be length of 2 each."),na(e,t,n)}var jS=D({pad4d_:US});function HS(e,t,n){let r=E(e,"x","spaceToBatchND");M(r.rank>=1+t.length,()=>`input rank ${r.rank} should be > than [blockShape] ${t.length}`),M(n.length===t.length,()=>`paddings.shape[0] ${n.length} must be equal to [blockShape] ${t.length}`),M(r.shape.reduce((i,o,l)=>l>0&&l<=t.length?i&&(o+n[l-1][0]+n[l-1][1])%t[l-1]==0:i,!0),()=>`input spatial dimensions ${r.shape.slice(1)} with paddings ${n.toString()} must be divisible by blockShapes ${t.toString()}`);let a={x:r},s={blockShape:t,paddings:n};return $.runKernel(vu,a,s)}var Xu=D({spaceToBatchND_:HS});function XS(e,t,n,r,a,s){a==null&&(a=[1,1]),s==null&&(s=1),r===0&&(r="valid");let i=E(e,"x","maxPool"),o=i,l=!1;i.rank===3&&(l=!0,o=H(i,[1,i.shape[0],i.shape[1],i.shape[2]])),M(Mr(s,a),()=>`Error in pool: Either strides or dilations must be 1. Got strides ${s} and dilations '${a}'`);let c=Y5(o.shape,t,s,a,r),u=[c.dilationHeight,c.dilationWidth],h;r==="same"?h=qS([c.filterHeight,c.filterWidth],u):h=[[0,0],[0,0]];let d=u[0]===1&&u[1]===1,[p,f]=GS([c.inHeight,c.inWidth],u,h),m=d?r:"valid",A=d?o:Xu(o,u,p),y=(n==="avg"?()=>Wu(A,t,s,m):()=>qu(A,t,s,m))(),g=d?y:Bu(y,u,f);return l?H(g,[g.shape[1],g.shape[2],g.shape[3]]):g}function GS(e,t,n){let r=n.map(u=>u[0]),a=n.map(u=>u[1]),s=e.concat(r,a),i=t.map((u,h)=>(u-s[h]%u)%u),o=a.map((u,h)=>u+i[h]),l=t.map((u,h)=>[r[h],o[h]]),c=t.map((u,h)=>[0,i[h]]);return[l,c]}function qS(e,t){let n=e.map((s,i)=>s+(s-1)*(t[i]-1)).map(s=>s-1),r=n.map(s=>Math.floor(s/2)),a=n.map((s,i)=>s-r[i]);return n.map((s,i)=>[r[i],a[i]])}var bx=D({pool_:XS});function KS(e,t){let n=E(e,"base","pow"),r=E(t,"exp","pow");[n,r]=bt(n,r);let a={a:n,b:r};return $.runKernel(Ds,a)}var ra=D({pow_:KS});function ZS(e,t){let n=E(e,"x","prelu"),r=E(t,"alpha","prelu"),a={x:n,alpha:r};return $.runKernel(Os,a)}var Ku=D({prelu_:ZS});function YS(e,t=null,n=!1){let r=E(e,"x","prod");r.dtype==="bool"&&(r=me(r,"int32"));let a={x:r},s={axis:t,keepDims:n};return $.runKernel(Fo,a,s)}var kd=D({prod_:YS});function JS(e,t,n){let r=Ft(e),a=null;if(n==null||n==="float32")a=new Float32Array(r);else if(n==="int32")a=new Int32Array(r);else if(n==="bool")a=new Uint8Array(r);else throw new Error(`Unknown data type ${n}`);for(let s=0;s=1||s===0);let i=Math.sqrt(-2*Math.log(s)/s);e=this.mean+this.stdDev*r*i,t=this.mean+this.stdDev*a*i,(!this.truncated||this.isValidTruncated(e))&&(n=!0)}return(!this.truncated||this.isValidTruncated(t))&&(this.nextVal=this.convertValue(t)),this.convertValue(e)}convertValue(e){return this.dtype==null||this.dtype==="float32"?e:Math.round(e)}isValidTruncated(e){return e<=this.upper&&e>=this.lower}},eT=class{constructor(e,t,n,r){this.alpha=e,this.beta=1/t,this.dtype=n;let a=r||Math.random();this.randu=dm.alea(a.toString()),this.randn=new pm(0,1,n,!1,this.randu()),e<1?this.d=e+2/3:this.d=e-1/3,this.c=1/Math.sqrt(9*this.d)}nextValue(){let e,t,n,r,a,s;for(;;){do r=this.randn.nextValue(),s=1+this.c*r;while(s<=0);if(s*=s*s,e=r*r,t=1-.331*e*e,n=.5*e+this.d*(1-s+Math.log(s)),a=this.randu(),athis.dtype==null||this.dtype==="float32",this.min=e,this.range=t-e,this.dtype=n,r==null&&(r=Math.random()),typeof r=="number"&&(r=r.toString()),!this.canReturnFloat()&&this.range<=1)throw new Error(`The difference between ${e} - ${t} <= 1 and dtype is not float`);this.random=dm.alea(r)}convertValue(e){return this.canReturnFloat()?e:Math.round(e)}nextValue(){return this.convertValue(this.min+this.range*this.random())}};function nT(e,t,n=1,r="float32",a){if(n==null&&(n=1),r==null&&(r="float32"),r!=="float32"&&r!=="int32")throw new Error(`Unsupported data type ${r}`);let s=new eT(t,n,r,a),i=Le(e,r);for(let o=0;o`Error in reverse1D: x must be rank 1 but got rank ${t.rank}.`),Mn(t,0)}var dT=D({reverse1d_:hT});function pT(e,t){let n=E(e,"x","reverse");return M(n.rank===2,()=>`Error in reverse2D: x must be rank 2 but got rank ${n.rank}.`),Mn(n,t)}var fT=D({reverse2d_:pT});function mT(e,t){let n=E(e,"x","reverse");return M(n.rank===3,()=>`Error in reverse3D: x must be rank 3 but got rank ${n.rank}.`),Mn(n,t)}var AT=D({reverse3d_:mT});function yT(e,t){let n=E(e,"x","reverse");return M(n.rank===4,()=>`Error in reverse4D: x must be rank 4 but got rank ${n.rank}.`),Mn(n,t)}var gT=D({reverse4d_:yT});function xT(e){let t={x:E(e,"x","round")};return $.runKernel(Bs,t)}var mm=D({round_:xT});function wT(e){let t={x:E(e,"x","rsqrt")};return $.runKernel(Vs,t)}var Sd=D({rsqrt_:wT});function _e(e,t){if((rn(e)&&t!=="string"||Array.isArray(e))&&t!=="complex64")throw new Error("Error creating a new Scalar: value must be a primitive (number|boolean|string)");if(t==="string"&&rn(e)&&!(e instanceof Uint8Array))throw new Error("When making a scalar from encoded string, the value must be `Uint8Array`.");return Ta(e,[],[],t)}function bT(e){let t={x:E(e,"x","selu")};return $.runKernel(Po,t)}var Td=D({selu_:bT});function _T(e,t,n,r,a,s=[1,1],i="NHWC"){let o=E(e,"x","separableConv2d"),l=E(t,"depthwiseFilter","separableConv2d"),c=E(n,"pointwiseFilter","separableConv2d"),u=o,h=!1;if(o.rank===3&&(h=!0,u=H(o,[1,o.shape[0],o.shape[1],o.shape[2]])),i==="NCHW")throw new Error("separableConv2d currently does not support dataFormat NCHW; only NHWC is supported");M(u.rank===4,()=>`Error in separableConv2d: input must be rank 4, but got rank ${u.rank}.`),M(l.rank===4,()=>`Error in separableConv2d: depthwise filter must be rank 4, but got rank ${l.rank}.`),M(c.rank===4,()=>`Error in separableConv2d: pointwise filter must be rank 4, but got rank ${l.rank}.`),M(c.shape[0]===1,()=>`Error in separableConv2d: the first dimension of pointwise filter must be 1, but got ${c.shape[0]}.`),M(c.shape[1]===1,()=>`Error in separableConv2d: the second dimension of pointwise filter must be 1, but got ${c.shape[1]}.`);let d=l.shape[2],p=l.shape[3];M(c.shape[2]===d*p,()=>`Error in separableConv2d: the third dimension of pointwise filter must be ${d*p}, but got ${c.shape[2]}.`);let f=ul(u,l,r,a,i,s),m=ta(f,c,1,"valid",i);return h?H(m,[m.shape[1],m.shape[2],m.shape[3]]):m}var Am=D({separableConv2d_:_T});async function vT(e,t){let n=E(e,"x","setdiff1d"),r=E(t,"y","setdiff1d");M(n.dtype===r.dtype,()=>`x and y should have the same dtype, but got x (${n.dtype}) and y (${r.dtype}).`),M(n.rank===1,()=>`x should be 1D tensor, but got x (${n.shape}).`),M(r.rank===1,()=>`y should be 1D tensor, but got y (${r.shape}).`);let a=await n.data(),s=await r.data(),i=new Set(s),o=0;for(let u=0;u`slice1d expects a rank-1 tensor, but got a rank-${r.rank} tensor`),Ee(r,[t],[n])}var Rd=D({slice1d_:ST});function TT(e,t,n){let r=E(e,"x","slice2d");return M(r.rank===2,()=>`slice2d expects a rank-2 tensor, but got a rank-${r.rank} tensor`),Ee(r,t,n)}var gm=D({slice2d_:TT});function CT(e,t,n){let r=E(e,"x","slice3d");return M(r.rank===3,()=>`slice3d expects a rank-3 tensor, but got a rank-${r.rank} tensor`),Ee(r,t,n)}var Md=D({slice3d_:CT});function ET(e,t,n){let r=E(e,"x","slice4d");return M(r.rank===4,()=>`slice4d expects a rank-4 tensor, but got a rank-${r.rank} tensor`),Ee(r,t,n)}var Yu=D({slice4d_:ET});function RT(e,t=-1){let n=E(e,"logits","softmax","float32");if(t===-1&&(t=n.rank-1),t!==n.rank-1)throw Error(`Softmax along a non-last dimension is not yet supported. Logits was rank ${n.rank} and dim was ${t}`);let r={logits:n},a={dim:t};return $.runKernel(qs,r,a)}var Ju=D({softmax_:RT});function MT(e){M(e.dtype==="complex64",()=>`The dtype for tf.spectral.fft() must be complex64 but got ${e.dtype}.`);let t={input:e};return $.runKernel(Ph,t)}var Qu=D({fft_:MT});function FT(e){M(e.dtype==="complex64",()=>`The dtype for tf.spectral.ifft() must be complex64 but got ${e.dtype}.`);let t={input:e};return $.runKernel(Lh,t)}var Al=D({ifft_:FT});function $T(e){let t=e.shape[e.shape.length-1],n=e.size/t,r;if(t<=2){let a=H(e,[n,t]);r=Al(a)}else{let a=[n,2*(t-1)],s=H(Zu(e),[n,t]),i=H(yd(e),[n,t]),o=Mn(Ee(s,[0,1],[n,t-2]),1),l=P(Mn(Ee(i,[0,1],[n,t-2]),1),_e(-1)),c=rt([s,o],1),u=rt([i,l],1),h=H(Sa(c,u),[a[0],a[1]]);r=Al(h)}if(r=Zu(r),e.rank===3&&e.shape[0]!==0){let a=r,s=e.shape[0];r=H(r,[s,r.shape[0]/s,r.shape[1]]),a.dispose()}return r}var Fd=D({irfft_:$T});function DT(e,t,n=0){let r={x:E(e,"x","split")},a={numOrSizeSplits:t,axis:n};return $.runKernel(Uo,r,a)}var zt=D({split_:DT});function OT(e,t){M(e.dtype==="float32",()=>`The dtype for rfft() must be real value but got ${e.dtype}`);let n=e.shape[e.shape.length-1],r=e.size/n,a;if(t!=null&&t0),m=e.shape.map(A=>A);m[e.shape.length-1]=t,a=Ee(e,f,m),n=t}else if(t!=null&&t>n){let f=e.shape.map(m=>m);f[e.shape.length-1]=t-n,a=rt([e,Ct(f)],e.shape.length-1),n=t}else a=e;let s=je(a),i=H(Sa(a,s),[r,n]),o=Qu(i),l=Math.floor(n/2)+1,c=Zu(o),u=yd(o),h=zt(c,[l,n-l],c.shape.length-1),d=zt(u,[l,n-l],u.shape.length-1),p=a.shape.slice();return p[a.shape.length-1]=l,H(Sa(h[0],d[0]),p)}var ec=D({rfft_:OT});function zT(e){let t={x:E(e,"x","sqrt")};return $.runKernel(Hs,t)}var Jt=D({sqrt_:zT});function PT(e,t){let n=E(e,"a","squaredDifference"),r=E(t,"b","squaredDifference");[n,r]=bt(n,r),ft(n.shape,r.shape);let a={a:n,b:r},s={};return $.runKernel(Xs,a,s)}var $d=D({squaredDifference_:PT});function LT(e,t){let n=E(e,"x","squeeze");return H(n,jg(n.shape,t).newShape)}var Oa=D({squeeze_:LT});function WT(e,t=0){let n=Du(e,"tensors","stack","string_or_numeric");M(n.length>=1,()=>"Pass at least one tensor to tf.stack"),n.length>0&&M(t<=n[0].rank,()=>"Axis must be <= rank of the tensor");let r=n,a={axis:t};return $.runKernel(Mo,r,a)}var ln=D({stack_:WT});function BT(e,t=0){let n={x:E(e,"x","step")},r={alpha:t};return $.runKernel(Na,n,r)}var yl=D({step_:BT});function VT(e,t,n,r,a=0,s=0,i=0,o=0,l=0){let c={x:E(e,"x","stridedSlice")},u={begin:t,end:n,strides:r,beginMask:a,endMask:s,ellipsisMask:i,newAxisMask:o,shrinkAxisMask:l};return $.runKernel(jo,c,u)}var xm=D({stridedSlice_:VT});function UT(e){let t={x:E(e,"x","tan")};return $.runKernel(Ho,t)}var wm=D({tan_:UT});function an(e,t){as(e);let n=Cr(e,t);if(n.length!==1)throw new Error("tensor1d() requires values to be a flat/TypedArray");return Ta(e,null,n,t)}function _n(e,t,n){if(as(e),t!=null&&t.length!==2)throw new Error("tensor2d() requires shape to have two numbers");let r=Cr(e,n);if(r.length!==2&&r.length!==1)throw new Error("tensor2d() requires values to be number[][] or flat/TypedArray");if(r.length===1&&t==null)throw new Error("tensor2d() requires shape to be provided when `values` are a flat/TypedArray");return Ta(e,t,r,n)}function jT(e,t,n){if(as(e),t!=null&&t.length!==4)throw new Error("tensor4d() requires shape to have four numbers");let r=Cr(e,n);if(r.length!==4&&r.length!==1)throw new Error("tensor4d() requires values to be number[][][][] or flat/TypedArray");if(r.length===1&&t==null)throw new Error("tensor4d() requires shape to be provided when `values` are a flat array");return Ta(e,t,r,n)}function HT(e,t,n){if(as(e),t!=null&&t.length!==5)throw new Error("tensor5d() requires shape to have five numbers");let r=Cr(e,n);if(r.length!==5&&r.length!==1)throw new Error("tensor5d() requires values to be number[][][][][] or flat/TypedArray");if(r.length===1&&t==null)throw new Error("tensor5d() requires shape to be provided when `values` are a flat array");return Ta(e,t,r,n)}function GT(e,t,n){if(as(e),t!=null&&t.length!==6)throw new Error("tensor6d() requires shape to have six numbers");let r=Cr(e,n);if(r.length!==6&&r.length!==1)throw new Error("tensor6d() requires values to be number[][][][][][] or flat/TypedArray");if(r.length===1&&t==null)throw new Error("tensor6d() requires shape to be provided when `values` are a flat array");return t=t||r,Ta(e,t,r,n)}function qT(e,t=1,n=!0){let r=E(e,"x","topk");if(r.rank===0)throw new Error("topk() expects the input to be of rank 1 or higher");let a=r.shape[r.shape.length-1];if(t>a)throw new Error(`'k' passed to topk() must be <= the last dimension (${a}) but got ${t}`);let s={x:r},i={k:t,sorted:n},[o,l]=$.runKernel(Go,s,i);return{values:o,indices:l}}var bm=D({topk_:qT});function XT(e,t=0,n=1,r,a){if(r!=null&&r==="bool")throw new Error("Unsupported data type $ { dtype }");let s=new pm(t,n,r,!0,a),i=Le(e,r);for(let o=0;o0,()=>"The input tensor must be at least 1D");let r={x:n},a={axis:t},[s,i]=$.runKernel(Jh,r,a);return{values:s,indices:i}}var Od=D({unique_:KT});function ZT(e,t,n){let r=E(e,"x","unsortedSegmentSum"),a=E(t,"segmentIds","unsortedSegmentSum","int32");M(Vt(n),()=>"numSegments must be of dtype int");let s={x:r,segmentIds:a},i={numSegments:n};return $.runKernel(Iu,s,i)}var _m=D({unsortedSegmentSum_:ZT});function YT(e,t=0){let n=E(e,"x","unstack","string_or_numeric");M(t>=-n.shape.length&&t`Axis = ${t} is not in [-${n.shape.length}, ${n.shape.length})`);let r={value:n},a={axis:t};return $.runKernel(qo,r,a)}var sr=D({unstack_:YT});function kx(e,t=!0,n,r){return $.makeVariable(e,t,n,r)}function Ix(e,t){let n=[];for(let s=0;s0,()=>"mask cannot be scalar"),nn(o.slice(s,s+i),a.shape,"mask's shape must match the first K dimensions of tensor's shape,");let l=1;for(let m=s;m"Shape mismatch in v and x");let l=_e(1),c=ye(l,o),u=P(ye(i,s),c);if(a){M(r!=null,()=>"When using zeroDebias: true, step is required.");let h=E(r,"step","movingAverage");u=ge(u,ye(l,ra(o,h)))}return se(s,u)}var rC=D({movingAverage_:nC});function aC(e,t,n){let r=E(e,"indices","scatterND","int32"),a=E(t,"updates","scatterND");Ff(a,r,n);let s={indices:r,updates:a},i={shape:n};return $.runKernel(Oo,s,i)}var Sx=D({scatterND_:aC});function sC(e,t,n,r){if(e.dtype!=="int32")throw new Error(`tf.sparseToDense() expects the indices to be int32 type, but the dtype was ${e.dtype}.`);if(e.rank>2)throw new Error(`sparseIndices should be a scalar, vector, or matrix, but got shape ${e.shape}.`);let a=e.rank>0?e.shape[0]:1,s=e.rank>1?e.shape[1]:1;if(n.length!==s)throw new Error(`outputShape has incorrect number of elements:, ${n.length}, should be: ${s}.`);let i=t.size;if(!(t.rank===0||t.rank===1&&i===a))throw new Error(`sparseValues has incorrect shape ${t.shape}, should be [] or [${a}]`);if(t.dtype!==r.dtype)throw new Error("sparseValues.dtype must match defaultValues.dtype")}function iC(e,t,n,r=0){let a=E(e,"sparseIndices","sparseToDense","int32"),s=E(t,"sparseValues","sparseToDense"),i=E(r,"defaultValue","sparseToDense",s.dtype);sC(a,s,n,i);let o={sparseIndices:a,sparseValues:s,defaultValue:i},l={outputShape:n};return $.runKernel(Zh,o,l)}var km=D({sparseToDense_:iC});function oC(e,t){let n=E(t,"indices","gatherND","int32"),r={params:E(e,"x","gatherND"),indices:n};return $.runKernel(Ao,r)}var Tx=D({gatherND_:oC});function lC(e,t){if(t==null)return e.shape.slice();if(Qr(e.shape,t))return t;if(e.shape.length===t.length){let n=[];for(let r=0;r`x has to be a floating point tensor since it's going to be scaled, but got a ${a.dtype} tensor instead.`),M(t>=0&&t<1,()=>`rate must be a float in the range [0, 1), but got ${t}.`),t===0)return e instanceof Ve?a.clone():a;let s=lC(a,n),i=1-t,o=ge(hl(se(ml(s,0,1,"float32",r),i)),i);return P(a,o)}var Cx=D({dropout_:uC});function Ex(e){return Math.floor(Math.pow(2,Math.ceil(Math.log(e)/Math.log(2))))}function Im(e,t,n){let r=1-e%2,a=new Float32Array(e);for(let s=0;s1,()=>`inTopK() expects the predictions to be of rank 2 or higher, but got ${r.rank}`),M(r.rank-1===a.rank,()=>`predictions rank should be 1 larger than targets rank, but got predictions rank ${r.rank} and targets rank ${a.rank}`),nn(r.shape.slice(0,r.shape.length-1),a.shape,"predictions's shape should be align with the targets' shape, except the last dimension.");let s=r.shape[r.shape.length-1];M(n>0&&n<=s,()=>`'k' passed to inTopK() must be > 0 && <= the predictions last dimension (${s}), but got ${n}`);let i=await r.data(),o=await a.data(),[l,c]=[i.length/s,s],u=Hg("bool",l);for(let h=0;hA.value-m.value),u[h]=0;for(let m=0;mdC,depthwiseConv2d:()=>pC,matMul:()=>fC});function mC(e,t,n,r,a,s="NHWC",i){let o=e;e.rank===3&&(o=H(e,[1,e.shape[0],e.shape[1],e.shape[2]]));let l=t;l.rank===3&&(l=H(t,[1,t.shape[0],t.shape[1],t.shape[2]])),M(o.rank===4,()=>`Error in conv2dDerFilter: input must be rank 4, but got shape ${o.shape}.`),M(l.rank===4,()=>`Error in conv2dDerFilter: dy must be rank 4, but got shape ${l.shape}.`),M(n.length===4,()=>`Error in conv2dDerFilter: filterShape must be length 4, but got ${n}.`);let c=s==="NHWC"?o.shape[3]:o.shape[1],u=s==="NHWC"?l.shape[3]:l.shape[1];M(c===n[2],()=>`Error in conv2dDerFilter: depth of input ${c}) must match input depth in filter (${n[2]}.`),M(u===n[3],()=>`Error in conv2dDerFilter: depth of dy (${u}) must match output depth for filter (${n[3]}).`),i!=null&&M(Vt(a),()=>`Error in conv2dDerFilter: pad must be an integer when using, dimRoundingMode ${i} but got pad ${a}.`);let h={x:o,dy:l},d={strides:r,pad:a,dataFormat:s,dimRoundingMode:i,filterShape:n};return $.runKernel(Th,h,d)}var Nm=D({conv2DBackpropFilter_:mC});function Pd(e,t,n){if(n==null||n==="linear")return e;if(n==="relu")return P(e,yl(t));throw new Error(`Cannot compute gradient for fused activation ${n}.`)}function Ld(e,t){let n=t,r=Ot(e.shape,t.shape);return r.length>0&&(n=Ce(n,r)),H(n,e.shape)}function Wd(e,t,n,r){if(t==="linear")return e;if(t==="relu")return Or(e);if(t==="elu")return cl(e);if(t==="relu6")return Nd(e);if(t==="prelu")return Ku(e,n);if(t==="leakyrelu")return Hu(e,r);throw new Error(`Unknown fused activation ${t}.`)}var Bd=(e,t)=>!(e>0)||t==="linear";function AC({x:e,filter:t,strides:n,pad:r,dataFormat:a="NHWC",dilations:s=[1,1],dimRoundingMode:i,bias:o,activation:l="linear",preluActivationWeights:c,leakyreluAlpha:u}){if(l=l||"linear",Bd($.state.gradientDepth,l)===!1){let _=ta(e,t,n,r,a,s,i);return o!=null&&(_=se(_,o)),Wd(_,l,c,u)}let h=E(e,"x","conv2d"),d=E(t,"filter","conv2d"),p=h,f=!1;h.rank===3&&(f=!0,p=H(h,[1,h.shape[0],h.shape[1],h.shape[2]])),M(p.rank===4,()=>`Error in fused conv2d: input must be rank 4, but got rank ${p.rank}.`),M(d.rank===4,()=>`Error in fused conv2d: filter must be rank 4, but got rank ${d.rank}.`),i!=null&&M(Vt(r),()=>`Error in fused conv2d: pad must be an integer when using, dimRoundingMode ${i} but got pad ${r}.`),M(p.shape[3]===d.shape[2],()=>`Error in conv2d: depth of input (${p.shape[3]}) must match input depth for filter ${d.shape[2]}.`),M(Mr(n,s),()=>`Error in conv2D: Either strides or dilations must be 1. Got strides ${n} and dilations '${s}'`),M(a==="NHWC",()=>`Error in conv2d: got dataFormat of ${a} but only NHWC is currently supported.`);let m=Lu(p.shape,d.shape,n,s,r,i),A;o!=null&&(A=E(o,"bias","fused conv2d"),[A]=bt(A,h),ft(m.outShape,A.shape));let y;c!=null&&(y=E(c,"prelu weights","fused conv2d"));let g=(_,x)=>{let[N,T,C,F]=x,O=Pd(_,C,l);M(Ma(s),()=>`Error in gradient of fused conv2D: dilation rates greater than 1 are not yet supported in gradients. Got dilations '${s}'`);let W=Yf(T.shape,O,N,n,r),V=Nm(T,O,N.shape,n,r),U=[W,V];if(F!=null){let j=Ld(F,O);U.push(j)}return U},w={x:p,filter:d,bias:A,preluActivationWeights:y},b={strides:n,pad:r,dataFormat:a,dilations:s,dimRoundingMode:i,activation:l,leakyreluAlpha:u};return o==null?Fr((_,x,N)=>{let T=$.runKernel(Qs,w,b);return N([x,_,T]),f&&(T=H(T,[T.shape[1],T.shape[2],T.shape[3]])),{value:T,gradFunc:g}})(p,d):Fr((_,x,N,T)=>{let C=$.runKernel(Qs,w,b);return T([x,_,C,N]),f&&(C=H(C,[C.shape[1],C.shape[2],C.shape[3]])),{value:C,gradFunc:g}})(p,d,A)}var dC=D({fusedConv2d_:AC});function yC(e,t,n,r,a,s=[1,1],i){let o=e;e.rank===3&&(o=H(e,[1,e.shape[0],e.shape[1],e.shape[2]]));let l=t;l.rank===3&&(l=H(t,[1,t.shape[0],t.shape[1],t.shape[2]]));let c={x:o,dy:l},u={strides:r,pad:a,dimRoundingMode:i,dilations:s,filterShape:n};return $.runKernel(Mh,c,u)}var Rx=D({depthwiseConv2dNativeBackpropFilter_:yC});function gC(e,t,n,r,a,s=[1,1],i){let o=t,l=!1;t.rank===3&&(l=!0,o=H(t,[1,t.shape[0],t.shape[1],t.shape[2]]));let c={dy:o,filter:n},u={strides:r,pad:a,dimRoundingMode:i,dilations:s,inputShape:e},h=$.runKernel(Fh,c,u);return l?H(h,[h.shape[1],h.shape[2],h.shape[3]]):h}var Mx=D({depthwiseConv2dNativeBackpropInput_:gC});function xC({x:e,filter:t,strides:n,pad:r,dataFormat:a="NHWC",dilations:s=[1,1],dimRoundingMode:i,bias:o,activation:l="linear",preluActivationWeights:c,leakyreluAlpha:u}){if(Bd($.state.gradientDepth,l)===!1){let _=ul(e,t,n,r,a,s,i);return o!=null&&(_=se(_,o)),Wd(_,l,c,u)}let h=E(e,"x","depthwiseConv2d"),d=E(t,"filter","depthwiseConv2d"),p=h,f=!1;h.rank===3&&(f=!0,p=H(h,[1,h.shape[0],h.shape[1],h.shape[2]])),M(p.rank===4,()=>`Error in fused depthwiseConv2d: input must be rank 4, but got rank ${p.rank}.`),M(d.rank===4,()=>`Error in fused depthwiseConv2d: filter must be rank 4, but got rank ${d.rank}.`),M(p.shape[3]===d.shape[2],()=>`Error in fused depthwiseConv2d: number of input channels (${p.shape[3]}) must match the inChannels dimension in filter ${d.shape[2]}.`),s==null&&(s=[1,1]),M(Mr(n,s),()=>`Error in fused depthwiseConv2d: Either strides or dilations must be 1. Got strides ${n} and dilations '${s}'`),i!=null&&M(Vt(r),()=>`Error in fused depthwiseConv2d: pad must be an integer when using dimRoundingMode ${i} but got pad ${r}.`);let m=Lu(p.shape,d.shape,n,s,r,i,!0),A;o!=null&&(A=E(o,"bias","fused conv2d"),[A]=bt(A,h),ft(m.outShape,A.shape));let y;c!=null&&(y=E(c,"prelu weights","fused depthwiseConv2d"));let g=(_,x)=>{M(Ma(s),()=>`Error in gradient of fused depthwiseConv2d: dilation rates greater than 1 are not yet supported. Got dilations '${s}'`);let[N,T,C,F]=x,O=Pd(_,C,l),W=Mx(T.shape,O,N,n,r,s,i),V=Rx(T,O,N.shape,n,r,s,i);if(F!=null){let U=Ld(A,O);return[W,V,U]}return[W,V]},w={x:p,filter:d,bias:A,preluActivationWeights:y},b={strides:n,pad:r,dataFormat:a,dilations:s,dimRoundingMode:i,activation:l,leakyreluAlpha:u};return o==null?Fr((_,x,N)=>{let T=$.runKernel(ei,w,b);return N([x,_,T]),f&&(T=H(T,[T.shape[1],T.shape[2],T.shape[3]])),{value:T,gradFunc:g}})(p,d):Fr((_,x,N,T)=>{let C=$.runKernel(ei,w,b);return T([x,_,C,N]),f&&(C=H(C,[C.shape[1],C.shape[2],C.shape[3]])),{value:C,gradFunc:g}})(p,d,A)}var pC=D({fusedDepthwiseConv2d_:xC});function wC({a:e,b:t,transposeA:n=!1,transposeB:r=!1,bias:a,activation:s="linear",preluActivationWeights:i,leakyreluAlpha:o}){if(Bd($.state.gradientDepth,s)===!1){let F=Ge(e,t,n,r);return a!=null&&(F=se(F,a)),Wd(F,s,i,o)}let l=E(e,"a","fused matMul"),c=E(t,"b","fused matMul");[l,c]=bt(l,c);let u=n?l.shape[l.rank-2]:l.shape[l.rank-1],h=r?c.shape[c.rank-1]:c.shape[c.rank-2],d=n?l.shape[l.rank-1]:l.shape[l.rank-2],p=r?c.shape[c.rank-2]:c.shape[c.rank-1],f=l.shape.slice(0,-2),m=c.shape.slice(0,-2),A=Ft(f),y=Ft(m);M(l.rank>=2&&c.rank>=2&&l.rank===c.rank,()=>`Error in fused matMul: inputs must have the same rank of at least 2, got ranks ${l.rank} and ${c.rank}.`),M(Qr(f,m),()=>`Error in fused matMul: outer dimensions (${f}) and (${m}) of Tensors with shapes ${l.shape} and ${c.shape} must match.`),M(u===h,()=>`Error in fused matMul: inner shapes (${u}) and (${h}) of Tensors with shapes ${l.shape} and ${c.shape} and transposeA=${n} and transposeB=${r} must match.`);let g=l.shape.slice(0,-2).concat([d,p]),w=n?H(l,[A,u,d]):H(l,[A,d,u]),b=r?H(c,[y,p,h]):H(c,[y,h,p]),_;a!=null&&(_=E(a,"bias","fused matMul"),[_]=bt(_,l),ft(g,_.shape));let x;i!=null&&(x=E(i,"prelu weights","fused matMul"));let N=(F,O)=>{let[W,V,U,j]=O,X=Pd(H(F,U.shape),U,s),G,ee;if(!n&&!r?(G=Ge(X,V,!1,!0),ee=Ge(W,X,!0,!1)):!n&&r?(G=Ge(X,V,!1,!1),ee=Ge(X,W,!0,!1)):n&&!r?(G=Ge(V,X,!1,!0),ee=Ge(W,X,!1,!1)):(G=Ge(V,X,!0,!0),ee=Ge(X,W,!0,!0)),a!=null){let Y=Ld(j,X);return[G,ee,Y]}else return[G,ee]},T={a:w,b,bias:_,preluActivationWeights:x},C={transposeA:n,transposeB:r,activation:s,leakyreluAlpha:o};return a==null?Fr((F,O,W)=>{let V=$.runKernel(Js,T,C);return W([F,O,V]),{value:H(V,g),gradFunc:N}})(w,b):Fr((F,O,W,V)=>{let U=$.runKernel(Js,T,C);return V([F,O,U,W]),{value:H(U,g),gradFunc:N}})(w,b,_)}var fC=D({fusedMatMul_:wC});function bC(e){return Im(e,.54,.46)}var _C=D({hammingWindow_:bC});function vC(e){return Im(e,.5,.5)}var Fx=D({hannWindow_:vC});function kC(e,t,n,r=!1,a=0){let s=0,i=[];for(;s+t<=e.size;)i.push(Ee(e,s,t)),s+=n;if(r)for(;s`Error in cropAndResize: image must be rank 4,but got rank ${i.rank}.`),M(o.rank===2&&o.shape[1]===4,()=>`Error in cropAndResize: boxes must be have size [${c},4] but had shape ${o.shape}.`),M(l.rank===1&&l.shape[0]===c,()=>`Error in cropAndResize: boxInd must be have size [${c}] but had shape ${o.shape}.`),M(r.length===2,()=>`Error in cropAndResize: cropSize must be of length 2, but got length ${r.length}.`),M(r[0]>=1&&r[1]>=1,()=>`cropSize must be atleast [1,1], but was ${r}`),M(a==="bilinear"||a==="nearest",()=>`method must be bilinear or nearest, but was ${a}`);let u={image:i,boxes:o,boxInd:l},h={method:a,extrapolationValue:s,cropSize:r};return $.runKernel(io,u,h)}var TC=D({cropAndResize_:SC});function CC(e){let t=E(e,"image","flipLeftRight","float32");M(t.rank===4,()=>`Error in flipLeftRight: image must be rank 4,but got rank ${t.rank}.`);let n={image:t};return $.runKernel(fo,n,{})}var EC=D({flipLeftRight_:CC});function RC(e,t,n=0,r=.5){let a=E(e,"image","rotateWithOffset","float32");M(a.rank===4,()=>`Error in rotateWithOffset: image must be rank 4,but got rank ${a.rank}.`);let s={image:a},i={radians:t,fillValue:n,center:r};return $.runKernel(Ko,s,i)}var MC=D({rotateWithOffset_:RC});function gl(e,t,n,r,a,s){r==null&&(r=.5),a==null&&(a=Number.NEGATIVE_INFINITY),s==null&&(s=0);let i=e.shape[0];return n=Math.min(n,i),M(0<=r&&r<=1,()=>`iouThreshold must be in [0, 1], but was '${r}'`),M(e.rank===2,()=>`boxes must be a 2D tensor, but was of rank '${e.rank}'`),M(e.shape[1]===4,()=>`boxes must have 4 columns, but 2nd dimension was ${e.shape[1]}`),M(t.rank===1,()=>"scores must be a 1D tensor"),M(t.shape[0]===i,()=>`scores has incompatible shape with boxes. Expected ${i}, but was ${t.shape[0]}`),M(0<=s&&s<=1,()=>`softNmsSigma must be in [0, 1], but was '${s}'`),{maxOutputSize:n,iouThreshold:r,scoreThreshold:a,softNmsSigma:s}}function FC(e,t,n,r=.5,a=Number.NEGATIVE_INFINITY){let s=E(e,"boxes","nonMaxSuppression"),i=E(t,"scores","nonMaxSuppression"),o=gl(s,i,n,r,a);n=o.maxOutputSize,r=o.iouThreshold,a=o.scoreThreshold;let l={maxOutputSize:n,iouThreshold:r,scoreThreshold:a};return $.runKernel(To,{boxes:s,scores:i},l)}var $C=D({nonMaxSuppression_:FC});function OC(e,t,n){let r=DC(e,t,n),a=r<0?-(r+1):r;e.splice(a,0,t)}function DC(e,t,n){return PC(e,t,n||zC)}function zC(e,t){return e>t?1:e>>1);let o=n(t,e[s]);o>0?r=s+1:(a=s,i=!o)}return i?r:-r-1}function Dx(e,t,n,r,a){return Sm(e,t,n,r,a,0)}function Ox(e,t,n,r,a,s){return Sm(e,t,n,r,a,0,!1,s,!0)}function zx(e,t,n,r,a,s){return Sm(e,t,n,r,a,s,!0)}function Sm(e,t,n,r,a,s,i=!1,o=!1,l=!1){let c=[];for(let A=0;Aa&&c.push({score:t[A],boxIndex:A,suppressBeginIndex:0});c.sort(Px);let u=s>0?-.5/s:0,h=[],d=[];for(;h.length0;){let A=c.pop(),{score:y,boxIndex:g,suppressBeginIndex:w}=A;if(y=w;--_){let x=LC(e,g,h[_]);if(x>=r){b=!0;break}if(A.score=A.score*WC(r,u,x),A.score<=a)break}A.suppressBeginIndex=h.length,b||(A.score===y?(h.push(g),d.push(A.score)):A.score>a&&OC(c,A,Px))}let p=h.length,f=n-p;o&&f>0&&(h.push(...new Array(f).fill(0)),d.push(...new Array(f).fill(0)));let m={selectedIndices:h};return i&&(m.selectedScores=d),l&&(m.validOutputs=p),m}function LC(e,t,n){let r=e.subarray(t*4,t*4+4),a=e.subarray(n*4,n*4+4),s=Math.min(r[0],r[2]),i=Math.min(r[1],r[3]),o=Math.max(r[0],r[2]),l=Math.max(r[1],r[3]),c=Math.min(a[0],a[2]),u=Math.min(a[1],a[3]),h=Math.max(a[0],a[2]),d=Math.max(a[1],a[3]),p=(o-s)*(l-i),f=(h-c)*(d-u);if(p<=0||f<=0)return 0;let m=Math.max(s,c),A=Math.max(i,u),y=Math.min(o,h),g=Math.min(l,d),w=Math.max(y-m,0)*Math.max(g-A,0);return w/(p+f-w)}function WC(e,t,n){let r=Math.exp(t*n*n);return n<=e?r:0}function Px(e,t){return e.score-t.score||e.score===t.score&&t.boxIndex-e.boxIndex}async function BC(e,t,n,r=.5,a=Number.NEGATIVE_INFINITY){let s=E(e,"boxes","nonMaxSuppressionAsync"),i=E(t,"scores","nonMaxSuppressionAsync"),o=gl(s,i,n,r,a);n=o.maxOutputSize,r=o.iouThreshold,a=o.scoreThreshold;let l=await Promise.all([s.data(),i.data()]),c=l[0],u=l[1],{selectedIndices:h}=Dx(c,u,n,r,a);return s!==e&&s.dispose(),i!==t&&i.dispose(),an(h,"int32")}var VC=BC;function UC(e,t,n,r=.5,a=Number.NEGATIVE_INFINITY,s=0){let i=E(e,"boxes","nonMaxSuppression"),o=E(t,"scores","nonMaxSuppression"),l=gl(i,o,n,r,a,s);n=l.maxOutputSize,r=l.iouThreshold,a=l.scoreThreshold,s=l.softNmsSigma;let c={boxes:i,scores:o},u={maxOutputSize:n,iouThreshold:r,scoreThreshold:a,softNmsSigma:s},h=$.runKernel(Eo,c,u);return{selectedIndices:h[0],selectedScores:h[1]}}var jC=D({nonMaxSuppressionWithScore_:UC});async function HC(e,t,n,r=.5,a=Number.NEGATIVE_INFINITY,s=0){let i=E(e,"boxes","nonMaxSuppressionAsync"),o=E(t,"scores","nonMaxSuppressionAsync"),l=gl(i,o,n,r,a,s);n=l.maxOutputSize,r=l.iouThreshold,a=l.scoreThreshold,s=l.softNmsSigma;let c=await Promise.all([i.data(),o.data()]),u=c[0],h=c[1],{selectedIndices:d,selectedScores:p}=zx(u,h,n,r,a,s);return i!==e&&i.dispose(),o!==t&&o.dispose(),{selectedIndices:an(d,"int32"),selectedScores:an(p)}}var GC=HC;function qC(e,t,n,r=.5,a=Number.NEGATIVE_INFINITY,s=!1){let i=E(e,"boxes","nonMaxSuppression"),o=E(t,"scores","nonMaxSuppression"),l=gl(i,o,n,r,a,null),c=l.maxOutputSize,u=l.iouThreshold,h=l.scoreThreshold,d={boxes:i,scores:o},p={maxOutputSize:c,iouThreshold:u,scoreThreshold:h,padToMaxOutputSize:s},f=$.runKernel(Co,d,p);return{selectedIndices:f[0],validOutputs:f[1]}}var XC=D({nonMaxSuppressionPadded_:qC});async function KC(e,t,n,r=.5,a=Number.NEGATIVE_INFINITY,s=!1){let i=E(e,"boxes","nonMaxSuppressionAsync"),o=E(t,"scores","nonMaxSuppressionAsync"),l=gl(i,o,n,r,a,null),c=l.maxOutputSize,u=l.iouThreshold,h=l.scoreThreshold,[d,p]=await Promise.all([i.data(),o.data()]),{selectedIndices:f,validOutputs:m}=Ox(d,p,c,u,h,s);return i!==e&&i.dispose(),o!==t&&o.dispose(),{selectedIndices:an(f,"int32"),validOutputs:_e(m,"int32")}}var ZC=KC;function YC(e,t,n=!1,r=!1){let a=E(e,"images","resizeBilinear");M(a.rank===3||a.rank===4,()=>`Error in resizeBilinear: x must be rank 3 or 4, but got rank ${a.rank}.`),M(t.length===2,()=>`Error in resizeBilinear: new shape must 2D, but got shape ${t}.`),M(r===!1||n===!1,()=>"Error in resizeBilinear: If halfPixelCenters is true, alignCorners must be false.");let s=a,i=!1;a.rank===3&&(i=!0,s=H(a,[1,a.shape[0],a.shape[1],a.shape[2]]));let[]=t,o={images:s},l={alignCorners:n,halfPixelCenters:r,size:t},c=$.runKernel(Ps,o,l);return i?H(c,[c.shape[1],c.shape[2],c.shape[3]]):c}var Lx=D({resizeBilinear_:YC});function JC(e,t,n=!1,r=!1){let a=E(e,"images","resizeNearestNeighbor");M(a.rank===3||a.rank===4,()=>`Error in resizeNearestNeighbor: x must be rank 3 or 4, but got rank ${a.rank}.`),M(t.length===2,()=>`Error in resizeNearestNeighbor: new shape must 2D, but got shape ${t}.`),M(a.dtype==="float32"||a.dtype==="int32",()=>"`images` must have `int32` or `float32` as dtype"),M(r===!1||n===!1,()=>"Error in resizeNearestNeighbor: If halfPixelCenters is true, alignCorners must be false.");let s=a,i=!1;a.rank===3&&(i=!0,s=H(a,[1,a.shape[0],a.shape[1],a.shape[2]]));let[]=t,o={images:s},l={alignCorners:n,halfPixelCenters:r,size:t},c=$.runKernel(_u,o,l);return i?H(c,[c.shape[1],c.shape[2],c.shape[3]]):c}var Wx=D({resizeNearestNeighbor_:JC});function QC(e,t,n="nearest",r="constant",a=0,s){let i=E(e,"image","transform","float32"),o=E(t,"transforms","transform","float32");M(i.rank===4,()=>`Error in transform: image must be rank 4,but got rank ${i.rank}.`),M(o.rank===2&&(o.shape[0]===i.shape[0]||o.shape[0]===1)&&o.shape[1]===8,()=>"Error in transform: Input transform should be batch x 8 or 1 x 8"),M(s==null||s.length===2,()=>`Error in transform: outputShape must be [height, width] or null, but got ${s}.`);let l={image:i,transforms:o},c={interpolation:n,fillMode:r,fillValue:a,outputShape:s};return $.runKernel(Yh,l,c)}var eE=D({transform_:QC});function tE(e,t,n){M(t%1==0,()=>`bandPart(): numLower must be an integer, got ${t}.`),M(n%1==0,()=>`bandPart(): numUpper must be an integer, got ${n}.`);let r=E(e,"a","bandPart");M(r.rank>=2,()=>`bandPart(): Rank must be at least 2, got ${r.rank}.`);let a=r.shape,[s,i]=r.shape.slice(-2);if(!(t<=s))throw new Error(`bandPart(): numLower (${t}) must not be greater than the number of rows (${s}).`);if(!(n<=i))throw new Error(`bandPart(): numUpper (${n}) must not be greater than the number of columns (${i}).`);t<0&&(t=s),n<0&&(n=i);let o=H(Id(0,s,1,"int32"),[-1,1]),l=Id(0,i,1,"int32"),c=ye(o,l),u=ar(ui(c,_e(+t,"int32")),Da(c,_e(-n,"int32"))),h=Ct([s,i],r.dtype);return H(ln(sr(H(r,[-1,s,i])).map(d=>bn(u,d,h))),a)}var nE=D({bandPart_:tE});function rE(e){let t;if(Array.isArray(e)){t=!1,M(e!=null&&e.length>0,()=>"Gram-Schmidt process: input must not be null, undefined, or empty");let a=e[0].shape[0];for(let s=1;s`Gram-Schmidt: Non-unique lengths found in the input vectors: (${e[s].shape[0]} vs. ${a})`)}else t=!0,e=zt(e,e.shape[0],0).map(a=>Oa(a,[0]));M(e.length<=e[0].shape[0],()=>`Gram-Schmidt: Number of vectors (${e.length}) exceeds number of dimensions (${e[0].shape[0]}).`);let n=[],r=e;for(let a=0;a{let s=r[a];if(a>0)for(let i=0;i=2,()=>`qr() requires input tensor to have a rank >= 2, but got rank ${e.rank}`),e.rank===2)return Bx(e,t);{let n=e.shape.slice(0,e.shape.length-2).reduce((l,c)=>l*c),r=sr(H(e,[n,e.shape[e.shape.length-2],e.shape[e.shape.length-1]]),0),a=[],s=[];r.forEach(l=>{let[c,u]=Bx(l,t);a.push(c),s.push(u)});let i=H(ln(a,0),e.shape),o=H(ln(s,0),e.shape);return[i,o]}}function Bx(e,t=!1){return $.tidy(()=>{M(e.shape.length===2,()=>`qr2d() requires a 2D Tensor, but got a ${e.shape.length}D Tensor.`);let n=e.shape[0],r=e.shape[1],a=am(n),s=Er(e),i=_n([[1]],[1,1]),o=Er(i),l=n>=r?r:n;for(let c=0;c{let p=Ee(s,[c,c],[n-c,1]),f=zd(p),m=Ee(s,[c,c],[1,1]),A=bn(rr(m,0),_n([[-1]]),_n([[1]])),y=ye(m,P(A,f)),g=ge(p,y);g.shape[0]===1?o=Er(i):o=rt([i,Ee(g,[1,0],[g.shape[0]-1,g.shape[1]])],0);let w=_t(ge(Ge(A,y),f)),b=Ee(s,[c,0],[n-c,r]),_=P(w,o),x=nt(o);if(c===0)s=ye(b,Ge(_,Ge(x,b)));else{let C=ye(b,Ge(_,Ge(x,b)));s=rt([Ee(s,[0,0],[c,r]),C],0)}let N=nt(_),T=Ee(a,[0,c],[n,a.shape[1]-c]);if(c===0)a=ye(T,Ge(Ge(T,o),N));else{let C=ye(T,Ge(Ge(T,o),N));a=rt([Ee(a,[0,0],[n,c]),C],1)}return[o,s,a]}),Ie([u,h,d])}return!t&&n>r&&(a=Ee(a,[0,0],[n,r]),s=Ee(s,[0,0],[r,r])),[a,s]})}var iE=D({qr_:sE}),un;(function(e){e[e.NONE=0]="NONE",e[e.MEAN=1]="MEAN",e[e.SUM=2]="SUM",e[e.SUM_BY_NONZERO_WEIGHTS=3]="SUM_BY_NONZERO_WEIGHTS"})(un||(un={}));function oE(e,t,n=un.SUM_BY_NONZERO_WEIGHTS){let r=E(e,"losses","computeWeightedLoss"),a=null;t!=null&&(a=E(t,"weights","computeWeightedLoss"));let s=a==null?r:P(r,a);if(n===un.NONE)return s;if(n===un.SUM)return Ce(s);if(n===un.MEAN){if(a==null)return vt(s);{let i=r.size/a.size,o=ge(Ce(s),Ce(a));return i>1?ge(o,_e(i)):o}}if(n===un.SUM_BY_NONZERO_WEIGHTS){if(a==null)return ge(Ce(s),_e(r.size));{let i=P(a,Dr(r.shape)),o=me(Ce(hi(i,_e(0))),"float32");return ge(Ce(s),o)}}throw Error(`Unknown reduction: ${n}`)}var aa=D({computeWeightedLoss_:oE});function lE(e,t,n,r=un.SUM_BY_NONZERO_WEIGHTS){let a=E(e,"labels","absoluteDifference"),s=E(t,"predictions","absoluteDifference"),i=null;n!=null&&(i=E(n,"weights","absoluteDifference")),nn(a.shape,s.shape,"Error in absoluteDifference: ");let o=Dt(ye(a,s));return aa(o,i,r)}var uE=D({absoluteDifference_:lE});function cE(e,t,n,r,a=un.SUM_BY_NONZERO_WEIGHTS){let s=E(e,"labels","cosineDistance"),i=E(t,"predictions","cosineDistance"),o=null;r!=null&&(o=E(r,"weights","cosineDistance")),nn(s.shape,i.shape,"Error in cosineDistance: ");let l=_e(1),c=ye(l,Ce(P(s,i),n,!0));return aa(c,o,a)}var hE=D({cosineDistance_:cE});function dE(e,t,n,r=un.SUM_BY_NONZERO_WEIGHTS){let a=E(e,"labels","hingeLoss"),s=E(t,"predictions","hingeLoss"),i=null;n!=null&&(i=E(n,"weights","hingeLoss")),nn(a.shape,s.shape,"Error in hingeLoss: ");let o=_e(1);a=ye(P(_e(2),a),o);let l=Or(ye(o,P(a,s)));return aa(l,i,r)}var pE=D({hingeLoss_:dE});function fE(e,t,n,r=1,a=un.SUM_BY_NONZERO_WEIGHTS){let s=E(e,"labels","huberLoss"),i=E(t,"predictions","huberLoss"),o=null;n!=null&&(o=E(n,"weights","huberLoss")),nn(s.shape,i.shape,"Error in huberLoss: ");let l=_e(r),c=Dt(ye(i,s)),u=fl(c,l),h=ye(c,u),d=se(P(_e(.5),it(u)),P(l,h));return aa(d,o,a)}var mE=D({huberLoss_:fE});function AE(e,t,n,r=1e-7,a=un.SUM_BY_NONZERO_WEIGHTS){let s=E(e,"labels","logLoss"),i=E(t,"predictions","logLoss"),o=null;n!=null&&(o=E(n,"weights","logLoss")),nn(s.shape,i.shape,"Error in logLoss: ");let l=_e(1),c=_e(r),u=_t(P(s,En(se(i,c)))),h=P(ye(l,s),En(se(ye(l,i),c))),d=ye(u,h);return aa(d,o,a)}var yE=D({logLoss_:AE});function gE(e,t,n,r=un.SUM_BY_NONZERO_WEIGHTS){let a=E(e,"labels","meanSquaredError"),s=E(t,"predictions","meanSquaredError"),i=null;n!=null&&(i=E(n,"weights","meanSquaredError")),nn(a.shape,s.shape,"Error in meanSquaredError: ");let o=$d(a,s);return aa(o,i,r)}var xE=D({meanSquaredError_:gE});function wE(e,t){let n=E(e,"labels","sigmoidCrossEntropyWithLogits"),r=E(t,"logits","sigmoidCrossEntropyWithLogits");nn(n.shape,r.shape,"Error in sigmoidCrossEntropyWithLogits: ");let a=Or(r),s=P(r,n),i=xd(Gn(_t(Dt(r))));return se(ye(a,s),i)}function bE(e,t,n,r=0,a=un.SUM_BY_NONZERO_WEIGHTS){let s=E(e,"multiClassLabels","sigmoidCrossEntropy"),i=E(t,"logits","sigmoidCrossEntropy"),o=null;if(n!=null&&(o=E(n,"weights","sigmoidCrossEntropy")),nn(s.shape,i.shape,"Error in sigmoidCrossEntropy: "),r>0){let c=_e(r),u=_e(1),h=_e(.5);s=se(P(s,ye(u,c)),P(h,c))}let l=wE(s,i);return aa(l,o,a)}var _E=D({sigmoidCrossEntropy_:bE});function vE(e,t,n=-1){if(n===-1&&(n=t.rank-1),n!==t.rank-1)throw Error(`Softmax cross entropy along a non-last dimension is not yet supported. Labels / logits was rank ${t.rank} and dim was ${n}`);return Fr((r,a,s)=>{let i=lm(a,[n],!0),o=ye(me(a,"float32"),i);s([r,o]);let l=_t(P(o,r));return{value:Ce(l,[n]),gradFunc:(c,u)=>{let[h,d]=u,p=ci(c.shape,[n]);return[P(H(c,p),ye(me(h,"float32"),Gn(d))),P(H(c,p),ye(Gn(d),me(h,"float32")))]}}})(e,t)}function kE(e,t,n,r=0,a=un.SUM_BY_NONZERO_WEIGHTS){let s=E(e,"onehotLabels","softmaxCrossEntropy"),i=E(t,"logits","softmaxCrossEntropy"),o=null;if(n!=null&&(o=E(n,"weights","softmaxCrossEntropy")),nn(s.shape,i.shape,"Error in softmaxCrossEntropy: "),r>0){let c=_e(r),u=_e(1),h=_e(s.shape[1]);s=se(P(s,ye(u,c)),ge(c,h))}let l=vE(s,i);return aa(l,o,a)}var IE=D({softmaxCrossEntropy_:kE}),NE={fft:Qu,ifft:Al,rfft:ec,irfft:Fd},SE={hammingWindow:_C,hannWindow:Fx,frame:$x,stft:NC},We={flipLeftRight:EC,resizeNearestNeighbor:Wx,resizeBilinear:Lx,rotateWithOffset:MC,cropAndResize:TC,nonMaxSuppression:$C,nonMaxSuppressionAsync:VC,nonMaxSuppressionWithScore:jC,nonMaxSuppressionWithScoreAsync:GC,nonMaxSuppressionPadded:XC,nonMaxSuppressionPaddedAsync:ZC,transform:eE},Vx={bandPart:nE,gramSchmidt:aE,qr:iE},TE={absoluteDifference:uE,computeWeightedLoss:aa,cosineDistance:hE,hingeLoss:pE,huberLoss:mE,logLoss:yE,meanSquaredError:xE,sigmoidCrossEntropy:_E,softmaxCrossEntropy:IE},sa=class extends H5{minimize(e,t=!1,n){let{value:r,grads:a}=this.computeGradients(e,n);if(n!=null){let s=n.map(i=>({name:i.name,tensor:a[i.name]}));this.applyGradients(s)}else this.applyGradients(a);return Ie(a),t?r:(r.dispose(),null)}get iterations(){return this.iterations_==null&&(this.iterations_=0),this.iterations_}incrementIterations(){this.iterations_=this.iterations+1}computeGradients(e,t){return px(e,t)}dispose(){this.iterations_!=null&&Ie(this.iterations_)}async saveIterations(){return this.iterations_==null&&(this.iterations_=0),{name:"iter",tensor:_e(this.iterations_,"int32")}}async getWeights(){throw new Error("getWeights() is not implemented for this optimizer yet.")}async setWeights(e){throw new Error(`setWeights() is not implemented for this optimizer class ${this.getClassName()}`)}async extractIterations(e){return this.iterations_=(await e[0].tensor.data())[0],e.slice(1)}};Object.defineProperty(sa,Symbol.hasInstance,{value:e=>e.minimize!=null&&e.computeGradients!=null&&e.applyGradients!=null});var Vd=class extends sa{constructor(e,t,n=null){super();this.learningRate=e,this.rho=t,this.epsilon=n,this.accumulatedGrads=[],this.accumulatedUpdates=[],n==null&&(this.epsilon=$.backend.epsilon())}applyGradients(e){(Array.isArray(e)?e.map(t=>t.name):Object.keys(e)).forEach((t,n)=>{let r=$.registeredVariables[t],a=!1;this.accumulatedGrads[n]==null&&(this.accumulatedGrads[n]={originalName:`${t}/accum_grad`,variable:z(()=>je(r).variable(a))}),this.accumulatedUpdates[n]==null&&(this.accumulatedUpdates[n]={originalName:`${t}/accum_var`,variable:z(()=>je(r).variable(a))});let s=Array.isArray(e)?e[n].tensor:e[t];if(s==null)return;let i=this.accumulatedGrads[n].variable,o=this.accumulatedUpdates[n].variable;z(()=>{let l=se(P(i,this.rho),P(it(s),1-this.rho)),c=P(ge(Jt(se(o,this.epsilon)),Jt(se(i,this.epsilon))),s),u=se(P(o,this.rho),P(it(c),1-this.rho));i.assign(l),o.assign(u);let h=se(P(c,-this.learningRate),r);r.assign(h)})}),this.incrementIterations()}dispose(){this.accumulatedUpdates!=null&&(Ie(this.accumulatedGrads.map(e=>e.variable)),Ie(this.accumulatedUpdates.map(e=>e.variable)))}async getWeights(){let e=[...this.accumulatedGrads,...this.accumulatedUpdates];return[await this.saveIterations()].concat(e.map(t=>({name:t.originalName,tensor:t.variable})))}async setWeights(e){e=await this.extractIterations(e);let t=e.length/2,n=!1;this.accumulatedGrads=e.slice(0,t).map(r=>({originalName:r.name,variable:r.tensor.variable(n)})),this.accumulatedUpdates=e.slice(t,t*2).map(r=>({originalName:r.name,variable:r.tensor.variable(n)}))}getConfig(){return{learningRate:this.learningRate,rho:this.rho,epsilon:this.epsilon}}static fromConfig(e,t){return new e(t.learningRate,t.rho,t.epsilon)}};Vd.className="Adadelta";Ea(Vd);var Ud=class extends sa{constructor(e,t=.1){super();this.learningRate=e,this.initialAccumulatorValue=t,this.accumulatedGrads=[]}applyGradients(e){(Array.isArray(e)?e.map(t=>t.name):Object.keys(e)).forEach((t,n)=>{let r=$.registeredVariables[t];if(this.accumulatedGrads[n]==null){let i=!1;this.accumulatedGrads[n]={originalName:`${t}/accumulator`,variable:z(()=>ju(r.shape,this.initialAccumulatorValue).variable(i))}}let a=Array.isArray(e)?e[n].tensor:e[t];if(a==null)return;let s=this.accumulatedGrads[n].variable;z(()=>{let i=se(s,it(a));s.assign(i);let o=se(P(ge(a,Jt(se(i,$.backend.epsilon()))),-this.learningRate),r);r.assign(o)})}),this.incrementIterations()}dispose(){this.accumulatedGrads!=null&&Ie(this.accumulatedGrads.map(e=>e.variable))}async getWeights(){return[await this.saveIterations()].concat(this.accumulatedGrads.map(e=>({name:e.originalName,tensor:e.variable})))}async setWeights(e){e=await this.extractIterations(e);let t=!1;this.accumulatedGrads=e.map(n=>({originalName:n.name,variable:n.tensor.variable(t)}))}getConfig(){return{learningRate:this.learningRate,initialAccumulatorValue:this.initialAccumulatorValue}}static fromConfig(e,t){return new e(t.learningRate,t.initialAccumulatorValue)}};Ud.className="Adagrad";Ea(Ud);var jd=class extends sa{constructor(e,t,n,r=null){super();this.learningRate=e,this.beta1=t,this.beta2=n,this.epsilon=r,this.accumulatedFirstMoment=[],this.accumulatedSecondMoment=[],z(()=>{this.accBeta1=_e(t).variable(),this.accBeta2=_e(n).variable()}),r==null&&(this.epsilon=$.backend.epsilon())}applyGradients(e){let t=Array.isArray(e)?e.map(n=>n.name):Object.keys(e);z(()=>{let n=ye(1,this.accBeta1),r=ye(1,this.accBeta2);t.forEach((a,s)=>{let i=$.registeredVariables[a],o=!1;this.accumulatedFirstMoment[s]==null&&(this.accumulatedFirstMoment[s]={originalName:`${a}/m`,variable:z(()=>je(i).variable(o))}),this.accumulatedSecondMoment[s]==null&&(this.accumulatedSecondMoment[s]={originalName:`${a}/v`,variable:z(()=>je(i).variable(o))});let l=Array.isArray(e)?e[s].tensor:e[a];if(l==null)return;let c=this.accumulatedFirstMoment[s].variable,u=this.accumulatedSecondMoment[s].variable,h=se(P(c,this.beta1),P(l,1-this.beta1)),d=se(P(u,this.beta2),P(it(l),1-this.beta2)),p=ge(h,n),f=ge(d,r);c.assign(h),u.assign(d);let m=se(P(ge(p,se(Jt(f),this.epsilon)),-this.learningRate),i);i.assign(m)}),this.accBeta1.assign(P(this.accBeta1,this.beta1)),this.accBeta2.assign(P(this.accBeta2,this.beta2))}),this.incrementIterations()}dispose(){this.accBeta1.dispose(),this.accBeta2.dispose(),this.accumulatedFirstMoment!=null&&Ie(this.accumulatedFirstMoment.map(e=>e.variable)),this.accumulatedSecondMoment!=null&&Ie(this.accumulatedSecondMoment.map(e=>e.variable))}async getWeights(){let e=[...this.accumulatedFirstMoment,...this.accumulatedSecondMoment];return[await this.saveIterations()].concat(e.map(t=>({name:t.originalName,tensor:t.variable})))}async setWeights(e){e=await this.extractIterations(e),z(()=>{this.accBeta1.assign(ra(this.beta1,this.iterations_+1)),this.accBeta2.assign(ra(this.beta2,this.iterations_+1))});let t=e.length/2,n=!1;this.accumulatedFirstMoment=e.slice(0,t).map(r=>({originalName:r.name,variable:r.tensor.variable(n)})),this.accumulatedSecondMoment=e.slice(t,t*2).map(r=>({originalName:r.name,variable:r.tensor.variable(n)}))}getConfig(){return{learningRate:this.learningRate,beta1:this.beta1,beta2:this.beta2,epsilon:this.epsilon}}static fromConfig(e,t){return new e(t.learningRate,t.beta1,t.beta2,t.epsilon)}};jd.className="Adam";Ea(jd);var Hd=class extends sa{constructor(e,t,n,r=null,a=0){super();this.learningRate=e,this.beta1=t,this.beta2=n,this.epsilon=r,this.decay=a,this.accumulatedFirstMoment=[],this.accumulatedWeightedInfNorm=[],z(()=>{this.iteration=_e(0).variable(),this.accBeta1=_e(t).variable()}),r==null&&(this.epsilon=$.backend.epsilon())}applyGradients(e){let t=Array.isArray(e)?e.map(n=>n.name):Object.keys(e);z(()=>{let n=ye(1,this.accBeta1),r=ge(-this.learningRate,se(P(this.iteration,this.decay),1));t.forEach((a,s)=>{let i=$.registeredVariables[a],o=!1;this.accumulatedFirstMoment[s]==null&&(this.accumulatedFirstMoment[s]={originalName:`${a}/m`,variable:je(i).variable(o)}),this.accumulatedWeightedInfNorm[s]==null&&(this.accumulatedWeightedInfNorm[s]={originalName:`${a}/v`,variable:je(i).variable(o)});let l=Array.isArray(e)?e[s].tensor:e[a];if(l==null)return;let c=this.accumulatedFirstMoment[s].variable,u=this.accumulatedWeightedInfNorm[s].variable,h=se(P(c,this.beta1),P(l,1-this.beta1)),d=P(u,this.beta2),p=Dt(l),f=$r(d,p);c.assign(h),u.assign(f);let m=se(P(ge(r,n),ge(h,se(f,this.epsilon))),i);i.assign(m)}),this.iteration.assign(se(this.iteration,1)),this.accBeta1.assign(P(this.accBeta1,this.beta1))}),this.incrementIterations()}dispose(){this.accBeta1.dispose(),this.iteration.dispose(),this.accumulatedFirstMoment!=null&&Ie(this.accumulatedFirstMoment.map(e=>e.variable)),this.accumulatedWeightedInfNorm!=null&&Ie(this.accumulatedWeightedInfNorm.map(e=>e.variable))}async getWeights(){throw new Error("getWeights() is not implemented for Adamax yet.")}async setWeights(e){throw new Error("setWeights() is not implemented for Adamax yet.")}getConfig(){return{learningRate:this.learningRate,beta1:this.beta1,beta2:this.beta2,epsilon:this.epsilon,decay:this.decay}}static fromConfig(e,t){return new e(t.learningRate,t.beta1,t.beta2,t.epsilon,t.decay)}};Hd.className="Adamax";Ea(Hd);var tc=class extends sa{constructor(e){super();this.learningRate=e,this.setLearningRate(e)}applyGradients(e){(Array.isArray(e)?e.map(t=>t.name):Object.keys(e)).forEach((t,n)=>{let r=Array.isArray(e)?e[n].tensor:e[t];if(r==null)return;let a=$.registeredVariables[t];z(()=>{let s=se(P(this.c,r),a);a.assign(s)})}),this.incrementIterations()}setLearningRate(e){this.learningRate=e,this.c!=null&&this.c.dispose(),this.c=Ut(_e(-e))}dispose(){this.c.dispose()}async getWeights(){return[await this.saveIterations()]}async setWeights(e){if(e=await this.extractIterations(e),e.length!==0)throw new Error("SGD optimizer does not have settable weights.")}getConfig(){return{learningRate:this.learningRate}}static fromConfig(e,t){return new e(t.learningRate)}};tc.className="SGD";Ea(tc);var Gd=class extends tc{constructor(e,t,n=!1){super(e);this.learningRate=e,this.momentum=t,this.useNesterov=n,this.accumulations=[],this.m=_e(this.momentum)}applyGradients(e){(Array.isArray(e)?e.map(t=>t.name):Object.keys(e)).forEach((t,n)=>{let r=$.registeredVariables[t];if(this.accumulations[n]==null){let i=!1;this.accumulations[n]={originalName:`${t}/momentum`,variable:z(()=>je(r).variable(i))}}let a=this.accumulations[n].variable,s=Array.isArray(e)?e[n].tensor:e[t];s!=null&&z(()=>{let i,o=se(P(this.m,a),s);this.useNesterov?i=se(P(this.c,se(s,P(o,this.m))),r):i=se(P(this.c,o),r),a.assign(o),r.assign(i)})}),this.incrementIterations()}dispose(){this.m.dispose(),this.accumulations!=null&&Ie(this.accumulations.map(e=>e.variable))}setMomentum(e){this.momentum=e}async getWeights(){return[await this.saveIterations()].concat(this.accumulations.map(e=>({name:e.originalName,tensor:e.variable})))}async setWeights(e){e=await this.extractIterations(e);let t=!1;this.accumulations=e.map(n=>({originalName:n.name,variable:n.tensor.variable(t)}))}getConfig(){return{learningRate:this.learningRate,momentum:this.momentum,useNesterov:this.useNesterov}}static fromConfig(e,t){return new e(t.learningRate,t.momentum,t.useNesterov)}};Gd.className="Momentum";Ea(Gd);var qd=class extends sa{constructor(e,t=.9,n=0,r=null,a=!1){super();if(this.learningRate=e,this.decay=t,this.momentum=n,this.epsilon=r,this.accumulatedMeanSquares=[],this.accumulatedMoments=[],this.accumulatedMeanGrads=[],this.centered=a,r==null&&(this.epsilon=$.backend.epsilon()),e==null)throw new Error("learningRate for RMSPropOptimizer must be defined.")}applyGradients(e){(Array.isArray(e)?e.map(t=>t.name):Object.keys(e)).forEach((t,n)=>{let r=$.registeredVariables[t],a=!1;this.accumulatedMeanSquares[n]==null&&(this.accumulatedMeanSquares[n]={originalName:`${t}/rms`,variable:z(()=>je(r).variable(a))}),this.accumulatedMoments[n]==null&&(this.accumulatedMoments[n]={originalName:`${t}/momentum`,variable:z(()=>je(r).variable(a))}),this.accumulatedMeanGrads[n]==null&&this.centered&&(this.accumulatedMeanGrads[n]={originalName:`${t}/mg`,variable:z(()=>je(r).variable(a))});let s=Array.isArray(e)?e[n].tensor:e[t];if(s==null)return;let i=this.accumulatedMeanSquares[n].variable,o=this.accumulatedMoments[n].variable;z(()=>{let l=se(P(i,this.decay),P(it(s),1-this.decay));if(this.centered){let c=this.accumulatedMeanGrads[n].variable,u=se(P(c,this.decay),P(s,1-this.decay)),h=ge(P(s,this.learningRate),Jt(ye(l,se(it(u),this.epsilon)))),d=se(P(o,this.momentum),h);i.assign(l),c.assign(u),o.assign(d);let p=ye(r,d);r.assign(p)}else{let c=se(P(i,this.decay),P(it(s),1-this.decay)),u=se(P(o,this.momentum),ge(P(s,this.learningRate),Jt(se(c,this.epsilon))));i.assign(c),o.assign(u);let h=ye(r,u);r.assign(h)}})}),this.incrementIterations()}dispose(){this.accumulatedMeanSquares!=null&&Ie(this.accumulatedMeanSquares.map(e=>e.variable)),this.accumulatedMeanGrads!=null&&this.centered&&Ie(this.accumulatedMeanGrads.map(e=>e.variable)),this.accumulatedMoments!=null&&Ie(this.accumulatedMoments.map(e=>e.variable))}async getWeights(){let e=[...this.accumulatedMeanSquares,...this.accumulatedMoments];return this.centered&&e.push(...this.accumulatedMeanGrads),[await this.saveIterations()].concat(e.map(t=>({name:t.originalName,tensor:t.variable})))}async setWeights(e){e=await this.extractIterations(e);let t=this.centered?e.length/3:e.length/2,n=!1;this.accumulatedMeanSquares=e.slice(0,t).map(r=>({originalName:r.name,variable:r.tensor.variable(n)})),this.accumulatedMoments=e.slice(t,t*2).map(r=>({originalName:r.name,variable:r.tensor.variable(n)})),this.centered&&(this.accumulatedMeanGrads=e.slice(t*2,t*3).map(r=>({originalName:r.name,variable:r.tensor.variable(n)})))}getConfig(){return{learningRate:this.learningRate,decay:this.decay,momentum:this.momentum,epsilon:this.epsilon,centered:this.centered}}static fromConfig(e,t){return new e(t.learningRate,t.decay,t.momentum,t.epsilon,t.centered)}};qd.className="RMSProp";Ea(qd);var di=class{static sgd(e){return new tc(e)}static momentum(e,t,n=!1){return new Gd(e,t,n)}static rmsprop(e,t=.9,n=0,r=null,a=!1){return new qd(e,t,n,r,a)}static adam(e=.001,t=.9,n=.999,r=null){return new jd(e,t,n,r)}static adadelta(e=.001,t=.95,n=null){return new Vd(e,t,n)}static adamax(e=.002,t=.9,n=.999,r=null,a=0){return new Hd(e,t,n,r,a)}static adagrad(e,t=.1){return new Ud(e,t)}},pi={sgd:di.sgd,momentum:di.momentum,adadelta:di.adadelta,adagrad:di.adagrad,rmsprop:di.rmsprop,adamax:di.adamax,adam:di.adam},CE=(()=>typeof requestAnimationFrame!="undefined"?requestAnimationFrame:typeof setImmediate!="undefined"?setImmediate:e=>e())();function Xd(){return new Promise(e=>CE(()=>e()))}var R={};Oe(R,{ERF_A1:()=>WE,ERF_A2:()=>BE,ERF_A3:()=>VE,ERF_A4:()=>UE,ERF_A5:()=>jE,ERF_P:()=>LE,PARALLELIZE_THRESHOLD:()=>Tm,SELU_SCALE:()=>jx,SELU_SCALEALPHA:()=>Ux,applyActivation:()=>Wd,assertAndGetBroadcastShape:()=>ft,assertAxesAreInnerMostDims:()=>hS,assertParamsConsistent:()=>EE,assignToTypedArray:()=>JE,axesAreInnerMostDims:()=>im,calculateShapes:()=>F5,combineLocations:()=>mx,complexWithEvenIndex:()=>KE,complexWithOddIndex:()=>ZE,computeConv2DInfo:()=>Lu,computeConv3DInfo:()=>J5,computeDefaultPad:()=>Xf,computeDilation2DInfo:()=>DI,computeOptimalWindowSize:()=>ME,computeOutAndReduceShapes:()=>Ax,computeOutShape:()=>RE,computePool2DInfo:()=>Y5,computePool3DInfo:()=>OI,convertConv2DDataFormat:()=>Z5,eitherStridesOrDilationsAreOne:()=>Mr,expandShapeToKeepDim:()=>ci,exponent:()=>eR,exponents:()=>QE,fromStringArrayToUint8:()=>rR,fromUint8ToStringArray:()=>nR,getAxesPermutation:()=>yx,getBroadcastDims:()=>SN,getComplexWithIndex:()=>YE,getFusedBiasGradient:()=>Ld,getFusedDyActivation:()=>Pd,getImageCenter:()=>FE,getInnerMostAxes:()=>dS,getPermuted:()=>DE,getReductionAxes:()=>Ot,getReshaped:()=>$E,getReshapedPermuted:()=>OE,getSliceBeginCoords:()=>zE,getSliceSize:()=>PE,getUndoAxesPermutation:()=>om,log:()=>GE,mergeRealAndImagArrays:()=>qE,prepareAndValidate:()=>M5,prepareSplitSize:()=>tR,segment_util:()=>Hx,shouldFuse:()=>Bd,slice_util:()=>on,splitRealAndImagArrays:()=>XE,tupleValuesAreOne:()=>Ma,upcastType:()=>nr,validateInput:()=>Ff,validateUpdateShape:()=>Mf,warn:()=>HE});function EE(e,t){let n=e[0].length;e.forEach((a,s)=>{M(a.length===n,()=>`Error in concat${n}D: rank of tensors[${s}] must be the same as the rank of the rest (${n})`)}),M(t>=0&&t`Error in concat${n}D: axis must be between 0 and ${n-1}.`);let r=e[0];e.forEach((a,s)=>{for(let i=0;i`Error in concat${n}D: Shape of tensors[${s}] (${a}) does not match the shape of the rest (${r}) along the non-concatenated axis ${s}.`)})}function RE(e,t){let n=e[0].slice();for(let r=1;r=t*2+1||i%2==1?s.push(i):a.push(i);r.push(...a),r.push(0),r.push(...s)}return r}function OE(e,t,n,r=!0){let a=[];r?a.push(e[0]/n):a.push(e[0]*n);for(let s=1;s"Number of splits must evenly divide the axis."),r=new Array(t).fill(e.shape[n]/t);else{let a=t.reduce((i,o)=>(o===-1&&(i+=1),i),0);M(a<=1,()=>"There should be only one negative value in split array.");let s=t.indexOf(-1);if(s!==-1){let i=t.reduce((o,l)=>l>0?o+l:o);t[s]=e.shape[n]-i}M(e.shape[n]===t.reduce((i,o)=>i+o),()=>"The sum of sizes must match the size of the axis dimension."),r=t}return r}var Hx={};Oe(Hx,{collectGatherOpShapeInfo:()=>iR,computeOutShape:()=>sR,segOpComputeOptimalWindowSize:()=>aR});function aR(e,t){let n=!1,r;for(e<=Tm?(r=e,n=!0):r=wh(e,Math.floor(Math.sqrt(e)));!n;)r>t||r===e?n=!0:r=wh(e,r+1);return r}function sR(e,t,n){let r=[],a=e.length;for(let s=0;sa))throw new Error(`Expect batchDims in the range of [-${a}, ${a}], but got ${r}`);if(r<0&&(r+=a),r>s)throw new Error(`batchDims (${r}) must be less than rank(x) ( - ${s}).`);if(nnd(t))}catch(t){throw new Error(`Failed to decode encoded string bytes into utf-8, error: ${t}`)}}function rR(e){return e.map(t=>Tu(t))}var zr={};Oe(zr,{nonMaxSuppressionV3Impl:()=>Dx,nonMaxSuppressionV4Impl:()=>Ox,nonMaxSuppressionV5Impl:()=>zx,whereImpl:()=>Ix});function be(e,t){Array.isArray(e)||(e=[e]),e.forEach(n=>{n!=null&&v.assert(n.dtype!=="complex64",()=>`${t} does not support complex64 tensors in the CPU backend.`)})}var oR=zr.whereImpl,Kd=class extends iu{constructor(){super();this.blockSize=48,this.firstUse=!0,this.data=new gh(this,Rr())}nextDataId(){return Kd.nextDataId++}write(e,t,n){this.firstUse&&(this.firstUse=!1,J().get("IS_NODE")&&R.warn(` -============================ -Hi there \u{1F44B}. Looks like you are running TensorFlow.js in Node.js. To speed things up dramatically, install our node backend, which binds to TensorFlow C++, by running npm i @tensorflow/tfjs-node, or npm i @tensorflow/tfjs-node-gpu if you have CUDA. Then call require('@tensorflow/tfjs-node'); (-gpu suffix for CUDA) at the start of your program. Visit https://github.com/tensorflow/tfjs-node for more details. -============================`));let r={id:this.nextDataId()};return this.data.set(r,{values:e,dtype:n,refCount:1}),r}makeTensorInfo(e,t,n){let r;if(t==="string"&&n!=null&&n.length>0&&v.isString(n[0])){let a=n.map(s=>v.encodeString(s));r=this.write(a,e,t)}else r=this.write(n,e,t);return{dataId:r,shape:e,dtype:t}}refCount(e){return this.data.has(e)?this.data.get(e).refCount:0}incRef(e){let t=this.data.get(e);t.refCount++}decRef(e){if(this.data.has(e)){let t=this.data.get(e);t.refCount--}}move(e,t,n,r,a){this.data.set(e,{values:t,dtype:r,refCount:a})}numDataIds(){return this.data.numDataIds()}async read(e){return this.readSync(e)}readSync(e){let{dtype:t,complexTensorInfos:n}=this.data.get(e);if(t==="complex64"){let r=this.readSync(n.real.dataId),a=this.readSync(n.imag.dataId);return R.mergeRealAndImagArrays(r,a)}return this.data.get(e).values}bufferSync(e){let t=this.readSync(e.dataId),n=t;if(e.dtype==="string")try{n=t.map(r=>v.decodeString(r))}catch(r){throw new Error("Failed to decode encoded string bytes into utf-8")}return Le(e.shape,e.dtype,n)}makeOutput(e,t,n){let r=this.write(e,t,n);return Rr().makeTensorFromDataId(r,t,n,this)}disposeData(e,t=!1){if(this.data.has(e)){if(this.data.get(e).refCount--,!t&&this.data.get(e).refCount>0)return!1;let{complexTensorInfos:n}=this.data.get(e);n!=null&&(this.disposeData(n.real.dataId,!0),this.disposeData(n.imag.dataId,!0)),this.data.delete(e)}return!0}disposeIntermediateTensorInfo(e){this.disposeData(e.dataId)}async time(e){let t=v.now();return e(),{kernelMs:v.now()-t}}memory(){return{unreliable:!0,reasons:["The reported memory is an upper bound. Due to automatic garbage collection, the true allocated memory may be less."]}}where(e){be([e],"where");let t=this.readSync(e.dataId);return oR(e.shape,t)}dispose(){}floatPrecision(){return 32}epsilon(){return super.epsilon()}};Kd.nextDataId=0;var Cm={};Oe(Cm,{addImpl:()=>qx,bincountImpl:()=>Em,bincountReduceImpl:()=>Xx,ceilImpl:()=>Kx,concatImpl:()=>Rm,expImpl:()=>Zx,expm1Impl:()=>Yx,floorImpl:()=>Jx,gatherV2Impl:()=>Qx,greaterImpl:()=>ew,lessImpl:()=>tw,linSpaceImpl:()=>nw,logImpl:()=>rw,maxImpl:()=>aw,maximumImpl:()=>sw,minimumImpl:()=>iw,multiplyImpl:()=>Mm,negImpl:()=>ow,notEqualImpl:()=>lw,prodImpl:()=>uw,rangeImpl:()=>$m,rsqrtImpl:()=>cw,simpleAbsImpl:()=>Gx,sliceImpl:()=>Zd,squaredDifferenceImpl:()=>hw,stridedSliceImpl:()=>dw,subImpl:()=>pw,tileImpl:()=>fw,topKImpl:()=>mw,transposeImpl:()=>Fm,uniqueImpl:()=>Aw});function Gx(e){let t=new Float32Array(e.length);for(let n=0;n{let{x:t}=e.inputs,n=e.backend;be(t,"abs");let r=new Float32Array(v.sizeFromShape(t.shape)),a=n.data.get(t.dataId).values;return r=Gx(a),n.makeOutput(r,t.shape,"float32")},uR={kernelName:Zi,backendName:"cpu",kernelFunc:lR};function Et(e){return(t,n,r,a,s)=>{let i=R.assertAndGetBroadcastShape(t,n),o=i.length,l=v.computeStrides(i),c=v.sizeFromShape(i),u=v.getTypedArrayFromDType(s,c),h=t.length,d=n.length,p=v.computeStrides(t),f=v.computeStrides(n),m=R.getBroadcastDims(t,i),A=R.getBroadcastDims(n,i);if(m.length+A.length===0)for(let y=0;yw[N]=0);let b=v.locToIndex(w,h,p),_=g.slice(-d);A.forEach(N=>_[N]=0);let x=v.locToIndex(_,d,f);u[y]=e(r[b],a[x])}return[u,i]}}function Fn(e){let{inputs:t,backend:n}=e,{real:r,imag:a}=t,s=n.data.get(r.dataId).values,i=n.data.get(a.dataId).values,o=n.makeTensorInfo(r.shape,"complex64"),l=n.data.get(o.dataId);return l.complexTensorInfos={real:n.makeTensorInfo(r.shape,"float32",s),imag:n.makeTensorInfo(a.shape,"float32",i)},o}var cR={kernelName:Sh,backendName:"cpu",kernelFunc:Fn};function Yd(e,t,n="float32"){if(n==="complex64"){let a=Yd(e,t,"float32"),s=Yd(e,t,"float32");return Fn({inputs:{real:a,imag:s},backend:e})}let r=v.makeZerosTypedArray(v.sizeFromShape(t),n);return e.makeTensorInfo(t,n,r)}function Pr(e){let{inputs:t,backend:n}=e,{x:r}=t;return n.incRef(r.dataId),{dataId:r.dataId,shape:r.shape,dtype:r.dtype}}var hR={kernelName:vs,backendName:"cpu",kernelFunc:Pr};function fi(e){let{inputs:t,backend:n}=e,{input:r}=t,a=n.data.get(r.dataId).complexTensorInfos.real,s=n.data.get(a.dataId).values;return n.makeTensorInfo(a.shape,a.dtype,s)}var dR={kernelName:qh,backendName:"cpu",kernelFunc:fi};function Pa(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{dtype:s}=r;if(s==="complex64"){if(a.dtype==="complex64")return Pr({inputs:{x:a},backend:n});let i=Yd(n,a.shape,a.dtype),o=Pa({inputs:{x:a},backend:n,attrs:{dtype:"float32"}}),l=Fn({inputs:{real:o,imag:i},backend:n});return n.disposeIntermediateTensorInfo(i),n.disposeIntermediateTensorInfo(o),l}if(a.dtype==="complex64"){let i=fi({inputs:{input:a},backend:n}),o=Pa({inputs:{x:i},backend:n,attrs:{dtype:s}});return n.disposeIntermediateTensorInfo(i),o}if(!v.hasEncodingLoss(a.dtype,s)){let i=Pr({inputs:{x:a},backend:n});return{dataId:i.dataId,shape:i.shape,dtype:s}}if(s==="int32"){let i=n.data.get(a.dataId).values,o=Int32Array.from(i);return n.makeTensorInfo(a.shape,"int32",o)}if(s==="bool"){let i=n.data.get(a.dataId).values,o=v.toTypedArray([0],a.dtype),[l,c]=Et((u,h)=>u!==h?1:0)(a.shape,[],i,o,"bool");return n.makeTensorInfo(c,"bool",l)}throw new Error(`Error in Cast: failed to cast ${a.dtype} to ${s}`)}var pR={kernelName:cs,backendName:"cpu",kernelFunc:Pa};function jt(e,t,n,r){return n==null?({inputs:a,backend:s})=>{let{a:i,b:o}=a,l=s;be([i,o],e);let c=l.data.get(i.dataId).values,u=l.data.get(o.dataId).values,h=r||i.dtype,[d,p]=t(i.shape,o.shape,c,u,h);return l.makeTensorInfo(p,h,d)}:({inputs:a,backend:s})=>{let{a:i,b:o}=a,l=s;if(i.dtype==="complex64"||o.dtype==="complex64"){let c=Pa({inputs:{x:i},backend:l,attrs:{dtype:"complex64"}}),u=l.data.get(c.dataId),h=u.complexTensorInfos.real,d=u.complexTensorInfos.imag,p=l.data.get(h.dataId).values,f=l.data.get(d.dataId).values,m=Pa({inputs:{x:o},backend:l,attrs:{dtype:"complex64"}}),A=l.data.get(m.dataId),y=A.complexTensorInfos.real,g=A.complexTensorInfos.imag,w=l.data.get(y.dataId).values,b=l.data.get(g.dataId).values,[_,x,N]=n(i.shape,o.shape,p,f,w,b),T=l.makeTensorInfo(N,"float32",_),C=l.makeTensorInfo(N,"float32",x),F=Fn({inputs:{real:T,imag:C},backend:l});return l.disposeIntermediateTensorInfo(c),l.disposeIntermediateTensorInfo(m),l.disposeIntermediateTensorInfo(T),l.disposeIntermediateTensorInfo(C),F}else{let c=l.data.get(i.dataId).values,u=l.data.get(o.dataId).values,h=r||i.dtype,[d,p]=t(i.shape,o.shape,c,u,h);return l.makeTensorInfo(p,h,d)}}}function Dm(e){return(t,n,r,a,s,i)=>{let o=R.assertAndGetBroadcastShape(t,n),l=v.sizeFromShape(o),c=o.length,u=v.computeStrides(o),h=v.getTypedArrayFromDType("float32",l),d=v.getTypedArrayFromDType("float32",l),p=R.getBroadcastDims(t,o),f=R.getBroadcastDims(n,o),m=R.mergeRealAndImagArrays(r,a),A=R.mergeRealAndImagArrays(s,i),y=t.length,g=v.computeStrides(t),w=n.length,b=v.computeStrides(n);if(p.length+f.length===0)for(let _=0;_N[W]=0);let T=v.locToIndex(N,y,g),C=x.slice(-w);f.forEach(W=>C[W]=0);let F=v.locToIndex(C,w,b),O=e(m[T*2],m[T*2+1],A[F*2],A[F*2+1]);h[_]=O.real,d[_]=O.imag}return[h,d,o]}}var qx=Et((e,t)=>e+t),fR=Dm((e,t,n,r)=>({real:e+n,imag:t+r})),nc=jt(va,qx,fR),mR={kernelName:va,backendName:"cpu",kernelFunc:nc};function Em(e,t,n,r,a){let s=v.sizeFromShape(r),i=v.makeZerosTypedArray(a,n);for(let o=0;o=a||(s>0?i[l]+=t[o]:i[l]+=1)}return i}function Xx(e,t,n,r=!1){let a=e.shape[0],s=e.shape[1],i=Le([a,n],t.dtype);for(let o=0;o=n||(r?i.set(1,o,c):t.size>0?i.set(i.get(o,c)+t.get(o,l),o,c):i.set(i.get(o,c)+1,o,c))}return i}function xl(e){return(t,n,r)=>{let a=v.getTypedArrayFromDType(n,t.length);for(let s=0;s{let{x:i}=r;if(be(i,e),i.dtype==="string"||n==="string")throw new Error("unaryKernelFunc does not support string input/output");let o=s,l=o.data.get(i.dataId).values,c=v.sizeFromShape(i.shape),u=n||i.dtype,h=v.getArrayFromDType(u,c);for(let d=0;d{let{x:i}=r;if(be(i,e),i.dtype==="string"||n==="string")throw new Error("unaryKernelFunc does not support string input/output");let o=s,l=o.data.get(i.dataId).values,c=n||i.dtype,u=t(l,c,a);return o.makeTensorInfo(i.shape,c,u)}}var Kx=xl(e=>Math.ceil(e)),AR=wl(hs,Kx),yR={kernelName:hs,backendName:"cpu",kernelFunc:AR};function Rm(e,t,n,r){let a=v.getArrayFromDType(n,v.sizeFromShape(t));if(r&&n!=="string"){let s=0;e.forEach(i=>{let o=v.sizeFromShape(i.shape);a.set(i.vals,s),s+=o})}else{let s=0;e.forEach(i=>{let o=n==="string"?R.fromUint8ToStringArray(i.vals):i.vals,l=0;for(let c=0;cMath.exp(e)),yw=wl(gs,Zx),gR={kernelName:gs,backendName:"cpu",kernelFunc:yw},Yx=xl(e=>Math.expm1(e)),xR=wl(po,Yx),wR={kernelName:po,backendName:"cpu",kernelFunc:xR},Jx=xl(e=>Math.floor(e)),bR=wl(xs,Jx),_R={kernelName:xs,backendName:"cpu",kernelFunc:bR};function Qx(e,t,n){let r=Le(n,e.dtype);for(let a=0;ae>t?1:0),vR=jt(yo,ew,null,"bool"),kR={kernelName:yo,backendName:"cpu",kernelFunc:vR},tw=Et((e,t)=>eMath.log(e)),SR=wl(Is,rw),TR={kernelName:Is,backendName:"cpu",kernelFunc:SR};function aw(e,t,n,r){let a=v.getTypedArrayFromDType(r,v.sizeFromShape(n));for(let s=0;so&&(o=c)}a[s]=o}return a}var sw=Et((e,t)=>Math.max(e,t)),CR=jt(Ss,sw),ER={kernelName:Ss,backendName:"cpu",kernelFunc:CR},iw=Et((e,t)=>Math.min(e,t)),RR=jt(Rs,iw),MR={kernelName:Rs,backendName:"cpu",kernelFunc:RR},Mm=Et((e,t)=>e*t),FR=Dm((e,t,n,r)=>({real:e*n-t*r,imag:e*r+t*n})),Om=jt(Ms,Mm,FR),$R={kernelName:Ms,backendName:"cpu",kernelFunc:Om};function ow(e,t,n){let r=v.createScalarValue(-1,n);return Mm([],t,r,e,n)}function DR(e){let{inputs:t,backend:n}=e,{x:r}=t;be(r,"neg");let a=n.data.get(r.dataId).values,[s,i]=ow(a,r.shape,r.dtype);return n.makeTensorInfo(i,r.dtype,s)}var OR={kernelName:No,backendName:"cpu",kernelFunc:DR},lw=Et((e,t)=>e!==t?1:0),zR=jt(So,lw,null,"bool"),PR={kernelName:So,backendName:"cpu",kernelFunc:zR};function Fm(e,t,n,r,a){let s=t.length,i=v.sizeFromShape(t),o=v.computeStrides(t),l=v.computeStrides(a),c=v.getTypedArrayFromDType(n,v.sizeFromShape(a));for(let u=0;un.disposeIntermediateTensorInfo(g)),n.makeTensorInfo(y,A,f)}var BR={kernelName:Fo,backendName:"cpu",kernelFunc:WR};function $m(e,t,n,r){let a=e===t,s=e1;if(a||s||i)return v.makeZerosTypedArray(0,r);let o=Math.abs(Math.ceil((t-e)/n)),l=v.makeZerosTypedArray(o,r);t1/Math.sqrt(e)),VR=wl(Vs,cw),UR={kernelName:Vs,backendName:"cpu",kernelFunc:VR};function Zd(e,t,n,r,a){let s=on.isSliceContinous(r,t,n),i=v.sizeFromShape(n),o=v.computeStrides(r);if(s){let h=on.computeFlatOffset(t,o);return a==="string"?e.slice(h,h+i):e.subarray(h,h+i)}let l=a==="string"?R.fromUint8ToStringArray(e):e,c=Le(r,a,l),u=Le(n,a);for(let h=0;hf+t[m]);u.set(c.get(...p),...d)}return a==="string"?R.fromStringArrayToUint8(u.values):u.values}function mi(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{begin:s,size:i}=r;be(a,"slice");let[o,l]=on.parseSliceParams(a,s,i);on.assertParamsValid(a,o,l);let c=n.data.get(a.dataId).values,u=Zd(c,o,l,a.shape,a.dtype);return n.makeTensorInfo(l,a.dtype,u)}var jR={kernelName:Lo,backendName:"cpu",kernelFunc:mi},hw=Et((e,t)=>{let n=e-t;return n*n}),HR=jt(Xs,hw),GR={kernelName:Xs,backendName:"cpu",kernelFunc:HR};function dw(e,t,n,r){let a=Le(e,t.dtype);for(let s=0;se-t),qR=Dm((e,t,n,r)=>({real:e-n,imag:t-r})),zm=jt(Ks,pw,qR),XR={kernelName:Ks,backendName:"cpu",kernelFunc:zm};function fw(e,t){let n=new Array(e.rank);for(let a=0;aw.value-g.value);let m=h*r,A=l.subarray(m,m+r),y=c.subarray(m,m+r);for(let g=0;g{for(let A=0;Anew Kd,1);var xw=at(lo,e=>e>=0?e:Math.exp(e)-1),KR={kernelName:lo,backendName:"cpu",kernelFunc:xw};function ww(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{alpha:s}=r;be([a],"leakyRelu");let i=v.sizeFromShape(a.shape),o=n.data.get(a.dataId).values,l=v.getTypedArrayFromDType("float32",i);for(let c=0;ce<0?t*e:e);function bw(e){let{inputs:t,backend:n}=e,{x:r,alpha:a}=t;be([r,a],"prelu");let s=n.data.get(r.dataId).values,i=n.data.get(a.dataId).values,[o,l]=YR(r.shape,a.shape,s,i,r.dtype);return n.makeTensorInfo(l,r.dtype,o)}var JR={kernelName:Os,backendName:"cpu",kernelFunc:bw},_w=at(zs,e=>Math.max(0,e)),QR={kernelName:zs,backendName:"cpu",kernelFunc:_w},vw=at(Ls,e=>Math.min(Math.max(0,e),6)),eM={kernelName:Ls,backendName:"cpu",kernelFunc:vw};function Pm(e,t,n,r,a){if(n==="linear")return Pr({inputs:{x:t},backend:e});if(n==="relu")return _w({inputs:{x:t},backend:e});if(n==="elu")return xw({inputs:{x:t},backend:e});if(n==="relu6")return vw({inputs:{x:t},backend:e});if(n==="prelu")return bw({inputs:{x:t,alpha:r},backend:e});if(n==="leakyrelu")return ww({inputs:{x:t},backend:e,attrs:{alpha:a}});throw new Error(`Activation ${n} has not been implemented for the CPU backend.`)}function mt(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{shape:s}=r,i=v.sizeFromShape(a.shape),o=v.inferFromImplicitShape(s,i),l=v.sizeFromShape(o);v.assert(i===l,()=>`The new shape (${o}) has ${l} elements and the old shape (${a.shape}) has ${i} elements. The new shape and old shape must have the same number of elements.`),n.incRef(a.dataId);let c=n.data.get(a.dataId);if(c.complexTensorInfos!=null){let u=c.complexTensorInfos.real,h=c.complexTensorInfos.imag;u.shape=o,h.shape=o}return{dataId:a.dataId,shape:o,dtype:a.dtype}}var tM={kernelName:Do,backendName:"cpu",kernelFunc:mt};function kw(e){let{inputs:t,backend:n,attrs:r}=e,{a,b:s}=t,{transposeA:i,transposeB:o}=r;be([a,s],"matMul");let l=a.shape.length,c=s.shape.length,u=i?a.shape[l-2]:a.shape[l-1],h=o?s.shape[c-1]:s.shape[c-2],d=i?a.shape[l-1]:a.shape[l-2],p=o?s.shape[c-2]:s.shape[c-1],f=a.shape.slice(0,-2),m=s.shape.slice(0,-2),A=v.sizeFromShape(f),y=v.sizeFromShape(m),g=A===y||A===1||y===1;v.assert(l>=2&&c>=2&&g,()=>`Error in matMul: the input batch dimensions must either be the same or at least one input batch dimension must be 1. Got input batch dimensions of (${f}) and (${m}).`);let w=(A>y?a.shape.slice(0,-2):s.shape.slice(0,-2)).concat([d,p]);v.assert(u===h,()=>`Error in matMul: inner shapes (${u}) and (${h}) of Tensors with shapes ${a.shape} and ${s.shape} and transposeA=${i} and transposeB=${o} must match.`);let b=i?[A,u,d]:[A,d,u],_=o?[y,p,h]:[y,h,p],x=mt({inputs:{x:a},backend:n,attrs:{shape:b}}),N=mt({inputs:{x:s},backend:n,attrs:{shape:_}}),T=i?x.shape[1]:x.shape[2],C=i?x.shape[2]:x.shape[1],F=o?N.shape[1]:N.shape[2],O=Math.max(A,y),W=n.data.get(x.dataId).values,V=n.data.get(N.dataId).values,U=v.computeStrides(x.shape),j=v.computeStrides(N.shape),[X,G,ee]=i?[U[0],1,U[1]]:[U[0],U[1],1],[Y,ae,te]=o?[1,j[1],j[0]]:[j[1],1,j[0]],oe=C*F,Q=Le([O,C,F],x.dtype),he=Q.values,le=n.blockSize;for(let fe=0;feMath.acos(e)),iM={kernelName:Yi,backendName:"cpu",kernelFunc:sM},oM=at(Ji,e=>Math.acosh(e)),lM={kernelName:Ji,backendName:"cpu",kernelFunc:oM};function uM(e){let{inputs:t,backend:n}=e,r=t;be(t,"addN");let a=r.map(o=>n.data.get(o.dataId).values),s=Le(r[0].shape,r[0].dtype),i=s.values;for(let o=0;og&&(g=_,w=b)}p[A]=w}return c.forEach(A=>n.disposeIntermediateTensorInfo(A)),n.makeTensorInfo(u,"int32",p)}var AM={kernelName:os,backendName:"cpu",kernelFunc:mM};function yM(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{axis:s}=r;be(a,"argMin");let i=v.parseAxisParam(s,a.shape),o=R.getAxesPermutation(i,a.shape.length),l=a,c=[];o!=null&&(l=ir({inputs:{x:a},backend:n,attrs:{perm:o}}),c.push(l),i=R.getInnerMostAxes(i.length,l.shape.length)),i=[i[0]],R.assertAxesAreInnerMostDims("argMin",i,l.shape.length);let[u,h]=R.computeOutAndReduceShapes(l.shape,i),d=v.sizeFromShape(u),p=v.makeZerosTypedArray(d,"int32"),f=v.sizeFromShape(h),m=n.data.get(l.dataId).values;for(let A=0;An.disposeIntermediateTensorInfo(A)),n.makeTensorInfo(u,"int32",p)}var gM={kernelName:uu,backendName:"cpu",kernelFunc:yM},xM=at(Qi,e=>Math.asin(e)),wM={kernelName:Qi,backendName:"cpu",kernelFunc:xM},bM=at(eo,e=>Math.asinh(e)),_M={kernelName:eo,backendName:"cpu",kernelFunc:bM},vM=at(to,e=>Math.atan(e)),kM={kernelName:to,backendName:"cpu",kernelFunc:vM},IM=Et((e,t)=>Math.atan2(e,t)),NM=jt(ro,IM),SM={kernelName:ro,backendName:"cpu",kernelFunc:NM},TM=at(no,e=>Math.atanh(e)),CM={kernelName:no,backendName:"cpu",kernelFunc:TM};function Lm(e,t,n,r,a,s){let i=a.strideHeight,o=a.strideWidth,l=a.dilationHeight,c=a.dilationWidth,u=a.effectiveFilterHeight,h=a.effectiveFilterWidth,d=a.padInfo.top,p=a.padInfo.left,f=s==="max"?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY,m=Le(a.outShape,n),A=m.values,y=a.outShape[1]*a.outShape[2]*a.outShape[3],g=a.outShape[2]*a.outShape[3],w=a.outShape[3];for(let b=0;bG?G=le:s==="avg"&&(ee+=le,Y++)}if(isNaN(G))break}let ae=W+V*w+N;A[ae]=s==="avg"?ee/Y:G}}}return m}function Iw(e,t,n,r,a=!1,s=!1){let i=Le(r.outShape,"int32"),o=r.strideHeight,l=r.strideWidth,c=r.dilationHeight,u=r.dilationWidth,h=r.effectiveFilterHeight,d=r.effectiveFilterWidth,p=r.padInfo.top,f=r.padInfo.left,m=Le(t,n,e);for(let A=0;AF&&(F=X,a?O=s?((A*r.inHeight+W)*r.inWidth+U)*r.inChannels+y:(W*r.inWidth+U)*r.inChannels+y:O=V*d+j)}}i.set(O,A,g,x,y)}}return i}function Nw(e,t,n,r,a,s){let i=a.strideDepth,o=a.strideHeight,l=a.strideWidth,c=a.dilationDepth,u=a.dilationHeight,h=a.dilationWidth,d=a.effectiveFilterDepth,p=a.effectiveFilterHeight,f=a.effectiveFilterWidth,m=a.padInfo.front,A=a.padInfo.top,y=a.padInfo.left,g=s==="max"?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY,w=Le(a.outShape,n),b=w.values,_=a.outShape[1]*a.outShape[2]*a.outShape[3]*a.outShape[4],x=a.outShape[2]*a.outShape[3]*a.outShape[4],N=a.outShape[3]*a.outShape[4],T=a.outShape[4];for(let C=0;Cve?ve=Be:s==="avg"&&(Se+=Be,Me++),isNaN(ve))break}if(isNaN(ve))break}if(isNaN(ve))break}let De=pe+W;b[De]=s==="avg"?Se/Me:ve}}}}return w}function EM(e,t){let n=Le(t.outShape,"int32"),r=t.strideDepth,a=t.strideHeight,s=t.strideWidth,i=t.dilationDepth,o=t.dilationHeight,l=t.dilationWidth,c=t.effectiveFilterDepth,u=t.effectiveFilterHeight,h=t.effectiveFilterWidth,d=t.padInfo.front,p=t.padInfo.top,f=t.padInfo.left;for(let m=0;m=V&&(V=te,U=X*u*h+ee*u+ae)}}}n.set(U,m,y,_,C,A)}}}return n}function RM(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t;be(a,"avgPool");let{filterSize:s,strides:i,pad:o,dimRoundingMode:l}=r,c=1;v.assert(R.eitherStridesOrDilationsAreOne(i,c),()=>`Error in avgPool: Either strides or dilations must be 1. Got strides ${i} and dilations '${c}'`);let u=R.computePool2DInfo(a.shape,s,i,c,o,l),h;if(u.filterWidth===1&&u.filterHeight===1&&v.arraysEqual(u.inShape,u.outShape))h=Pr({inputs:{x:a},backend:n});else{let d=n.data.get(a.dataId).values,p=v.computeStrides(a.shape),f=Lm(d,a.shape,a.dtype,p,u,"avg");h=n.makeTensorInfo(u.outShape,a.dtype,f.values)}return h}var MM={kernelName:ls,backendName:"cpu",kernelFunc:RM};function FM(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{filterSize:s,strides:i,pad:o,dimRoundingMode:l,dataFormat:c}=r;be(a,"avgPool3d");let u=R.computePool3DInfo(a.shape,s,i,1,o,l,c),h=n.data.get(a.dataId).values,d=Nw(h,a.shape,a.dtype,v.computeStrides(a.shape),u,"avg");return n.makeTensorInfo(d.shape,"float32",d.values)}var $M={kernelName:cu,backendName:"cpu",kernelFunc:FM};function DM(e){let{inputs:t,backend:n,attrs:r}=e,{dy:a,input:s}=t,{filterSize:i,strides:o,pad:l,dimRoundingMode:c}=r;be([a,s],"avgPool3DGrad");let u=R.computePool3DInfo(s.shape,i,o,1,l,c),h=u.strideDepth,d=u.strideHeight,p=u.strideWidth,f=u.filterDepth,m=u.filterHeight,A=u.filterWidth,y=u.dilationDepth,g=u.dilationHeight,w=u.dilationWidth,b=u.effectiveFilterDepth,_=u.effectiveFilterHeight,x=u.effectiveFilterWidth,N=b-1-u.padInfo.front,T=x-1-u.padInfo.left,C=_-1-u.padInfo.top,F=Le(s.shape,"float32"),O=1/(f*m*A),W=n.bufferSync(a);for(let V=0;V=u.outDepth||Math.floor(Q)!==Q))for(let he=0;he<_;he+=g){let le=(Y+he)/d;if(!(le<0||le>=u.outHeight||Math.floor(le)!==le))for(let fe=0;fe=u.outWidth||Math.floor(pe)!==pe||(te+=W.get(V,Q,le,pe,U))}}}F.set(te*O,V,j,X,G,U)}return n.makeTensorInfo(F.shape,F.dtype,F.values)}var OM={kernelName:Ih,backendName:"cpu",kernelFunc:DM};function zM(e){let{inputs:t,backend:n,attrs:r}=e,{dy:a,input:s}=t,i=s;be([a,s],"avgPoolGrad");let{filterSize:o,strides:l,pad:c}=r,u=R.computePool2DInfo(i.shape,o,l,1,c),h=u.strideHeight,d=u.strideWidth,p=u.filterHeight,f=u.filterWidth,m=u.dilationHeight,A=u.dilationWidth,y=u.effectiveFilterHeight,g=u.effectiveFilterWidth,w=g-1-u.padInfo.left,b=y-1-u.padInfo.top,_=Le(i.shape,"float32"),x=1/(p*f),N=n.data.get(a.dataId).values,T=Le(a.shape,"float32",N);for(let C=0;C=u.outHeight||Math.floor(G)!==G))for(let ee=0;ee=u.outWidth||Math.floor(Y)!==Y||(j+=T.get(C,G,Y,F))}}_.set(j*x,C,O,W,F)}return n.makeTensorInfo(_.shape,_.dtype,_.values)}var PM={kernelName:kh,backendName:"cpu",kernelFunc:zM};function LM(e){let{inputs:t,backend:n,attrs:r}=e,{x:a,scale:s,offset:i,mean:o,variance:l}=t;v.assert(o.shape.length===l.shape.length,()=>"Batch normalization gradient requires mean and variance to have equal ranks."),v.assert(i==null||o.shape.length===i.shape.length,()=>"Batch normalization gradient requires mean and offset to have equal ranks."),v.assert(s==null||o.shape.length===s.shape.length,()=>"Batch normalization gradient requires mean and scale to have equal ranks."),be([a,o,l,s,i],"batchNorm");let{varianceEpsilon:c}=r;c==null&&(c=.001);let u=n.data.get(a.dataId).values,h=n.data.get(o.dataId).values,d=n.data.get(l.dataId).values,p=s?n.data.get(s.dataId).values:new Float32Array([1]),f=i?n.data.get(i.dataId).values:new Float32Array([0]),m=new Float32Array(u.length),A=f.length,y=p.length,g=d.length,w=h.length,b=0,_=0,x=0,N=0;for(let T=0;T=A&&(b=0),_>=w&&(_=0),x>=y&&(x=0),N>=g&&(N=0);return n.makeTensorInfo(a.shape,a.dtype,m)}var WM={kernelName:bs,backendName:"cpu",kernelFunc:LM};function BM(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{blockShape:s,crops:i}=r;be([a],"batchToSpaceND");let o=s.reduce((y,g)=>y*g),l=R.getReshaped(a.shape,s,o),c=R.getPermuted(l.length,s.length),u=R.getReshapedPermuted(a.shape,s,o),h=R.getSliceBeginCoords(i,s.length),d=R.getSliceSize(u,i,s.length),p=mt({inputs:{x:a},backend:n,attrs:{shape:l}}),f=ir({inputs:{x:p},backend:n,attrs:{perm:c}}),m=mt({inputs:{x:f},backend:n,attrs:{shape:u}}),A=mi({inputs:{x:m},backend:n,attrs:{begin:h,size:d}});return n.disposeIntermediateTensorInfo(p),n.disposeIntermediateTensorInfo(f),n.disposeIntermediateTensorInfo(m),A}var VM={kernelName:hu,backendName:"cpu",kernelFunc:BM};function UM(e){let{inputs:t,backend:n,attrs:r}=e,{x:a,weights:s}=t,{size:i}=r,o=n.data.get(a.dataId).values,l=n.data.get(s.dataId).values,c=Em(o,l,s.dtype,s.shape,i);return n.makeTensorInfo([i],s.dtype,c)}var jM={kernelName:Nh,backendName:"cpu",kernelFunc:UM},HM=at(ka,(e,t)=>{let n=t;return e>n.clipValueMax?n.clipValueMax:e{let{x:t}=e.inputs,n=e.backend,r=new Float32Array(v.sizeFromShape(t.shape)),a=n.data.get(t.dataId),s=a.complexTensorInfos.real,i=a.complexTensorInfos.imag,o=n.data.get(s.dataId).values,l=n.data.get(i.dataId).values;for(let c=0;cm.shape),s);if(v.sizeFromShape(i)===0)return n.makeTensorInfo(i,t[0].dtype,[]);let o=t.filter(m=>v.sizeFromShape(m.shape)>0);if(o.length===1)return Pr({inputs:{x:o[0]},backend:n});let l=o.map(m=>m.shape);if(R.assertParamsConsistent(l,s),o[0].dtype==="complex64"){let m=o.map(b=>fi({inputs:{input:b},backend:n})),A=o.map(b=>bl({inputs:{input:b},backend:n})),y=_l({inputs:m,backend:n,attrs:{axis:s}}),g=_l({inputs:A,backend:n,attrs:{axis:s}}),w=Fn({inputs:{real:y,imag:g},backend:n});return m.forEach(b=>n.disposeIntermediateTensorInfo(b)),A.forEach(b=>n.disposeIntermediateTensorInfo(b)),n.disposeIntermediateTensorInfo(y),n.disposeIntermediateTensorInfo(g),w}let c=o.map(m=>{let A=v.sizeFromShape(m.shape.slice(s));return mt({inputs:{x:m},backend:n,attrs:{shape:[-1,A]}})}),u=c.map(m=>({vals:n.data.get(m.dataId).values,shape:m.shape}));i=R.computeOutShape(c.map(m=>m.shape),1);let h=c[0].shape[0]===1,d=Rm(u,i,t[0].dtype,h),p=R.computeOutShape(o.map(m=>m.shape),s),f=n.makeTensorInfo(p,t[0].dtype,d);return c.forEach(m=>n.disposeIntermediateTensorInfo(m)),f}var ZM={kernelName:ao,backendName:"cpu",kernelFunc:_l};function Sw(e){let{inputs:t,backend:n,attrs:r}=e,{x:a,filter:s}=t,{strides:i,pad:o,dataFormat:l,dilations:c,dimRoundingMode:u}=r;be([a,s],"conv2d");let h=R.convertConv2DDataFormat(l),d=R.computeConv2DInfo(a.shape,s.shape,i,c,o,u,!1,h),p=d.filterHeight,f=d.filterWidth,m=d.dilationHeight,A=d.dilationWidth,y=d.padInfo.left,g=d.padInfo.top,w=d.dataFormat==="channelsLast",b=new $t(d.outShape,a.dtype),_=v.computeStrides(a.shape),x=v.computeStrides(s.shape),N=_[0],T=w?_[1]:_[2],C=w?_[2]:1,F=w?1:_[1],O=b.strides[0],W=w?b.strides[1]:b.strides[2],V=w?b.strides[2]:1,U=w?1:b.strides[1],j=n.data.get(a.dataId).values,X=n.data.get(s.dataId).values,G=b.values;for(let ee=0;ee=d.inHeight)continue;let fe=he*x[0],pe=Y+le*T;for(let ve=0;ve=d.inWidth)continue;let Qe=fe+De*x[1],et=pe+Fe*C,st=Qe;for(let Ke=0;Ke=c.inDepth)continue;let ee=X*C[0],Y=O+G*T[1];for(let ae=0;ae=c.inHeight)continue;let le=ee+Q*C[1],fe=Y+he*T[2];for(let pe=0;pe=c.inWidth)continue;let Fe=le+Me*C[2],Qe=fe+De*c.inChannels,et=Fe;for(let st=0;stMath.cos(e)),uF={kernelName:fs,backendName:"cpu",kernelFunc:lF},cF=at(so,e=>Math.cosh(e)),hF={kernelName:so,backendName:"cpu",kernelFunc:cF};function dF(e){let{inputs:t,backend:n,attrs:r}=e,{image:a,boxes:s,boxInd:i}=t,{cropSize:o,method:l,extrapolationValue:c}=r,[u,h,d,p]=a.shape,f=s.shape[0],[m,A]=o,y=Le([f,m,A,p],"float32"),g=n.data.get(s.dataId).values,w=n.data.get(i.dataId).values,b=n.data.get(a.dataId).values,_=v.computeStrides(a.shape),x=v.computeStrides(y.shape);for(let N=0;N=u)continue;let U=m>1?(O-C)*(h-1)/(m-1):0,j=A>1?(W-F)*(d-1)/(A-1):0;for(let X=0;X1?C*(h-1)+X*U:.5*(C+O)*(h-1);if(G<0||G>h-1){for(let ee=0;ee1?F*(d-1)+te*j:.5*(F+W)*(d-1);if(oe<0||oe>d-1){for(let fe=0;fe1?F*(d-1)+ee*j:.5*(F+W)*(d-1);if(Y<0||Y>d-1){for(let oe=0;oey+f-g-1:(y,g)=>y+g;for(let y=0;y`Only NHWC dataFormat supported on CPU for depthToSpace. Got ${i}`),v.assert(s>1,()=>`blockSize should be > 1 for depthToSpace, but was: ${s}`);let o=a.shape[0],l=a.shape[1],c=a.shape[2],u=a.shape[3],h=l*s,d=c*s,p=u/(s*s),f=n.data.get(a.dataId).values,m=new Float32Array(o*h*d*p),A=0;for(let y=0;y`Error in depthwiseConv2d: Either strides or dilations must be 1. Got strides ${i} and dilations '${d}'`);let p=R.computeConv2DInfo(a.shape,s.shape,i,d,o,c,!0),{filterHeight:f,filterWidth:m,dilationHeight:A,dilationWidth:y,padInfo:g}=p,w=g.left,b=g.top,_=p.outChannels/p.inChannels,x=new $t(p.outShape,a.dtype),N=n.data.get(a.dataId).values,T=n.data.get(s.dataId).values,C=x.values;for(let F=0;F=p.inHeight)continue;let ee=X*h[0],Y=O+G*u[1];for(let ae=0;ae=p.inWidth)continue;let le=ee+Q*h[1],fe=Y+he*p.inChannels,pe=te,ve=le;for(let Se=0;Se{let{x:r,filter:a}=e,{strides:s,pad:i,dilations:o}=n,l=t,c=l.data.get(r.dataId).values,u=r.shape.length,h=l.data.get(a.dataId).values,d=a.shape.length,{batchSize:p,inHeight:f,inWidth:m,inChannels:A,outHeight:y,outWidth:g,padInfo:w,strideHeight:b,strideWidth:_,filterHeight:x,filterWidth:N,dilationHeight:T,dilationWidth:C,outShape:F}=R.computeDilation2DInfo(r.shape,a.shape,s,i,"NHWC",o),O=v.sizeFromShape(F),W=F.length,V=v.getArrayFromDType(r.dtype,O);for(let U=0;U=0&&Q=0&&leae&&(ae=ve)}}}let te=v.locToIndex([U,j,G,Y],W,v.computeStrides(F));V[te]=ae}}}return{dataId:l.write(v.toTypedArray(V,r.dtype),F,r.dtype),shape:F,dtype:r.dtype}}},TF={kernelName:Oh,backendName:"cpu",kernelFunc:({inputs:e,backend:t,attrs:n})=>{let{x:r,filter:a,dy:s}=e,{strides:i,pad:o,dilations:l}=n,c=t,u=v.toNestedArray(r.shape,c.data.get(r.dataId).values),h=v.toNestedArray(a.shape,c.data.get(a.dataId).values),{batchSize:d,inHeight:p,inWidth:f,inChannels:m,outHeight:A,outWidth:y,padInfo:g,strideHeight:w,strideWidth:b,filterHeight:_,filterWidth:x,dilationHeight:N,dilationWidth:T,outShape:C}=R.computeDilation2DInfo(r.shape,a.shape,i,o,"NHWC",l);v.assert(s.rank===C.length,()=>`Error in ${Oh}, dy must have the same rank as output ${C.length}, but got ${s.rank}`);let F=v.toNestedArray(C,c.data.get(s.dataId).values),O=v.makeZerosNestedTypedArray(a.shape,a.dtype);for(let W=0;W=0&&oe=0&&heee&&(ee=le,Y=te,ae=Q)}}}O[Y][ae][G]+=F[W][V][j][G]}}}return{dataId:c.write(v.toTypedArray(O,r.dtype),a.shape,a.dtype),shape:a.shape,dtype:a.dtype}}},CF={kernelName:Dh,backendName:"cpu",kernelFunc:({inputs:e,backend:t,attrs:n})=>{let{x:r,filter:a,dy:s}=e,{strides:i,pad:o,dilations:l}=n,c=t,u=v.toNestedArray(r.shape,c.data.get(r.dataId).values),h=v.toNestedArray(a.shape,c.data.get(a.dataId).values),{batchSize:d,inHeight:p,inWidth:f,inChannels:m,outHeight:A,outWidth:y,padInfo:g,strideHeight:w,strideWidth:b,filterHeight:_,filterWidth:x,dilationHeight:N,dilationWidth:T,outShape:C}=R.computeDilation2DInfo(r.shape,a.shape,i,o,"NHWC",l);v.assert(s.rank===C.length,()=>`Error in ${Dh}, dy must have the same rank as output ${C.length}, but got ${s.rank}`);let F=v.toNestedArray(C,c.data.get(s.dataId).values),O=v.makeZerosNestedTypedArray(r.shape,r.dtype);for(let W=0;W=0&&oe=0&&heee&&(ee=le,Y=oe,ae=he)}}}O[W][Y][ae][G]+=F[W][V][j][G]}}}return{dataId:c.write(v.toTypedArray(O,r.dtype),r.shape,r.dtype),shape:r.shape,dtype:r.dtype}}};function EF(e){let{inputs:t,backend:n}=e,{dy:r,y:a}=t;be([r,a],"eluGrad");let s=new Float32Array(v.sizeFromShape(a.shape)),i=n.data.get(a.dataId).values,o=n.data.get(r.dataId).values;for(let l=0;l=1?s[l]=o[l]:s[l]=o[l]*(c+1)}return n.makeTensorInfo(a.shape,"float32",s)}var RF={kernelName:zh,backendName:"cpu",kernelFunc:EF},MF=Et((e,t)=>e===t?1:0),Cw=jt(co,MF,null,"bool"),FF={kernelName:co,backendName:"cpu",kernelFunc:Cw},$F=R.ERF_P,DF=R.ERF_A1,OF=R.ERF_A2,zF=R.ERF_A3,PF=R.ERF_A4,LF=R.ERF_A5,WF=at(uo,e=>{let t=Math.sign(e),n=Math.abs(e),r=1/(1+$F*n);return t*(1-((((LF*r+PF)*r+zF)*r+OF)*r+DF)*r*Math.exp(-n*n))}),BF={kernelName:uo,backendName:"cpu",kernelFunc:WF};function Jd(e){let{inputs:t,backend:n,attrs:r}=e,{input:a}=t,{dim:s}=r,i=a.shape.length,o=a.shape.slice(),l=s;return s<0&&(v.assert(-(i+1)<=s,()=>`Axis must be in the interval [${-(i+1)}, ${i}]`),l=i+s+1),o.splice(l,0,1),mt({inputs:{x:a},backend:n,attrs:{shape:o}})}var VF={kernelName:ho,backendName:"cpu",kernelFunc:Jd},UF=Et((e,t)=>e/t),Wm=jt(ys,UF),Bm={kernelName:ys,backendName:"cpu",kernelFunc:Wm};function Ew(e,t,n){let r=e.shape,a=r[0],s=r[1],i=n.data.get(e.dataId),o=i.complexTensorInfos.real,l=i.complexTensorInfos.imag,c=[a,s],u=v.sizeFromShape(c),h=v.getTypedArrayFromDType("float32",u),d=v.getTypedArrayFromDType("float32",u);for(let A=0;A{let{image:r}=e,a=n,s=v.getTypedArrayFromDType(r.dtype,v.sizeFromShape(r.shape)),[i,o,l,c]=r.shape,u=a.data.get(r.dataId).values;for(let h=0;h=0&&wMath.floor(e/t)),QF=jt(ws,JF,null,"int32"),e$={kernelName:ws,backendName:"cpu",kernelFunc:QF};function t$(e){let{inputs:t,backend:n,attrs:r}=e,{x:a,filter:s,bias:i,preluActivationWeights:o}=t,{strides:l,pad:c,dataFormat:u,dilations:h,dimRoundingMode:d,activation:p,leakyreluAlpha:f}=r,m=Sw({inputs:{x:a,filter:s},backend:n,attrs:{strides:l,pad:c,dataFormat:u,dilations:h,dimRoundingMode:d}});if(i){let A=m;m=nc({inputs:{a:m,b:i},backend:n}),n.disposeIntermediateTensorInfo(A)}if(p){let A=m;m=Pm(n,m,p,o,f),n.disposeIntermediateTensorInfo(A)}return m}var n$={kernelName:Qs,backendName:"cpu",kernelFunc:t$};function r$(e){let{inputs:t,backend:n,attrs:r}=e,{x:a,filter:s,bias:i,preluActivationWeights:o}=t,{strides:l,pad:c,dataFormat:u,dilations:h,dimRoundingMode:d,activation:p,leakyreluAlpha:f}=r,m=Tw({inputs:{x:a,filter:s},backend:n,attrs:{strides:l,pad:c,dataFormat:u,dilations:h,dimRoundingMode:d}});if(i){let A=m;m=nc({inputs:{a:m,b:i},backend:n}),n.disposeIntermediateTensorInfo(A)}if(p){let A=m;m=Pm(n,m,p,o,f),n.disposeIntermediateTensorInfo(A)}return m}var a$={kernelName:ei,backendName:"cpu",kernelFunc:r$};function s$(e){let{inputs:t,backend:n}=e,{params:r,indices:a}=t,s=v.sizeFromShape(r.shape),i=a.shape,o=i[i.length-1],[l,c,u,h]=R.prepareAndValidate(r,a);if(c===0)return n.makeTensorInfo(l,r.dtype,[]);let d=Le([c,u],r.dtype),p=n.data.get(a.dataId).values,f=n.data.get(r.dataId).values;for(let m=0;m=s/u)throw new Error(`Invalid indices: ${A} does not index into ${r.shape}`);for(let g=0;ge>=t?1:0),c$=jt(_s,u$,null,"bool"),h$={kernelName:_s,backendName:"cpu",kernelFunc:c$};function d$(e){let{inputs:t,backend:n}=e,{input:r}=t,a=v.sizeFromShape(r.shape),s=r.shape[r.shape.length-1],i=a/s,o=mt({inputs:{x:r},backend:n,attrs:{shape:[i,s]}}),l=Ew(o,!0,n),c=mt({inputs:{x:l},backend:n,attrs:{shape:r.shape}});return n.disposeIntermediateTensorInfo(o),n.disposeIntermediateTensorInfo(l),c}var p$={kernelName:Lh,backendName:"cpu",kernelFunc:d$},f$=at(go,e=>Number.isFinite(e)?1:0,"bool"),m$={kernelName:go,backendName:"cpu",kernelFunc:f$},A$=at(xo,e=>Math.abs(e)===Infinity?1:0,"bool"),y$={kernelName:xo,backendName:"cpu",kernelFunc:A$},g$=at(wo,e=>Number.isNaN(e)?1:0,"bool"),x$={kernelName:wo,backendName:"cpu",kernelFunc:g$},w$=Et((e,t)=>e<=t?1:0),b$=jt(_o,w$,null,"bool"),_$={kernelName:_o,backendName:"cpu",kernelFunc:b$};function v$(e){let{backend:t,attrs:n}=e,{start:r,stop:a,num:s}=n,i=nw(r,a,s);return t.makeTensorInfo([i.length],"float32",i)}var k$={kernelName:Bh,backendName:"cpu",kernelFunc:v$},I$=at(vo,e=>Math.log1p(e)),N$={kernelName:vo,backendName:"cpu",kernelFunc:I$},S$=Et((e,t)=>e&&t),T$=jt(ko,S$,null,"bool"),C$={kernelName:ko,backendName:"cpu",kernelFunc:T$},E$=at(Au,e=>e?0:1,"bool"),R$={kernelName:Au,backendName:"cpu",kernelFunc:E$},M$=Et((e,t)=>e||t),F$=jt(yu,M$,null,"bool"),$$={kernelName:yu,backendName:"cpu",kernelFunc:F$};function D$(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{depthRadius:s,bias:i,alpha:o,beta:l}=r;be(a,"LRN");let c=a.shape[3],u=c-1,h=n.data.get(a.dataId).values,d=v.sizeFromShape(a.shape),p=new Float32Array(d);function f(m){let A=m%c,y=m-A+Math.max(0,A-s),g=m-A+Math.min(A+s,u),w=0;for(;y<=g;y++){let b=h[y];w+=b*b}return w}for(let m=0;m`Error in maxPool: Either strides or dilations must be 1. Got strides ${i} and dilations '${c}'`);let u=R.computePool2DInfo(a.shape,s,i,c,o,l),h;if(u.filterWidth===1&&u.filterHeight===1&&v.arraysEqual(u.inShape,u.outShape))h=Pr({inputs:{x:a},backend:n});else{let d=n.data.get(a.dataId).values,p=v.computeStrides(a.shape),f=Lm(d,a.shape,a.dtype,p,u,"max");h=n.makeTensorInfo(u.outShape,a.dtype,f.values)}return h}var B$={kernelName:Ts,backendName:"cpu",kernelFunc:W$};function V$(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{filterSize:s,strides:i,pad:o,dimRoundingMode:l,dataFormat:c}=r;be(a,"maxPool3d");let u=R.computePool3DInfo(a.shape,s,i,1,o,l,c),h=n.data.get(a.dataId).values,d=Nw(h,a.shape,a.dtype,v.computeStrides(a.shape),u,"max");return n.makeTensorInfo(d.shape,"float32",d.values)}var U$={kernelName:xu,backendName:"cpu",kernelFunc:V$};function j$(e){let{inputs:t,backend:n,attrs:r}=e,{dy:a,input:s}=t,{filterSize:i,strides:o,pad:l,dimRoundingMode:c}=r;be([a,s],"maxPool3DGrad");let u=R.computePool3DInfo(s.shape,i,o,1,l,c),h=n.bufferSync(s),d=EM(h,u),p=u.strideDepth,f=u.strideHeight,m=u.strideWidth,A=u.dilationDepth,y=u.dilationHeight,g=u.dilationWidth,w=u.effectiveFilterDepth,b=u.effectiveFilterHeight,_=u.effectiveFilterWidth,x=w-1-u.padInfo.front,N=_-1-u.padInfo.left,T=b-1-u.padInfo.top,C=Le(s.shape,"float32"),F=n.bufferSync(a);for(let O=0;O=u.outDepth||Math.floor(te)!==te))for(let oe=0;oe=u.outHeight||Math.floor(Q)!==Q))for(let he=0;he<_;he+=g){let le=(ee+he)/m;if(le<0||le>=u.outWidth||Math.floor(le)!==le)continue;let fe=w*b*_-1-d.get(O,te,Q,le,W),pe=ae*b*_+oe*_+he,ve=fe===pe?1:0;ve!==0&&(Y+=F.get(O,te,Q,le,W)*ve)}}}C.set(Y,O,V,U,j,W)}return n.makeTensorInfo(C.shape,C.dtype,C.values)}var H$={kernelName:jh,backendName:"cpu",kernelFunc:j$};function G$(e){let{inputs:t,backend:n,attrs:r}=e,{dy:a,input:s,output:i}=t,o=s;be([s,i],"maxPoolGrad");let{filterSize:l,strides:c,pad:u,dimRoundingMode:h}=r,d=R.computePool2DInfo(o.shape,l,c,1,u,h),p=n.data.get(o.dataId).values,f=Le(d.outShape,o.dtype,Iw(p,o.shape,o.dtype,d).values),m=d.strideHeight,A=d.strideWidth,y=d.dilationHeight,g=d.dilationWidth,w=d.effectiveFilterHeight,b=d.effectiveFilterWidth,_=b-1-d.padInfo.left,x=w-1-d.padInfo.top,N=Le(o.shape,"float32"),T=n.data.get(a.dataId).values,C=Le(a.shape,"float32",T);for(let F=0;F=d.outHeight||Math.floor(ee)!==ee))for(let Y=0;Y=d.outWidth||Math.floor(ae)!==ae)continue;let te=w*b-1-f.get(F,ee,ae,O),oe=G*b+Y,Q=te===oe?1:0;Q!==0&&(X+=C.get(F,ee,ae,O)*Q)}}N.set(X,F,W,V,O)}return n.makeTensorInfo(N.shape,N.dtype,N.values)}var q$={kernelName:Uh,backendName:"cpu",kernelFunc:G$};function X$(e,t,n,r,a){let s=v.computeStrides(t),i=Lm(e,t,n,s,a,"max"),o=Iw(e,t,n,a,!0,r);return[i.values,o.values]}var K$={kernelName:Hh,backendName:"cpu",kernelFunc:({inputs:e,attrs:t,backend:n})=>{let{x:r}=e,{filterSize:a,strides:s,pad:i,includeBatchInIndex:o}=t,l=n;be(r,"MaxPoolWithArgmax");let c=l.data.get(r.dataId).values,u=R.computePool2DInfo(r.shape,a,s,[1,1],i),[h,d]=X$(c,r.shape,r.dtype,o,u),p=l.write(h,u.outShape,r.dtype),f=l.write(d,u.outShape,r.dtype);return[{dataId:p,shape:u.outShape,dtype:r.dtype},{dataId:f,shape:u.outShape,dtype:"int32"}]}};function Qd(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{axis:s,keepDims:i}=r;be(a,"sum");let o;a.dtype==="bool"?o=Pa({inputs:{x:a},backend:n,attrs:{dtype:"int32"}}):o=Pr({inputs:{x:a},backend:n});let l=o.shape.length,c=v.parseAxisParam(s,o.shape),u=R.getAxesPermutation(c,l),h=c,d=o;u!=null&&(d=ir({inputs:{x:o},backend:n,attrs:{perm:u}}),h=R.getInnerMostAxes(h.length,l)),R.assertAxesAreInnerMostDims("sum",h,d.shape.length);let[p,f]=R.computeOutAndReduceShapes(d.shape,h),m=R.upcastType(d.dtype,"int32"),A=Yd(n,p,m),y=v.sizeFromShape(f),g=n.data.get(A.dataId).values,w=n.data.get(d.dataId).values;for(let b=0;bn.disposeIntermediateTensorInfo(m)),f}var J$={kernelName:Cs,backendName:"cpu",kernelFunc:Y$};function Q$(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{axis:s,keepDims:i}=r;be(a,"min");let o=v.parseAxisParam(s,a.shape),l=o,c=R.getAxesPermutation(l,a.shape.length),u=a;c!=null&&(u=ir({inputs:{x:a},backend:n,attrs:{perm:c}}),l=R.getInnerMostAxes(l.length,a.shape.length)),R.assertAxesAreInnerMostDims("min",l,u.shape.length);let[h,d]=R.computeOutAndReduceShapes(u.shape,l),p=v.sizeFromShape(d),f=v.makeZerosTypedArray(v.sizeFromShape(h),u.dtype),m=n.data.get(u.dataId).values;for(let y=0;yg[0]+a.shape[w]+g[1]),l=s.map(g=>g[0]),c=s.map((g,w)=>g[0]+a.shape[w]),u=i==="reflect"?0:1,h=n.data.get(a.dataId).values,d=a.shape.length,p=v.computeStrides(a.shape),f=v.sizeFromShape(o),m=o.length,A=v.computeStrides(o),y=v.getTypedArrayFromDType(a.dtype,f);for(let g=0;g=c[_]&&(w[_]=(c[_]-1)*2-w[_]+u);w=w.map((_,x)=>_-l[x]);let b=v.locToIndex(w,d,p);y[g]=h[b]}return{dataId:n.write(y,o,a.dtype),shape:o,dtype:a.dtype}}var nD={kernelName:wu,backendName:"cpu",kernelFunc:tD},rD=Et((e,t)=>{let n=e%t;return e<0&&t<0||e>=0&&t>=0?n:(n+t)%t}),aD=jt(Io,rD),sD={kernelName:Io,backendName:"cpu",kernelFunc:aD},iD=qi(Bg());function Mw(e){let{inputs:t,backend:n,attrs:r}=e,{logits:a}=t,{dim:s}=r,i=a.shape.length,o=s;if(o===-1&&(o=i-1),o!==i-1)throw Error(`Softmax along a non-last dimension is not yet supported. Logits was rank ${i} and dim was ${o}`);let l=v.parseAxisParam([o],a.shape),c=Rw({inputs:{x:a},backend:n,attrs:{reductionIndices:l,keepDims:!1}}),u=R.expandShapeToKeepDim(c.shape,l),h=mt({inputs:{x:c},backend:n,attrs:{shape:u}}),d=zm({inputs:{a,b:h},backend:n}),p=yw({inputs:{x:d},backend:n}),f=Qd({inputs:{x:p},backend:n,attrs:{axis:l,keepDims:!1}}),m=mt({inputs:{x:f},backend:n,attrs:{shape:u}}),A=Wm({inputs:{a:p,b:m},backend:n});return n.disposeIntermediateTensorInfo(c),n.disposeIntermediateTensorInfo(h),n.disposeIntermediateTensorInfo(d),n.disposeIntermediateTensorInfo(p),n.disposeIntermediateTensorInfo(f),n.disposeIntermediateTensorInfo(m),A}var oD={kernelName:qs,backendName:"cpu",kernelFunc:Mw};function lD(e){let{inputs:t,backend:n,attrs:r}=e,{logits:a}=t,{numSamples:s,seed:i,normalized:o}=r;be(a,"multinomial");let l=o?a:Mw({inputs:{logits:a},backend:n,attrs:{dim:-1}}),c=l.shape[0],u=l.shape[1],h=n.data.get(l.dataId).values,d=[c,s],p=v.makeZerosTypedArray(v.sizeFromShape(d),"int32");for(let f=0;f=0&&u[h]{v.assertShapesMatch(s,u.shape,"All tensors passed to stack must have matching shapes"),v.assert(i===u.dtype,()=>"All tensors passed to stack must have matching dtypes")});let o=[],l=t.map(u=>{let h=Jd({inputs:{input:u},backend:n,attrs:{dim:a}});return o.push(h),h}),c=_l({inputs:l,backend:n,attrs:{axis:a}});return o.forEach(u=>n.disposeIntermediateTensorInfo(u)),c}var vD={kernelName:Mo,backendName:"cpu",kernelFunc:$w};function kD(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{paddings:s,constantValue:i}=r;be(a,"pad");let o=s.map((y,g)=>y[0]+a.shape[g]+y[1]),l=s.map(y=>y[0]),c=n.data.get(a.dataId).values,u=v.sizeFromShape(a.shape),h=a.shape.length,d=v.computeStrides(a.shape),p=v.sizeFromShape(o),f=o.length,m=v.computeStrides(o),A=v.getTypedArrayFromDType(a.dtype,p);i!==0&&A.fill(i);for(let y=0;yb+l[_]),w=v.locToIndex(g,f,m);A[w]=c[y]}return{dataId:n.write(A,o,a.dtype),shape:o,dtype:a.dtype}}var Dw={kernelName:$s,backendName:"cpu",kernelFunc:kD},ID=Et((e,t)=>Math.pow(e,t)),ND=jt(Ds,ID),SD={kernelName:Ds,backendName:"cpu",kernelFunc:ND};function TD(e){let{backend:t,attrs:n}=e,{start:r,stop:a,dtype:s,step:i}=n,o=$m(r,a,i,s);return t.makeTensorInfo([o.length],s,o)}var CD={kernelName:bu,backendName:"cpu",kernelFunc:TD},ED=at($o,e=>1/e),RD={kernelName:$o,backendName:"cpu",kernelFunc:ED};function MD(e){let{inputs:t,backend:n,attrs:r}=e,{images:a}=t,{alignCorners:s,halfPixelCenters:i,size:o}=r;be(a,"resizeBilinear");let l=v.computeStrides(a.shape),[c,u]=o,[h,d,p,f]=a.shape,m=n.data.get(a.dataId).values,A=new Float32Array(v.sizeFromShape([h,c,u,f])),y=[s&&c>1?d-1:d,s&&u>1?p-1:p],g=[s&&c>1?c-1:c,s&&u>1?u-1:u],w=0,b=y[0]/g[0],_=y[1]/g[1];for(let x=0;x1?c-1:c,i&&p>1?u-1:u],A=[i&&d>1?d-1:d,i&&p>1?p-1:p],y=m[0]/A[0],g=m[1]/A[1],w=n.data.get(s.dataId).values,b=0;for(let _=0;_1?d-1:d,s&&u>1?p-1:p],g=[s&&c>1?c-1:c,s&&u>1?u-1:u],w=y[0]/g[0],b=y[1]/g[1],_=0;for(let x=0;x1?u-1:u,i&&f>1?h-1:h],g=[i&&p>1?p-1:p,i&&f>1?f-1:f],w=y[0]/g[0],b=y[1]/g[1],_=1/w,x=1/b,N=Math.ceil(_)*2+2,T=Math.ceil(x)*2+2;for(let C=0;C=p)continue;let Q=F+oe*l[1],he=oe*w,le=Math.min(u-1,i?Math.round(he):Math.floor(he));if(O===le)for(let fe=0;fe=f)continue;let ve=Q+pe*l[2],Se=pe*b,Me=Math.min(h-1,i?Math.round(Se):Math.floor(Se));j===Me&&(ae+=A[ve+Y])}}m[X+Y]=ae}}}}return n.makeTensorInfo(a.shape,a.dtype,m)}var LD={kernelName:Xh,backendName:"cpu",kernelFunc:PD};function WD(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{dims:s}=r;be(a,"reverse");let i=a.shape.length,o=v.parseAxisParam(s,a.shape);if(i===0)return Pr({inputs:{x:a},backend:n});let l=new $t(a.shape,a.dtype),c=n.bufferSync(a);for(let u=0;ud[p]=a.shape[p]-1-d[p]),l.set(c.get(...d),...h)}return n.makeTensorInfo(l.shape,l.dtype,l.values)}var BD={kernelName:Ws,backendName:"cpu",kernelFunc:WD},VD={kernelName:Ko,backendName:"cpu",kernelFunc:({inputs:e,attrs:t,backend:n})=>{let{image:r}=e,{radians:a,fillValue:s,center:i}=t,o=n,l=v.getTypedArrayFromDType(r.dtype,v.sizeFromShape(r.shape)),[c,u,h,d]=r.shape,[p,f]=R.getImageCenter(i,u,h),m=255,A=Math.sin(a),y=Math.cos(a),g=o.data.get(r.dataId).values;for(let w=0;w=0&&V=0&&U{let t=Math.floor(e);return e-t<.5?Math.floor(e):e-t>.5?Math.ceil(e):t%2==0?t:t+1}),jD={kernelName:Bs,backendName:"cpu",kernelFunc:UD};function Ow(e,t,n,r,a,s,i,o,l,c){let u=[r/a,a],h=e.values,d=t.values;if(r===0)return Le(n,t.dtype);let p=Le(u,t.dtype);p.values.fill(l);for(let f=0;f=r/a)throw new Error(`Invalid indices: ${m} does not index into ${n}`);for(let y=0;y1||a.shape.length===1?1:v.sizeFromShape(a.shape.slice(1));for(let f=0;fe>=0?ZD*e:KD*(Math.exp(e)-1)),JD={kernelName:Po,backendName:"cpu",kernelFunc:YD},QD=at(js,e=>1/(1+Math.exp(-e))),eO={kernelName:js,backendName:"cpu",kernelFunc:QD},tO=at(Bo,e=>e<0?-1:e>0?1:0),nO={kernelName:Bo,backendName:"cpu",kernelFunc:tO},rO=at(Us,e=>Math.sin(e)),aO={kernelName:Us,backendName:"cpu",kernelFunc:rO},sO=at(Wo,e=>Math.sinh(e)),iO={kernelName:Wo,backendName:"cpu",kernelFunc:sO},oO=11920928955078125e-23,zw=Math.log(oO)+2,lO=at(Vo,e=>{let t=e>-zw,n=e{let d=[...u];d[o]=h;let p=mi({inputs:{x:a},backend:n,attrs:{begin:c,size:d}});return c[o]+=h,p})}var mO={kernelName:Uo,backendName:"cpu",kernelFunc:fO},AO=at(Hs,e=>Math.sqrt(e)),yO={kernelName:Hs,backendName:"cpu",kernelFunc:AO},gO={kernelName:ku,backendName:"cpu",kernelFunc:({inputs:e,backend:t})=>{let{x:n}=e,r=t;be(n,"square");let a=r.data.get(n.dataId).values,s=new Float32Array(a.length);for(let i=0;i{let n=t;return isNaN(e)?NaN:e>0?1:n.alpha}),wO={kernelName:Na,backendName:"cpu",kernelFunc:xO};function bO(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{begin:s,end:i,strides:o,beginMask:l,endMask:c,ellipsisMask:u,newAxisMask:h,shrinkAxisMask:d}=r;be(a,"stridedSlice");let{nonStrided:p,$begin:f,$strides:m,size:A,newShape:y,outShape:g}=on.sliceInfo(a.shape,s,i,o,l,c,u,h,d),w=mt({inputs:{x:a},backend:n,attrs:{shape:y}}),b;if(p){let x=mi({inputs:{x:w},backend:n,attrs:{begin:f,size:A}});b=mt({inputs:{x},backend:n,attrs:{shape:g}}),n.disposeIntermediateTensorInfo(x)}else if(g.some(x=>x===0))b=n.makeTensorInfo(g,a.dtype,[]);else{let x=n.bufferSync(w),N=dw(g,x,m,f);b=n.makeTensorInfo(N.shape,N.dtype,N.values)}let _=mt({inputs:{x:b},backend:n,attrs:{shape:g}});return n.disposeIntermediateTensorInfo(w),n.disposeIntermediateTensorInfo(b),_}var _O={kernelName:jo,backendName:"cpu",kernelFunc:bO},vO=at(Ho,e=>Math.tan(e)),kO={kernelName:Ho,backendName:"cpu",kernelFunc:vO},IO=at(Zs,e=>Math.tanh(e)),NO={kernelName:Zs,backendName:"cpu",kernelFunc:IO};function SO(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{reps:s}=r;be(a,"tile");let i=fw(n.bufferSync(a),s);return n.makeTensorInfo(i.shape,i.dtype,i.values)}var TO={kernelName:Ia,backendName:"cpu",kernelFunc:SO};function CO(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{k:s,sorted:i}=r;be(a,"topk");let o=n.data.get(a.dataId).values,[l,c]=mw(o,a.shape,a.dtype,s,i);return[n.makeTensorInfo(l.shape,l.dtype,l.values),n.makeTensorInfo(c.shape,c.dtype,c.values)]}var EO={kernelName:Go,backendName:"cpu",kernelFunc:CO};function FO(e){let{inputs:t,attrs:n,backend:r}=e,{image:a,transforms:s}=t,{interpolation:i,fillMode:o,fillValue:l,outputShape:c}=n,[u,h,d,p]=a.shape,[f,m]=c!=null?c:[h,d],A=[u,f,m,p],y=v.computeStrides(a.shape),g=y[0],w=y[1],b=y[2],_=v.getTypedArrayFromDType(a.dtype,v.sizeFromShape(A));_.fill(l);let x=r.data.get(a.dataId).values,N=r.data.get(s.dataId).values;for(let T=0;Tt-1)if(t<=1)n=0;else{let r=2*t;n-=r*Math.trunc(n/r),n>=t&&(n=r-n-1)}return v.clamp(0,n,t-1)}function OO(e,t){let n=e;if(n<0)if(t<=1)n=0;else{let r=t-1;n+=t*(Math.trunc(-n/r)+1)}else if(n>t-1)if(t<=1)n=0;else{let r=t-1;n-=t*Math.trunc(n/r)}return v.clamp(0,n,t-1)}function zO(e,t){return e}function PO(e,t){return v.clamp(0,e,t-1)}function rc(e,t,n,r,a,s,i,o,l,c,u){let h=i*r+o*a+l*s+c;return 0<=o&&on.disposeIntermediateTensorInfo(f)),p}var jO={kernelName:Iu,backendName:"cpu",kernelFunc:UO},HO=[aM,uR,iM,lM,mR,cM,dM,fM,AM,gM,wM,_M,kM,SM,CM,MM,$M,OM,PM,nM,WM,VM,jM,pR,yR,GM,cR,XM,ZM,QM,tF,YM,sF,oF,rF,uF,hF,pF,mF,yF,xF,wF,_F,kF,NF,SF,CF,TF,Bm,KR,RF,FF,BF,gR,VF,wR,XF,ZF,YF,_R,e$,n$,a$,i$,l$,kR,h$,hR,p$,KM,m$,y$,x$,ZR,NR,_$,k$,TR,N$,C$,R$,$$,O$,P$,ER,B$,U$,H$,q$,K$,L$,J$,eD,MR,nD,sD,uD,$R,OR,dD,mD,gD,PR,wD,_D,vD,Dw,SD,JR,BR,CD,dR,RD,QR,eM,tM,FD,DD,zD,LD,BD,VD,jD,UR,GD,XD,JD,eO,nO,aO,iO,jR,oD,uO,hO,pO,mO,yO,gO,GR,wO,_O,XR,Z$,kO,NO,TO,EO,LR,$O,WO,VO,jO,bD];for(let e of HO)ti(e);var Lw={};Oe(Lw,{assertNotComplex:()=>vl,bindCanvasToFramebuffer:()=>XO,bindColorTextureToFramebuffer:()=>np,bindTextureToProgramUniformSampler:()=>eb,bindTextureUnit:()=>Yw,bindVertexBufferToProgramAttribute:()=>jm,callAndCheck:()=>xe,canBeRepresented:()=>Ww,createFragmentShader:()=>Uw,createFramebuffer:()=>Zw,createProgram:()=>jw,createStaticIndexBuffer:()=>qw,createStaticVertexBuffer:()=>Gw,createTexture:()=>Xw,createVertexShader:()=>Vw,getBatchDim:()=>Ai,getExtensionOrThrow:()=>ac,getFramebufferErrorMessage:()=>tb,getMaxTexturesInShader:()=>ab,getNumChannels:()=>GO,getProgramUniformLocation:()=>Qw,getProgramUniformLocationOrThrow:()=>Jw,getRowsCols:()=>yi,getShapeAs3D:()=>rp,getTextureShapeFromLogicalShape:()=>nb,getWebGLDisjointQueryTimerVersion:()=>sb,getWebGLErrorMessage:()=>Bw,getWebGLMaxTextureSize:()=>rb,hasExtension:()=>Xn,isCapableOfRenderingToFloatTexture:()=>ib,isDownloadFloatTextureEnabled:()=>ob,isReshapeFree:()=>ic,isWebGLFenceEnabled:()=>lb,isWebGLVersionEnabled:()=>Gm,linkProgram:()=>Hw,resetMaxTextureSize:()=>KO,resetMaxTexturesInShader:()=>ZO,unbindColorTextureFromFramebuffer:()=>Hm,unbindTextureUnit:()=>qO,validateFramebuffer:()=>sc,validateProgram:()=>tp,validateTextureSize:()=>Kw});var gi={},qm={alpha:!1,antialias:!1,premultipliedAlpha:!1,preserveDrawingBuffer:!1,depth:!1,stencil:!1,failIfMajorPerformanceCaveat:!0};function ap(e,t){gi[e]=t}function Lr(e){if(!(e in gi)){let n=YO(e);if(n!==null)gi[e]=n;else return console.log("Could not get context for WebGL version",e),null}let t=gi[e];return t.isContextLost()?(delete gi[e],Lr(e)):(t.disable(t.DEPTH_TEST),t.disable(t.STENCIL_TEST),t.disable(t.BLEND),t.disable(t.DITHER),t.disable(t.POLYGON_OFFSET_FILL),t.disable(t.SAMPLE_COVERAGE),t.enable(t.SCISSOR_TEST),t.enable(t.CULL_FACE),t.cullFace(t.BACK),gi[e])}function JO(e){if(typeof OffscreenCanvas!="undefined"&&e===2)return new OffscreenCanvas(300,150);if(typeof document!="undefined")return document.createElement("canvas");throw new Error("Cannot create a canvas in this context")}function YO(e){if(e!==1&&e!==2)throw new Error("Cannot get WebGL rendering context, WebGL is disabled.");let t=JO(e);return t.addEventListener("webglcontextlost",n=>{n.preventDefault(),delete gi[e]},!1),e===1?t.getContext("webgl",qm)||t.getContext("experimental-webgl",qm):t.getContext("webgl2",qm)}var oc;(function(e){e[e.DENSE=0]="DENSE",e[e.SHARED_BATCH=1]="SHARED_BATCH"})(oc||(oc={}));var Kn;(function(e){e[e.RENDER=0]="RENDER",e[e.UPLOAD=1]="UPLOAD",e[e.PIXELS=2]="PIXELS",e[e.DOWNLOAD=3]="DOWNLOAD"})(Kn||(Kn={}));var Qt;(function(e){e[e.UNPACKED_FLOAT16=0]="UNPACKED_FLOAT16",e[e.UNPACKED_FLOAT32=1]="UNPACKED_FLOAT32",e[e.PACKED_4X1_UNSIGNED_BYTE=2]="PACKED_4X1_UNSIGNED_BYTE",e[e.PACKED_2X2_FLOAT32=3]="PACKED_2X2_FLOAT32",e[e.PACKED_2X2_FLOAT16=4]="PACKED_2X2_FLOAT16"})(Qt||(Qt={}));function lc(e,t){return[t,e]}function QO(e,t){return e*t}function uc(e){let t=v.sizeFromShape(e),n=Math.ceil(t/4);return v.sizeToSquarishShape(n)}function kl(e,t){return[Math.max(1,Math.ceil(t/2)),Math.max(1,Math.ceil(e/2))]}function ez(e,t){let[n,r]=kl(e,t);return n*r*4}function Xm(e,t){let n=e,r,a,s,i,o,l,c,u,h,d;return J().getNumber("WEBGL_VERSION")===2?(r=n.R32F,a=n.R16F,s=n.RGBA16F,i=n.RGBA32F,o=n.RED,c=4,u=1,h=n.HALF_FLOAT,d=n.FLOAT):(r=e.RGBA,a=e.RGBA,s=e.RGBA,i=n.RGBA,o=e.RGBA,c=4,u=4,h=t!=null?t.HALF_FLOAT_OES:null,d=e.FLOAT),l=e.RGBA,{internalFormatFloat:r,internalFormatHalfFloat:a,internalFormatPackedHalfFloat:s,internalFormatPackedFloat:i,textureFormatFloat:o,downloadTextureFormat:l,downloadUnpackNumChannels:c,defaultNumChannels:u,textureTypeHalfFloat:h,textureTypeFloat:d}}function xe(e,t){let n=t();return J().getBool("DEBUG")&&tz(e),n}function tz(e){let t=e.getError();if(t!==e.NO_ERROR)throw new Error("WebGL Error: "+Bw(e,t))}var nz=596e-10,rz=65504;function Ww(e){return!!(J().getBool("WEBGL_RENDER_FLOAT32_ENABLED")||e===0||nze.getExtension(t),'Extension "'+t+'" not supported on this browser.')}function Vw(e,t){let n=ia(e,()=>e.createShader(e.VERTEX_SHADER),"Unable to create vertex WebGLShader.");if(xe(e,()=>e.shaderSource(n,t)),xe(e,()=>e.compileShader(n)),e.getShaderParameter(n,e.COMPILE_STATUS)===!1)throw console.log(e.getShaderInfoLog(n)),new Error("Failed to compile vertex shader.");return n}function Uw(e,t){let n=ia(e,()=>e.createShader(e.FRAGMENT_SHADER),"Unable to create fragment WebGLShader.");if(xe(e,()=>e.shaderSource(n,t)),xe(e,()=>e.compileShader(n)),e.getShaderParameter(n,e.COMPILE_STATUS)===!1)throw az(t,e.getShaderInfoLog(n)),new Error("Failed to compile fragment shader.");return n}var sz=/ERROR: [0-9]+:([0-9]+):/g;function az(e,t){let n=sz.exec(t);if(n==null){console.log(`Couldn't parse line number in error: ${t}`),console.log(e);return}let r=+n[1],a=e.split(` -`),s=a.length.toString().length+2,i=a.map((h,d)=>v.rightPad((d+1).toString(),s)+h),o=0;for(let h=0;he.createProgram(),"Unable to create WebGLProgram.")}function Hw(e,t){if(xe(e,()=>e.linkProgram(t)),e.getProgramParameter(t,e.LINK_STATUS)===!1)throw console.log(e.getProgramInfoLog(t)),new Error("Failed to link vertex and fragment shaders.")}function tp(e,t){if(xe(e,()=>e.validateProgram(t)),e.getProgramParameter(t,e.VALIDATE_STATUS)===!1)throw console.log(e.getProgramInfoLog(t)),new Error("Shader program validation failed.")}function Gw(e,t){let n=ia(e,()=>e.createBuffer(),"Unable to create WebGLBuffer");return xe(e,()=>e.bindBuffer(e.ARRAY_BUFFER,n)),xe(e,()=>e.bufferData(e.ARRAY_BUFFER,t,e.STATIC_DRAW)),n}function qw(e,t){let n=ia(e,()=>e.createBuffer(),"Unable to create WebGLBuffer");return xe(e,()=>e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,n)),xe(e,()=>e.bufferData(e.ELEMENT_ARRAY_BUFFER,t,e.STATIC_DRAW)),n}function GO(){return J().getNumber("WEBGL_VERSION")===2?1:4}function Xw(e){return ia(e,()=>e.createTexture(),"Unable to create WebGLTexture.")}function Kw(e,t){let n=J().getNumber("WEBGL_MAX_TEXTURE_SIZE");if(e<=0||t<=0){let r=`[${e}x${t}]`;throw new Error("Requested texture size "+r+" is invalid.")}if(e>n||t>n){let r=`[${e}x${t}]`,a=`[${n}x${n}]`;throw new Error("Requested texture size "+r+" greater than WebGL maximum on this browser / GPU "+a+".")}}function Zw(e){return ia(e,()=>e.createFramebuffer(),"Unable to create WebGLFramebuffer.")}function jm(e,t,n,r,a,s,i){let o=e.getAttribLocation(t,n);return o===-1?!1:(xe(e,()=>e.bindBuffer(e.ARRAY_BUFFER,r)),xe(e,()=>e.vertexAttribPointer(o,a,e.FLOAT,!1,s,i)),xe(e,()=>e.enableVertexAttribArray(o)),!0)}function Yw(e,t,n){ub(e,n),xe(e,()=>e.activeTexture(e.TEXTURE0+n)),xe(e,()=>e.bindTexture(e.TEXTURE_2D,t))}function qO(e,t){ub(e,t),xe(e,()=>e.activeTexture(e.TEXTURE0+t)),xe(e,()=>e.bindTexture(e.TEXTURE_2D,null))}function Jw(e,t,n){return ia(e,()=>e.getUniformLocation(t,n),'uniform "'+n+'" not present in program.')}function Qw(e,t,n){return e.getUniformLocation(t,n)}function eb(e,t,n,r){xe(e,()=>Yw(e,t,r)),xe(e,()=>e.uniform1i(n,r))}function XO(e){xe(e,()=>e.bindFramebuffer(e.FRAMEBUFFER,null)),xe(e,()=>e.viewport(0,0,e.canvas.width,e.canvas.height)),xe(e,()=>e.scissor(0,0,e.canvas.width,e.canvas.height))}function np(e,t,n){xe(e,()=>e.bindFramebuffer(e.FRAMEBUFFER,n)),xe(e,()=>e.framebufferTexture2D(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,t,0))}function Hm(e,t){xe(e,()=>e.bindFramebuffer(e.FRAMEBUFFER,t)),xe(e,()=>e.framebufferTexture2D(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,null,0))}function sc(e){let t=e.checkFramebufferStatus(e.FRAMEBUFFER);if(t!==e.FRAMEBUFFER_COMPLETE)throw new Error("Error binding framebuffer: "+tb(e,t))}function tb(e,t){switch(t){case e.FRAMEBUFFER_INCOMPLETE_ATTACHMENT:return"FRAMEBUFFER_INCOMPLETE_ATTACHMENT";case e.FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT:return"FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT";case e.FRAMEBUFFER_INCOMPLETE_DIMENSIONS:return"FRAMEBUFFER_INCOMPLETE_DIMENSIONS";case e.FRAMEBUFFER_UNSUPPORTED:return"FRAMEBUFFER_UNSUPPORTED";default:return`unknown error ${t}`}}function ia(e,t,n){let r=xe(e,()=>t());if(r==null)throw new Error(n);return r}function ub(e,t){let n=e.MAX_COMBINED_TEXTURE_IMAGE_UNITS-1,r=t+e.TEXTURE0;if(rn){let a=`[gl.TEXTURE0, gl.TEXTURE${n}]`;throw new Error(`textureUnit must be in ${a}.`)}}function Ai(e,t=2){return v.sizeFromShape(e.slice(0,e.length-t))}function yi(e){if(e.length===0)throw Error("Cannot get rows and columns of an empty shape array.");return[e.length>1?e[e.length-2]:1,e[e.length-1]]}function rp(e){let t=[1,1,1];return e.length===0||e.length===1&&e[0]===1||(t=[Ai(e),...yi(e)]),t}function nb(e,t=!1){let n=J().getNumber("WEBGL_MAX_TEXTURE_SIZE");t&&(n=n*2,e=e.map((a,s)=>s>=e.length-2?v.nearestLargerEven(e[s]):e[s]),e.length===1&&(e=[2,e[0]])),e.length!==2&&(e=v.squeezeShape(e).newShape);let r=v.sizeFromShape(e);if(e.length<=1&&r<=n)return[1,r];if(e.length===2&&e[0]<=n&&e[1]<=n)return e;if(e.length===3&&e[0]*e[1]<=n&&e[2]<=n)return[e[0]*e[1],e[2]];if(e.length===3&&e[0]<=n&&e[1]*e[2]<=n)return[e[0],e[1]*e[2]];if(e.length===4&&e[0]*e[1]*e[2]<=n&&e[3]<=n)return[e[0]*e[1]*e[2],e[3]];if(e.length===4&&e[0]<=n&&e[1]*e[2]*e[3]<=n)return[e[0],e[1]*e[2]*e[3]];if(t){let a=Ai(e),s=2,i=2;return e.length&&([s,i]=yi(e)),r=a*(s/2)*(i/2),v.sizeToSquarishShape(r).map(o=>o*2)}return v.sizeToSquarishShape(r)}function sp(e){return e%2==0}function ic(e,t){if(e=e.slice(-2),t=t.slice(-2),v.arraysEqual(e,t)||!e.length||!t.length||e[0]===0||e[1]===0||t[0]===0||t[1]===0)return!0;if(e.length!==t.length){let n=e.slice(-1)[0],r=t.slice(-1)[0];if(n===r||sp(n)&&sp(r)&&(e[0]===1||t[0]===1))return!0}return e[1]===t[1]&&sp(e[0])&&sp(t[0])}var ip,op;function rb(e){if(ip==null){let t=Lr(e);ip=t.getParameter(t.MAX_TEXTURE_SIZE)}return ip}function KO(){ip=null}function ZO(){op=null}function ab(e){if(op==null){let t=Lr(e);op=t.getParameter(t.MAX_TEXTURE_IMAGE_UNITS)}return Math.min(16,op)}function sb(e){if(e===0)return 0;let t,n=Lr(e);return Xn(n,"EXT_disjoint_timer_query_webgl2")&&e===2?t=2:Xn(n,"EXT_disjoint_timer_query")?t=1:t=0,t}function Xn(e,t){return e.getExtension(t)!=null}function Gm(e){try{if(Lr(e)!=null)return!0}catch(t){return console.log("Error when getting WebGL context: ",t),!1}return!1}function ib(e){if(e===0)return!1;let t=Lr(e);if(e===1){if(!Xn(t,"OES_texture_float"))return!1}else if(!Xn(t,"EXT_color_buffer_float"))return!1;return Km(t)}function ob(e){if(e===0)return!1;let t=Lr(e);if(e===1){if(!Xn(t,"OES_texture_float")||!Xn(t,"WEBGL_color_buffer_float"))return!1}else{if(Xn(t,"EXT_color_buffer_float"))return Km(t);let n="EXT_color_buffer_half_float";if(Xn(t,n)){let r=t.getExtension(n);return iz(t,r)}return!1}return Km(t)}function Km(e){let t=Xm(e),n=e.createTexture();e.bindTexture(e.TEXTURE_2D,n);let r=1,a=1;e.texImage2D(e.TEXTURE_2D,0,t.internalFormatFloat,r,a,0,t.textureFormatFloat,t.textureTypeFloat,null);let s=e.createFramebuffer();e.bindFramebuffer(e.FRAMEBUFFER,s),e.framebufferTexture2D(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,n,0);let i=e.checkFramebufferStatus(e.FRAMEBUFFER)===e.FRAMEBUFFER_COMPLETE;return e.bindTexture(e.TEXTURE_2D,null),e.bindFramebuffer(e.FRAMEBUFFER,null),e.deleteTexture(n),e.deleteFramebuffer(s),i}function iz(e,t){let n=Xm(e,t),r=e.createTexture();e.bindTexture(e.TEXTURE_2D,r);let a=1,s=1;e.texImage2D(e.TEXTURE_2D,0,n.internalFormatHalfFloat,a,s,0,n.textureFormatFloat,n.textureTypeHalfFloat,null);let i=e.createFramebuffer();e.bindFramebuffer(e.FRAMEBUFFER,i),e.framebufferTexture2D(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,r,0);let o=e.checkFramebufferStatus(e.FRAMEBUFFER)===e.FRAMEBUFFER_COMPLETE;return e.bindTexture(e.TEXTURE_2D,null),e.bindFramebuffer(e.FRAMEBUFFER,null),e.deleteTexture(r),e.deleteFramebuffer(i),o}function lb(e){return e!==2?!1:Lr(e).fenceSync!=null}function vl(e,t){Array.isArray(e)||(e=[e]),e.forEach(n=>{n!=null&&v.assert(n.dtype!=="complex64",()=>`${t} does not support complex64 tensors in the WebGL backend.`)})}var Re=J();Re.registerFlag("HAS_WEBGL",()=>Re.getNumber("WEBGL_VERSION")>0);Re.registerFlag("WEBGL_VERSION",()=>Gm(2)?2:Gm(1)?1:0);Re.registerFlag("WEBGL_CHECK_NUMERICAL_PROBLEMS",()=>!1);Re.registerFlag("WEBGL_BUFFER_SUPPORTED",()=>Re.get("WEBGL_VERSION")===2);Re.registerFlag("WEBGL_CPU_FORWARD",()=>!0);Re.registerFlag("WEBGL_FORCE_F16_TEXTURES",()=>!1);Re.registerFlag("WEBGL_PACK",()=>Re.getBool("HAS_WEBGL"));Re.registerFlag("WEBGL_PACK_NORMALIZATION",()=>Re.getBool("WEBGL_PACK"));Re.registerFlag("WEBGL_PACK_CLIP",()=>Re.getBool("WEBGL_PACK"));Re.registerFlag("WEBGL_PACK_DEPTHWISECONV",()=>!1);Re.registerFlag("WEBGL_PACK_BINARY_OPERATIONS",()=>Re.getBool("WEBGL_PACK"));Re.registerFlag("WEBGL_PACK_UNARY_OPERATIONS",()=>Re.getBool("WEBGL_PACK"));Re.registerFlag("WEBGL_PACK_ARRAY_OPERATIONS",()=>Re.getBool("WEBGL_PACK"));Re.registerFlag("WEBGL_PACK_IMAGE_OPERATIONS",()=>Re.getBool("WEBGL_PACK"));Re.registerFlag("WEBGL_PACK_REDUCE",()=>Re.getBool("WEBGL_PACK"));Re.registerFlag("WEBGL_LAZILY_UNPACK",()=>Re.getBool("WEBGL_PACK"));Re.registerFlag("WEBGL_CONV_IM2COL",()=>Re.getBool("WEBGL_PACK"));Re.registerFlag("WEBGL_MAX_TEXTURE_SIZE",()=>rb(Re.getNumber("WEBGL_VERSION")));Re.registerFlag("WEBGL_MAX_TEXTURES_IN_SHADER",()=>ab(Re.getNumber("WEBGL_VERSION")));Re.registerFlag("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION",()=>{let e=Re.getNumber("WEBGL_VERSION");return e===0?0:sb(e)});Re.registerFlag("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE",()=>Re.getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")>0&&!$u.isMobile());Re.registerFlag("WEBGL_RENDER_FLOAT32_CAPABLE",()=>ib(Re.getNumber("WEBGL_VERSION")));Re.registerFlag("WEBGL_RENDER_FLOAT32_ENABLED",()=>Re.getBool("WEBGL_FORCE_F16_TEXTURES")?!1:Re.getBool("WEBGL_RENDER_FLOAT32_CAPABLE"));Re.registerFlag("WEBGL_DOWNLOAD_FLOAT_ENABLED",()=>ob(Re.getNumber("WEBGL_VERSION")));Re.registerFlag("WEBGL_FENCE_API_ENABLED",()=>lb(Re.getNumber("WEBGL_VERSION")));Re.registerFlag("WEBGL_SIZE_UPLOAD_UNIFORM",()=>Re.getBool("WEBGL_RENDER_FLOAT32_ENABLED")?4:0);Re.registerFlag("WEBGL_DELETE_TEXTURE_THRESHOLD",()=>-1,e=>{if(e<0&&e!==-1)throw new Error(`WEBGL_DELETE_TEXTURE_THRESHOLD must be -1 (indicating never delete) or at least 0, but got ${e}.`)});Re.registerFlag("WEBGL_FLUSH_THRESHOLD",()=>$u.isMobile()&&Re.getBool("IS_CHROME")?1:-1,e=>{if(e<0&&e!==-1)throw new Error(`WEBGL_FLUSH_THRESHOLD must be -1 (indicating never manual flush) or at least 0, but got ${e}.`)});function cn(){let e,t,n,r,a,s,i,o,l,c;return J().getNumber("WEBGL_VERSION")===2?(e="#version 300 es",t="in",n="out",r="in",a="texture",s="outputColor",i="out vec4 outputColor;",o=` +var Human = (() => { + var __create = Object.create; + var __defProp = Object.defineProperty; + var __getProtoOf = Object.getPrototypeOf; + var __hasOwnProp = Object.prototype.hasOwnProperty; + var __getOwnPropNames = Object.getOwnPropertyNames; + var __getOwnPropDesc = Object.getOwnPropertyDescriptor; + var __markAsModule = (target) => __defProp(target, "__esModule", {value: true}); + var __commonJS = (callback, module) => () => { + if (!module) { + module = {exports: {}}; + callback(module.exports, module); + } + return module.exports; + }; + var __export = (target, all5) => { + for (var name in all5) + __defProp(target, name, {get: all5[name], enumerable: true}); + }; + var __exportStar = (target, module, desc) => { + if (module && typeof module === "object" || typeof module === "function") { + for (let key of __getOwnPropNames(module)) + if (!__hasOwnProp.call(target, key) && key !== "default") + __defProp(target, key, {get: () => module[key], enumerable: !(desc = __getOwnPropDesc(module, key)) || desc.enumerable}); + } + return target; + }; + var __toModule = (module) => { + return __exportStar(__markAsModule(__defProp(module != null ? __create(__getProtoOf(module)) : {}, "default", module && module.__esModule && "default" in module ? {get: () => module.default, enumerable: true} : {value: module, enumerable: true})), module); + }; + var __accessCheck = (obj, member, msg) => { + if (!member.has(obj)) + throw TypeError("Cannot " + msg); + }; + var __privateGet = (obj, member, getter) => { + __accessCheck(obj, member, "read from private field"); + return getter ? getter.call(obj) : member.get(obj); + }; + var __privateSet = (obj, member, value, setter) => { + __accessCheck(obj, member, "write to private field"); + setter ? setter.call(obj, value) : member.set(obj, value); + return value; + }; + + // src/blazeface/facemesh.ts + var require_facemesh = __commonJS((exports) => { + __markAsModule(exports); + __export(exports, { + MediaPipeFaceMesh: () => MediaPipeFaceMesh, + load: () => load11 + }); + var MediaPipeFaceMesh = class { + constructor(blazeFace, blazeMeshModel, irisModel, config3) { + this.facePipeline = new Pipeline(blazeFace, blazeMeshModel, irisModel); + this.config = config3; + } + async estimateFaces(input2, config3) { + const predictions = await this.facePipeline.predict(input2, config3); + const results = []; + for (const prediction of predictions || []) { + if (prediction.isDisposedInternal) + continue; + const mesh = prediction.coords ? prediction.coords.arraySync() : []; + const meshRaw = mesh.map((pt) => [ + pt[0] / input2.shape[2], + pt[1] / input2.shape[1], + pt[2] / this.facePipeline.meshSize + ]); + const annotations3 = {}; + if (mesh && mesh.length > 0) { + for (const key of Object.keys(MESH_ANNOTATIONS)) + annotations3[key] = MESH_ANNOTATIONS[key].map((index) => mesh[index]); + } + const box3 = prediction.box ? [ + Math.max(0, prediction.box.startPoint[0]), + Math.max(0, prediction.box.startPoint[1]), + Math.min(input2.shape[1], prediction.box.endPoint[0]) - Math.max(0, prediction.box.startPoint[0]), + Math.min(input2.shape[2], prediction.box.endPoint[1]) - Math.max(0, prediction.box.startPoint[1]) + ] : 0; + const boxRaw = prediction.box ? [ + prediction.box.startPoint[0] / input2.shape[2], + prediction.box.startPoint[1] / input2.shape[1], + (prediction.box.endPoint[0] - prediction.box.startPoint[0]) / input2.shape[2], + (prediction.box.endPoint[1] - prediction.box.startPoint[1]) / input2.shape[1] + ] : []; + results.push({ + confidence: prediction.faceConfidence || prediction.boxConfidence || 0, + boxConfidence: prediction.boxConfidence, + faceConfidence: prediction.faceConfidence, + box: box3, + boxRaw, + mesh, + meshRaw, + annotations: annotations3, + image: prediction.image ? prediction.image.clone() : null + }); + if (prediction.coords) + prediction.coords.dispose(); + if (prediction.image) + prediction.image.dispose(); + } + return results; + } + }; + var faceModels = [null, null, null]; + async function load11(config3) { + faceModels = await Promise.all([ + !faceModels[0] && config3.face.enabled ? load6(config3) : null, + !faceModels[1] && config3.face.mesh.enabled ? loadGraphModel(config3.face.mesh.modelPath, {fromTFHub: config3.face.mesh.modelPath.includes("tfhub.dev")}) : null, + !faceModels[2] && config3.face.iris.enabled ? loadGraphModel(config3.face.iris.modelPath, {fromTFHub: config3.face.iris.modelPath.includes("tfhub.dev")}) : null + ]); + const faceMesh = new MediaPipeFaceMesh(faceModels[0], faceModels[1], faceModels[2], config3); + if (config3.face.mesh.enabled && config3.debug) + log(`load model: ${config3.face.mesh.modelPath.match(/\/(.*)\./)[1]}`); + if (config3.face.iris.enabled && config3.debug) + log(`load model: ${config3.face.iris.modelPath.match(/\/(.*)\./)[1]}`); + return faceMesh; + } + exports.triangulation = TRI468; + }); + + // src/posenet/keypoints.ts + var require_keypoints = __commonJS((exports) => { + __markAsModule(exports); + __export(exports, { + NUM_KEYPOINTS: () => NUM_KEYPOINTS3, + connectedPartIndices: () => connectedPartIndices, + partChannels: () => partChannels, + partIds: () => partIds2, + partNames: () => partNames2, + poseChain: () => poseChain2 + }); + var partNames2 = [ + "nose", + "leftEye", + "rightEye", + "leftEar", + "rightEar", + "leftShoulder", + "rightShoulder", + "leftElbow", + "rightElbow", + "leftWrist", + "rightWrist", + "leftHip", + "rightHip", + "leftKnee", + "rightKnee", + "leftAnkle", + "rightAnkle" + ]; + var NUM_KEYPOINTS3 = exports.partNames.length; + var partIds2 = exports.partNames.reduce((result, jointName, i) => { + result[jointName] = i; + return result; + }, {}); + var connectedPartNames = [ + ["leftHip", "leftShoulder"], + ["leftElbow", "leftShoulder"], + ["leftElbow", "leftWrist"], + ["leftHip", "leftKnee"], + ["leftKnee", "leftAnkle"], + ["rightHip", "rightShoulder"], + ["rightElbow", "rightShoulder"], + ["rightElbow", "rightWrist"], + ["rightHip", "rightKnee"], + ["rightKnee", "rightAnkle"], + ["leftShoulder", "rightShoulder"], + ["leftHip", "rightHip"] + ]; + var connectedPartIndices = connectedPartNames.map(([jointNameA, jointNameB]) => [partIds2[jointNameA], partIds2[jointNameB]]); + var poseChain2 = [ + ["nose", "leftEye"], + ["leftEye", "leftEar"], + ["nose", "rightEye"], + ["rightEye", "rightEar"], + ["nose", "leftShoulder"], + ["leftShoulder", "leftElbow"], + ["leftElbow", "leftWrist"], + ["leftShoulder", "leftHip"], + ["leftHip", "leftKnee"], + ["leftKnee", "leftAnkle"], + ["nose", "rightShoulder"], + ["rightShoulder", "rightElbow"], + ["rightElbow", "rightWrist"], + ["rightShoulder", "rightHip"], + ["rightHip", "rightKnee"], + ["rightKnee", "rightAnkle"] + ]; + var partChannels = [ + "left_face", + "right_face", + "right_upper_leg_front", + "right_lower_leg_back", + "right_upper_leg_back", + "left_lower_leg_front", + "left_upper_leg_front", + "left_upper_leg_back", + "left_lower_leg_back", + "right_feet", + "right_lower_leg_front", + "left_feet", + "torso_front", + "torso_back", + "right_upper_arm_front", + "right_upper_arm_back", + "right_lower_arm_back", + "left_lower_arm_front", + "left_upper_arm_front", + "left_upper_arm_back", + "left_lower_arm_back", + "right_hand", + "right_lower_arm_front", + "left_hand" + ]; + }); + + // src/human.ts + var human_exports = {}; + __export(human_exports, { + Human: () => Human, + default: () => Human + }); + + // src/helpers.ts + function log(...msg) { + const dt = new Date(); + const ts = `${dt.getHours().toString().padStart(2, "0")}:${dt.getMinutes().toString().padStart(2, "0")}:${dt.getSeconds().toString().padStart(2, "0")}.${dt.getMilliseconds().toString().padStart(3, "0")}`; + if (msg) + console.log(ts, "Human:", ...msg); + } + var now = () => { + if (typeof performance !== "undefined") + return performance.now(); + return parseInt((Number(process.hrtime.bigint()) / 1e3 / 1e3).toString()); + }; + function mergeDeep(...objects) { + const isObject = (obj) => obj && typeof obj === "object"; + return objects.reduce((prev, obj) => { + Object.keys(obj || {}).forEach((key) => { + const pVal = prev[key]; + const oVal = obj[key]; + if (Array.isArray(pVal) && Array.isArray(oVal)) + prev[key] = pVal.concat(...oVal); + else if (isObject(pVal) && isObject(oVal)) + prev[key] = mergeDeep(pVal, oVal); + else + prev[key] = oVal; + }); + return prev; + }, {}); + } + + // src/sysinfo.ts + function info() { + let platform; + let agent; + if (typeof navigator !== "undefined") { + const raw = navigator.userAgent.match(/\(([^()]+)\)/g); + if (raw && raw[0]) { + platform = raw[0].match(/\(([^()]+)\)/g)[0].replace(/\(|\)/g, ""); + agent = navigator.userAgent.replace(raw[0], ""); + if (platform[1]) + agent = agent.replace(raw[1], ""); + agent = agent.replace(/ /g, " "); + } + } else if (typeof process !== "undefined") { + platform = `${process.platform} ${process.arch}`; + agent = `NodeJS ${process.version}`; + } + return {platform, agent}; + } + + // dist/tfjs.esm.js + var tfjs_esm_exports = {}; + __export(tfjs_esm_exports, { + Abs: () => Abs, + Acos: () => Acos, + Acosh: () => Acosh, + AdadeltaOptimizer: () => AdadeltaOptimizer, + AdagradOptimizer: () => AdagradOptimizer, + AdamOptimizer: () => AdamOptimizer, + AdamaxOptimizer: () => AdamaxOptimizer, + Add: () => Add, + AddN: () => AddN, + All: () => All, + Any: () => Any, + ArgMax: () => ArgMax, + ArgMin: () => ArgMin, + Asin: () => Asin, + Asinh: () => Asinh, + Atan: () => Atan, + Atan2: () => Atan2, + Atanh: () => Atanh, + AvgPool: () => AvgPool, + AvgPool3D: () => AvgPool3D, + AvgPool3DGrad: () => AvgPool3DGrad, + AvgPoolGrad: () => AvgPoolGrad, + BackendWasm: () => BackendWasm, + BatchMatMul: () => BatchMatMul, + BatchToSpaceND: () => BatchToSpaceND, + Bincount: () => Bincount, + BroadcastTo: () => BroadcastTo, + Callback: () => Callback, + CallbackList: () => CallbackList, + Cast: () => Cast, + Ceil: () => Ceil, + ClipByValue: () => ClipByValue, + Complex: () => Complex, + ComplexAbs: () => ComplexAbs, + Concat: () => Concat, + Conv2D: () => Conv2D, + Conv2DBackpropFilter: () => Conv2DBackpropFilter, + Conv2DBackpropInput: () => Conv2DBackpropInput, + Conv3D: () => Conv3D, + Conv3DBackpropFilterV2: () => Conv3DBackpropFilterV2, + Conv3DBackpropInputV2: () => Conv3DBackpropInputV2, + Cos: () => Cos, + Cosh: () => Cosh, + CropAndResize: () => CropAndResize, + Cumsum: () => Cumsum, + CustomCallback: () => CustomCallback, + DataStorage: () => DataStorage, + DenseBincount: () => DenseBincount, + DepthToSpace: () => DepthToSpace, + DepthwiseConv2dNative: () => DepthwiseConv2dNative, + DepthwiseConv2dNativeBackpropFilter: () => DepthwiseConv2dNativeBackpropFilter, + DepthwiseConv2dNativeBackpropInput: () => DepthwiseConv2dNativeBackpropInput, + Diag: () => Diag, + Dilation2D: () => Dilation2D, + Dilation2DBackpropFilter: () => Dilation2DBackpropFilter, + Dilation2DBackpropInput: () => Dilation2DBackpropInput, + ENV: () => ENV, + EarlyStopping: () => EarlyStopping, + Elu: () => Elu, + EluGrad: () => EluGrad, + Environment: () => Environment, + Equal: () => Equal, + Erf: () => Erf, + Exp: () => Exp, + ExpandDims: () => ExpandDims, + Expm1: () => Expm1, + FFT: () => FFT, + Fill: () => Fill, + FlipLeftRight: () => FlipLeftRight, + Floor: () => Floor, + FloorDiv: () => FloorDiv, + FromPixels: () => FromPixels, + FusedBatchNorm: () => FusedBatchNorm, + FusedConv2D: () => FusedConv2D, + FusedDepthwiseConv2D: () => FusedDepthwiseConv2D, + GPGPUContext: () => GPGPUContext, + GatherNd: () => GatherNd, + GatherV2: () => GatherV2, + GraphModel: () => GraphModel, + Greater: () => Greater, + GreaterEqual: () => GreaterEqual, + History: () => History, + IFFT: () => IFFT, + Identity: () => Identity, + Imag: () => Imag, + InputSpec: () => InputSpec, + IsFinite: () => IsFinite, + IsInf: () => IsInf, + IsNan: () => IsNan, + KernelBackend: () => KernelBackend, + LRN: () => LRN, + LRNGrad: () => LRNGrad, + LayerVariable: () => LayerVariable, + LayersModel: () => LayersModel, + LeakyRelu: () => LeakyRelu, + Less: () => Less, + LessEqual: () => LessEqual, + LinSpace: () => LinSpace, + Log: () => Log, + Log1p: () => Log1p, + LogSoftmax: () => LogSoftmax, + LogicalAnd: () => LogicalAnd, + LogicalNot: () => LogicalNot, + LogicalOr: () => LogicalOr, + MathBackendCPU: () => MathBackendCPU, + MathBackendWebGL: () => MathBackendWebGL, + Max: () => Max, + MaxPool: () => MaxPool, + MaxPool3D: () => MaxPool3D, + MaxPool3DGrad: () => MaxPool3DGrad, + MaxPoolGrad: () => MaxPoolGrad, + MaxPoolWithArgmax: () => MaxPoolWithArgmax, + Maximum: () => Maximum, + Mean: () => Mean, + Min: () => Min, + Minimum: () => Minimum, + MirrorPad: () => MirrorPad, + Mod: () => Mod, + MomentumOptimizer: () => MomentumOptimizer, + Multinomial: () => Multinomial, + Multiply: () => Multiply, + Neg: () => Neg, + NonMaxSuppressionV3: () => NonMaxSuppressionV3, + NonMaxSuppressionV4: () => NonMaxSuppressionV4, + NonMaxSuppressionV5: () => NonMaxSuppressionV5, + NotEqual: () => NotEqual, + OP_SCOPE_SUFFIX: () => OP_SCOPE_SUFFIX, + OneHot: () => OneHot, + OnesLike: () => OnesLike, + Optimizer: () => Optimizer, + Pack: () => Pack, + PadV2: () => PadV2, + Pool: () => Pool, + Pow: () => Pow, + Prelu: () => Prelu, + Prod: () => Prod, + RMSPropOptimizer: () => RMSPropOptimizer, + RNN: () => RNN, + Range: () => Range, + Rank: () => Rank, + Real: () => Real, + RealDiv: () => RealDiv, + Reciprocal: () => Reciprocal, + Reduction: () => Reduction, + Relu: () => Relu, + Relu6: () => Relu6, + Reshape: () => Reshape, + ResizeBilinear: () => ResizeBilinear, + ResizeBilinearGrad: () => ResizeBilinearGrad, + ResizeNearestNeighbor: () => ResizeNearestNeighbor, + ResizeNearestNeighborGrad: () => ResizeNearestNeighborGrad, + Reverse: () => Reverse, + RotateWithOffset: () => RotateWithOffset, + Round: () => Round, + Rsqrt: () => Rsqrt, + SGDOptimizer: () => SGDOptimizer, + ScatterNd: () => ScatterNd, + Select: () => Select, + Selu: () => Selu, + Sequential: () => Sequential, + Sigmoid: () => Sigmoid, + Sign: () => Sign, + Sin: () => Sin, + Sinh: () => Sinh, + Slice: () => Slice, + Softmax: () => Softmax, + Softplus: () => Softplus, + SpaceToBatchND: () => SpaceToBatchND, + SparseToDense: () => SparseToDense, + SplitV: () => SplitV, + Sqrt: () => Sqrt, + Square: () => Square, + SquaredDifference: () => SquaredDifference, + Step: () => Step, + StridedSlice: () => StridedSlice, + Sub: () => Sub, + Sum: () => Sum, + SymbolicTensor: () => SymbolicTensor, + Tan: () => Tan, + Tanh: () => Tanh, + Tensor: () => Tensor, + TensorBuffer: () => TensorBuffer, + Tile: () => Tile, + TopK: () => TopK, + Transform: () => Transform, + Transpose: () => Transpose, + Unique: () => Unique, + Unpack: () => Unpack, + UnsortedSegmentSum: () => UnsortedSegmentSum, + Variable: () => Variable, + ZerosLike: () => ZerosLike, + _FusedMatMul: () => _FusedMatMul, + abs: () => abs, + acos: () => acos, + acosh: () => acosh, + add: () => add2, + addN: () => addN, + all: () => all, + any: () => any, + argMax: () => argMax, + argMin: () => argMin, + asin: () => asin, + asinh: () => asinh, + atan: () => atan, + atan2: () => atan2, + atanh: () => atanh, + avgPool: () => avgPool, + avgPool3d: () => avgPool3d, + backend: () => backend, + backend_util: () => backend_util_exports, + basicLSTMCell: () => basicLSTMCell, + batchNorm: () => batchNorm, + batchNorm2d: () => batchNorm2d, + batchNorm3d: () => batchNorm3d, + batchNorm4d: () => batchNorm4d, + batchToSpaceND: () => batchToSpaceND, + bincount: () => bincount, + booleanMaskAsync: () => booleanMaskAsync, + broadcastTo: () => broadcastTo, + browser: () => browser_exports, + buffer: () => buffer, + callbacks: () => callbacks, + cast: () => cast, + ceil: () => ceil, + clipByValue: () => clipByValue, + clone: () => clone, + complex: () => complex, + concat: () => concat, + concat1d: () => concat1d, + concat2d: () => concat2d, + concat3d: () => concat3d, + concat4d: () => concat4d, + constraints: () => exports_constraints_exports, + conv1d: () => conv1d, + conv2d: () => conv2d, + conv2dTranspose: () => conv2dTranspose, + conv3d: () => conv3d, + conv3dTranspose: () => conv3dTranspose, + copyRegisteredKernels: () => copyRegisteredKernels, + cos: () => cos, + cosh: () => cosh, + cosineWindow: () => cosineWindow, + cumsum: () => cumsum, + customGrad: () => customGrad, + data: () => dist_exports, + denseBincount: () => denseBincount, + deprecationWarn: () => deprecationWarn, + depthToSpace: () => depthToSpace, + depthwiseConv2d: () => depthwiseConv2d, + deregisterOp: () => deregisterOp, + device_util: () => device_util_exports, + diag: () => diag, + dilation2d: () => dilation2d, + disableDeprecationWarnings: () => disableDeprecationWarnings, + dispose: () => dispose, + disposeVariables: () => disposeVariables, + div: () => div, + divNoNan: () => divNoNan, + dot: () => dot, + dropout: () => dropout, + elu: () => elu, + enableDebugMode: () => enableDebugMode, + enableProdMode: () => enableProdMode, + enclosingPowerOfTwo: () => enclosingPowerOfTwo, + engine: () => engine, + env: () => env, + equal: () => equal, + erf: () => erf, + exp: () => exp, + expandDims: () => expandDims, + expm1: () => expm1, + eye: () => eye, + fft: () => fft, + fill: () => fill, + findBackend: () => findBackend, + findBackendFactory: () => findBackendFactory, + floor: () => floor, + floorDiv: () => floorDiv, + forceHalfFloat: () => forceHalfFloat, + fused: () => fused_ops_exports, + gather: () => gather, + gatherND: () => gatherND, + gather_util: () => gather_nd_util_exports, + getBackend: () => getBackend, + getGradient: () => getGradient, + getKernel: () => getKernel, + getKernelsForBackend: () => getKernelsForBackend, + gpgpu_util: () => gpgpu_util_exports, + grad: () => grad, + grads: () => grads, + greater: () => greater, + greaterEqual: () => greaterEqual, + ifft: () => ifft, + imag: () => imag, + image: () => image, + inTopKAsync: () => inTopKAsync, + initializers: () => exports_initializers_exports, + input: () => input, + io: () => io_exports, + irfft: () => irfft, + isFinite: () => isFinite2, + isInf: () => isInf, + isNaN: () => isNaN2, + keep: () => keep, + kernel_impls: () => kernel_impls_exports, + layers: () => exports_layers_exports, + leakyRelu: () => leakyRelu, + less: () => less, + lessEqual: () => lessEqual, + linalg: () => linalg, + linspace: () => linspace, + loadGraphModel: () => loadGraphModel, + loadLayersModel: () => loadLayersModel, + localResponseNormalization: () => localResponseNormalization, + log: () => log2, + log1p: () => log1p, + logSigmoid: () => logSigmoid, + logSoftmax: () => logSoftmax, + logSumExp: () => logSumExp, + logicalAnd: () => logicalAnd, + logicalNot: () => logicalNot, + logicalOr: () => logicalOr, + logicalXor: () => logicalXor, + losses: () => losses, + matMul: () => matMul, + math: () => math_exports, + max: () => max, + maxPool: () => maxPool, + maxPool3d: () => maxPool3d, + maxPoolWithArgmax: () => maxPoolWithArgmax, + maximum: () => maximum, + mean: () => mean, + memory: () => memory, + metrics: () => exports_metrics_exports, + min: () => min, + minimum: () => minimum, + mirrorPad: () => mirrorPad, + mod: () => mod, + model: () => model, + models: () => exports_models_exports, + moments: () => moments, + movingAverage: () => movingAverage, + mul: () => mul, + multiRNNCell: () => multiRNNCell, + multinomial: () => multinomial, + neg: () => neg, + nextFrame: () => nextFrame, + norm: () => norm, + notEqual: () => notEqual, + oneHot: () => oneHot, + ones: () => ones2, + onesLike: () => onesLike, + op: () => op, + outerProduct: () => outerProduct, + pad: () => pad, + pad1d: () => pad1d, + pad2d: () => pad2d, + pad3d: () => pad3d, + pad4d: () => pad4d, + pool: () => pool, + pow: () => pow, + prelu: () => prelu, + print: () => print2, + prod: () => prod, + profile: () => profile, + rand: () => rand, + randomGamma: () => randomGamma, + randomNormal: () => randomNormal, + randomUniform: () => randomUniform, + range: () => range, + ready: () => ready, + real: () => real, + reciprocal: () => reciprocal, + registerBackend: () => registerBackend, + registerCallbackConstructor: () => registerCallbackConstructor, + registerGradient: () => registerGradient, + registerKernel: () => registerKernel, + registerOp: () => registerOp, + regularizers: () => exports_regularizers_exports, + relu: () => relu, + relu6: () => relu6, + removeBackend: () => removeBackend, + reshape: () => reshape, + reverse: () => reverse, + reverse1d: () => reverse1d, + reverse2d: () => reverse2d, + reverse3d: () => reverse3d, + reverse4d: () => reverse4d, + rfft: () => rfft, + round: () => round2, + rsqrt: () => rsqrt, + scalar: () => scalar, + scatterND: () => scatterND, + scatter_util: () => scatter_nd_util_exports, + selu: () => selu, + separableConv2d: () => separableConv2d, + sequential: () => sequential, + serialization: () => serialization_exports, + setBackend: () => setBackend, + setPlatform: () => setPlatform, + setWasmPath: () => setWasmPath, + setWasmPaths: () => setWasmPaths, + setWebGLContext: () => setWebGLContext, + setdiff1dAsync: () => setdiff1dAsync, + shared: () => shared_exports, + sigmoid: () => sigmoid, + sign: () => sign, + signal: () => signal, + sin: () => sin, + sinh: () => sinh, + slice: () => slice, + slice1d: () => slice1d, + slice2d: () => slice2d, + slice3d: () => slice3d, + slice4d: () => slice4d, + slice_util: () => slice_util_exports, + softmax: () => softmax, + softplus: () => softplus, + spaceToBatchND: () => spaceToBatchND, + sparseToDense: () => sparseToDense, + spectral: () => spectral, + split: () => split, + sqrt: () => sqrt, + square: () => square, + squaredDifference: () => squaredDifference, + squeeze: () => squeeze, + stack: () => stack, + step: () => step, + stridedSlice: () => stridedSlice, + sub: () => sub, + sum: () => sum2, + sumOutType: () => sumOutType, + tan: () => tan, + tanh: () => tanh2, + tensor: () => tensor, + tensor1d: () => tensor1d, + tensor2d: () => tensor2d, + tensor3d: () => tensor3d, + tensor4d: () => tensor4d, + tensor5d: () => tensor5d, + tensor6d: () => tensor6d, + tensor_util: () => tensor_util_exports, + test_util: () => test_util_exports, + tidy: () => tidy, + tile: () => tile, + time: () => time, + topk: () => topk, + train: () => train, + transpose: () => transpose, + truncatedNormal: () => truncatedNormal, + unique: () => unique, + unregisterGradient: () => unregisterGradient, + unregisterKernel: () => unregisterKernel, + unsortedSegmentSum: () => unsortedSegmentSum, + unstack: () => unstack, + upcastType: () => upcastType, + util: () => util_exports, + valueAndGrad: () => valueAndGrad, + valueAndGrads: () => valueAndGrads, + variable: () => variable, + variableGrads: () => variableGrads, + version: () => version13, + version_converter: () => version11, + version_core: () => version6, + version_cpu: () => version7, + version_layers: () => version10, + version_wasm: () => version9, + version_webgl: () => version8, + webgl: () => webgl, + webgl_util: () => webgl_util_exports, + where: () => where, + whereAsync: () => whereAsync, + zeros: () => zeros, + zerosLike: () => zerosLike + }); + var __create2 = Object.create; + var __defProp2 = Object.defineProperty; + var __getProtoOf2 = Object.getPrototypeOf; + var __hasOwnProp2 = Object.prototype.hasOwnProperty; + var __getOwnPropNames2 = Object.getOwnPropertyNames; + var __getOwnPropDesc2 = Object.getOwnPropertyDescriptor; + var __markAsModule2 = (target) => __defProp2(target, "__esModule", {value: true}); + var __commonJS2 = (callback, module) => () => { + if (!module) { + module = {exports: {}}; + callback(module.exports, module); + } + return module.exports; + }; + var __export2 = (target, all42) => { + for (var name in all42) + __defProp2(target, name, {get: all42[name], enumerable: true}); + }; + var __exportStar2 = (target, module, desc) => { + if (module && typeof module === "object" || typeof module === "function") { + for (let key of __getOwnPropNames2(module)) + if (!__hasOwnProp2.call(target, key) && key !== "default") + __defProp2(target, key, {get: () => module[key], enumerable: !(desc = __getOwnPropDesc2(module, key)) || desc.enumerable}); + } + return target; + }; + var __toModule2 = (module) => { + return __exportStar2(__markAsModule2(__defProp2(module != null ? __create2(__getProtoOf2(module)) : {}, "default", module && module.__esModule && "default" in module ? {get: () => module.default, enumerable: true} : {value: module, enumerable: true})), module); + }; + var require_browser = __commonJS2(() => { + }); + var require_alea = __commonJS2((exports, module) => { + (function(global2, module2, define2) { + function Alea(seed) { + var me = this, mash = Mash(); + me.next = function() { + var t = 2091639 * me.s0 + me.c * 23283064365386963e-26; + me.s0 = me.s1; + me.s1 = me.s2; + return me.s2 = t - (me.c = t | 0); + }; + me.c = 1; + me.s0 = mash(" "); + me.s1 = mash(" "); + me.s2 = mash(" "); + me.s0 -= mash(seed); + if (me.s0 < 0) { + me.s0 += 1; + } + me.s1 -= mash(seed); + if (me.s1 < 0) { + me.s1 += 1; + } + me.s2 -= mash(seed); + if (me.s2 < 0) { + me.s2 += 1; + } + mash = null; + } + function copy(f, t) { + t.c = f.c; + t.s0 = f.s0; + t.s1 = f.s1; + t.s2 = f.s2; + return t; + } + function impl(seed, opts) { + var xg = new Alea(seed), state = opts && opts.state, prng = xg.next; + prng.int32 = function() { + return xg.next() * 4294967296 | 0; + }; + prng.double = function() { + return prng() + (prng() * 2097152 | 0) * 11102230246251565e-32; + }; + prng.quick = prng; + if (state) { + if (typeof state == "object") + copy(state, xg); + prng.state = function() { + return copy(xg, {}); + }; + } + return prng; + } + function Mash() { + var n = 4022871197; + var mash = function(data2) { + data2 = data2.toString(); + for (var i = 0; i < data2.length; i++) { + n += data2.charCodeAt(i); + var h = 0.02519603282416938 * n; + n = h >>> 0; + h -= n; + h *= n; + n = h >>> 0; + h -= n; + n += h * 4294967296; + } + return (n >>> 0) * 23283064365386963e-26; + }; + return mash; + } + if (module2 && module2.exports) { + module2.exports = impl; + } else if (define2 && define2.amd) { + define2(function() { + return impl; + }); + } else { + this.alea = impl; + } + })(exports, typeof module == "object" && module, typeof define == "function" && define); + }); + var require_xor128 = __commonJS2((exports, module) => { + (function(global2, module2, define2) { + function XorGen(seed) { + var me = this, strseed = ""; + me.x = 0; + me.y = 0; + me.z = 0; + me.w = 0; + me.next = function() { + var t = me.x ^ me.x << 11; + me.x = me.y; + me.y = me.z; + me.z = me.w; + return me.w ^= me.w >>> 19 ^ t ^ t >>> 8; + }; + if (seed === (seed | 0)) { + me.x = seed; + } else { + strseed += seed; + } + for (var k = 0; k < strseed.length + 64; k++) { + me.x ^= strseed.charCodeAt(k) | 0; + me.next(); + } + } + function copy(f, t) { + t.x = f.x; + t.y = f.y; + t.z = f.z; + t.w = f.w; + return t; + } + function impl(seed, opts) { + var xg = new XorGen(seed), state = opts && opts.state, prng = function() { + return (xg.next() >>> 0) / 4294967296; + }; + prng.double = function() { + do { + var top = xg.next() >>> 11, bot = (xg.next() >>> 0) / 4294967296, result = (top + bot) / (1 << 21); + } while (result === 0); + return result; + }; + prng.int32 = xg.next; + prng.quick = prng; + if (state) { + if (typeof state == "object") + copy(state, xg); + prng.state = function() { + return copy(xg, {}); + }; + } + return prng; + } + if (module2 && module2.exports) { + module2.exports = impl; + } else if (define2 && define2.amd) { + define2(function() { + return impl; + }); + } else { + this.xor128 = impl; + } + })(exports, typeof module == "object" && module, typeof define == "function" && define); + }); + var require_xorwow = __commonJS2((exports, module) => { + (function(global2, module2, define2) { + function XorGen(seed) { + var me = this, strseed = ""; + me.next = function() { + var t = me.x ^ me.x >>> 2; + me.x = me.y; + me.y = me.z; + me.z = me.w; + me.w = me.v; + return (me.d = me.d + 362437 | 0) + (me.v = me.v ^ me.v << 4 ^ (t ^ t << 1)) | 0; + }; + me.x = 0; + me.y = 0; + me.z = 0; + me.w = 0; + me.v = 0; + if (seed === (seed | 0)) { + me.x = seed; + } else { + strseed += seed; + } + for (var k = 0; k < strseed.length + 64; k++) { + me.x ^= strseed.charCodeAt(k) | 0; + if (k == strseed.length) { + me.d = me.x << 10 ^ me.x >>> 4; + } + me.next(); + } + } + function copy(f, t) { + t.x = f.x; + t.y = f.y; + t.z = f.z; + t.w = f.w; + t.v = f.v; + t.d = f.d; + return t; + } + function impl(seed, opts) { + var xg = new XorGen(seed), state = opts && opts.state, prng = function() { + return (xg.next() >>> 0) / 4294967296; + }; + prng.double = function() { + do { + var top = xg.next() >>> 11, bot = (xg.next() >>> 0) / 4294967296, result = (top + bot) / (1 << 21); + } while (result === 0); + return result; + }; + prng.int32 = xg.next; + prng.quick = prng; + if (state) { + if (typeof state == "object") + copy(state, xg); + prng.state = function() { + return copy(xg, {}); + }; + } + return prng; + } + if (module2 && module2.exports) { + module2.exports = impl; + } else if (define2 && define2.amd) { + define2(function() { + return impl; + }); + } else { + this.xorwow = impl; + } + })(exports, typeof module == "object" && module, typeof define == "function" && define); + }); + var require_xorshift7 = __commonJS2((exports, module) => { + (function(global2, module2, define2) { + function XorGen(seed) { + var me = this; + me.next = function() { + var X = me.x, i = me.i, t, v, w; + t = X[i]; + t ^= t >>> 7; + v = t ^ t << 24; + t = X[i + 1 & 7]; + v ^= t ^ t >>> 10; + t = X[i + 3 & 7]; + v ^= t ^ t >>> 3; + t = X[i + 4 & 7]; + v ^= t ^ t << 7; + t = X[i + 7 & 7]; + t = t ^ t << 13; + v ^= t ^ t << 9; + X[i] = v; + me.i = i + 1 & 7; + return v; + }; + function init2(me2, seed2) { + var j, w, X = []; + if (seed2 === (seed2 | 0)) { + w = X[0] = seed2; + } else { + seed2 = "" + seed2; + for (j = 0; j < seed2.length; ++j) { + X[j & 7] = X[j & 7] << 15 ^ seed2.charCodeAt(j) + X[j + 1 & 7] << 13; + } + } + while (X.length < 8) + X.push(0); + for (j = 0; j < 8 && X[j] === 0; ++j) + ; + if (j == 8) + w = X[7] = -1; + else + w = X[j]; + me2.x = X; + me2.i = 0; + for (j = 256; j > 0; --j) { + me2.next(); + } + } + init2(me, seed); + } + function copy(f, t) { + t.x = f.x.slice(); + t.i = f.i; + return t; + } + function impl(seed, opts) { + if (seed == null) + seed = +new Date(); + var xg = new XorGen(seed), state = opts && opts.state, prng = function() { + return (xg.next() >>> 0) / 4294967296; + }; + prng.double = function() { + do { + var top = xg.next() >>> 11, bot = (xg.next() >>> 0) / 4294967296, result = (top + bot) / (1 << 21); + } while (result === 0); + return result; + }; + prng.int32 = xg.next; + prng.quick = prng; + if (state) { + if (state.x) + copy(state, xg); + prng.state = function() { + return copy(xg, {}); + }; + } + return prng; + } + if (module2 && module2.exports) { + module2.exports = impl; + } else if (define2 && define2.amd) { + define2(function() { + return impl; + }); + } else { + this.xorshift7 = impl; + } + })(exports, typeof module == "object" && module, typeof define == "function" && define); + }); + var require_xor4096 = __commonJS2((exports, module) => { + (function(global2, module2, define2) { + function XorGen(seed) { + var me = this; + me.next = function() { + var w = me.w, X = me.X, i = me.i, t, v; + me.w = w = w + 1640531527 | 0; + v = X[i + 34 & 127]; + t = X[i = i + 1 & 127]; + v ^= v << 13; + t ^= t << 17; + v ^= v >>> 15; + t ^= t >>> 12; + v = X[i] = v ^ t; + me.i = i; + return v + (w ^ w >>> 16) | 0; + }; + function init2(me2, seed2) { + var t, v, i, j, w, X = [], limit = 128; + if (seed2 === (seed2 | 0)) { + v = seed2; + seed2 = null; + } else { + seed2 = seed2 + "\0"; + v = 0; + limit = Math.max(limit, seed2.length); + } + for (i = 0, j = -32; j < limit; ++j) { + if (seed2) + v ^= seed2.charCodeAt((j + 32) % seed2.length); + if (j === 0) + w = v; + v ^= v << 10; + v ^= v >>> 15; + v ^= v << 4; + v ^= v >>> 13; + if (j >= 0) { + w = w + 1640531527 | 0; + t = X[j & 127] ^= v + w; + i = t == 0 ? i + 1 : 0; + } + } + if (i >= 128) { + X[(seed2 && seed2.length || 0) & 127] = -1; + } + i = 127; + for (j = 4 * 128; j > 0; --j) { + v = X[i + 34 & 127]; + t = X[i = i + 1 & 127]; + v ^= v << 13; + t ^= t << 17; + v ^= v >>> 15; + t ^= t >>> 12; + X[i] = v ^ t; + } + me2.w = w; + me2.X = X; + me2.i = i; + } + init2(me, seed); + } + function copy(f, t) { + t.i = f.i; + t.w = f.w; + t.X = f.X.slice(); + return t; + } + ; + function impl(seed, opts) { + if (seed == null) + seed = +new Date(); + var xg = new XorGen(seed), state = opts && opts.state, prng = function() { + return (xg.next() >>> 0) / 4294967296; + }; + prng.double = function() { + do { + var top = xg.next() >>> 11, bot = (xg.next() >>> 0) / 4294967296, result = (top + bot) / (1 << 21); + } while (result === 0); + return result; + }; + prng.int32 = xg.next; + prng.quick = prng; + if (state) { + if (state.X) + copy(state, xg); + prng.state = function() { + return copy(xg, {}); + }; + } + return prng; + } + if (module2 && module2.exports) { + module2.exports = impl; + } else if (define2 && define2.amd) { + define2(function() { + return impl; + }); + } else { + this.xor4096 = impl; + } + })(exports, typeof module == "object" && module, typeof define == "function" && define); + }); + var require_tychei = __commonJS2((exports, module) => { + (function(global2, module2, define2) { + function XorGen(seed) { + var me = this, strseed = ""; + me.next = function() { + var b = me.b, c = me.c, d = me.d, a = me.a; + b = b << 25 ^ b >>> 7 ^ c; + c = c - d | 0; + d = d << 24 ^ d >>> 8 ^ a; + a = a - b | 0; + me.b = b = b << 20 ^ b >>> 12 ^ c; + me.c = c = c - d | 0; + me.d = d << 16 ^ c >>> 16 ^ a; + return me.a = a - b | 0; + }; + me.a = 0; + me.b = 0; + me.c = 2654435769 | 0; + me.d = 1367130551; + if (seed === Math.floor(seed)) { + me.a = seed / 4294967296 | 0; + me.b = seed | 0; + } else { + strseed += seed; + } + for (var k = 0; k < strseed.length + 20; k++) { + me.b ^= strseed.charCodeAt(k) | 0; + me.next(); + } + } + function copy(f, t) { + t.a = f.a; + t.b = f.b; + t.c = f.c; + t.d = f.d; + return t; + } + ; + function impl(seed, opts) { + var xg = new XorGen(seed), state = opts && opts.state, prng = function() { + return (xg.next() >>> 0) / 4294967296; + }; + prng.double = function() { + do { + var top = xg.next() >>> 11, bot = (xg.next() >>> 0) / 4294967296, result = (top + bot) / (1 << 21); + } while (result === 0); + return result; + }; + prng.int32 = xg.next; + prng.quick = prng; + if (state) { + if (typeof state == "object") + copy(state, xg); + prng.state = function() { + return copy(xg, {}); + }; + } + return prng; + } + if (module2 && module2.exports) { + module2.exports = impl; + } else if (define2 && define2.amd) { + define2(function() { + return impl; + }); + } else { + this.tychei = impl; + } + })(exports, typeof module == "object" && module, typeof define == "function" && define); + }); + var require_crypto = __commonJS2(() => { + }); + var require_seedrandom = __commonJS2((exports, module) => { + (function(pool3, math) { + var global2 = this, width = 256, chunks = 6, digits = 52, rngname = "random", startdenom = math.pow(width, chunks), significance = math.pow(2, digits), overflow = significance * 2, mask = width - 1, nodecrypto; + function seedrandom5(seed, options, callback) { + var key = []; + options = options == true ? {entropy: true} : options || {}; + var shortseed = mixkey(flatten4(options.entropy ? [seed, tostring(pool3)] : seed == null ? autoseed() : seed, 3), key); + var arc4 = new ARC4(key); + var prng = function() { + var n = arc4.g(chunks), d = startdenom, x = 0; + while (n < significance) { + n = (n + x) * width; + d *= width; + x = arc4.g(1); + } + while (n >= overflow) { + n /= 2; + d /= 2; + x >>>= 1; + } + return (n + x) / d; + }; + prng.int32 = function() { + return arc4.g(4) | 0; + }; + prng.quick = function() { + return arc4.g(4) / 4294967296; + }; + prng.double = prng; + mixkey(tostring(arc4.S), pool3); + return (options.pass || callback || function(prng2, seed2, is_math_call, state) { + if (state) { + if (state.S) { + copy(state, arc4); + } + prng2.state = function() { + return copy(arc4, {}); + }; + } + if (is_math_call) { + math[rngname] = prng2; + return seed2; + } else + return prng2; + })(prng, shortseed, "global" in options ? options.global : this == math, options.state); + } + math["seed" + rngname] = seedrandom5; + function ARC4(key) { + var t, keylen = key.length, me = this, i = 0, j = me.i = me.j = 0, s = me.S = []; + if (!keylen) { + key = [keylen++]; + } + while (i < width) { + s[i] = i++; + } + for (i = 0; i < width; i++) { + s[i] = s[j = mask & j + key[i % keylen] + (t = s[i])]; + s[j] = t; + } + (me.g = function(count2) { + var t2, r = 0, i2 = me.i, j2 = me.j, s2 = me.S; + while (count2--) { + t2 = s2[i2 = mask & i2 + 1]; + r = r * width + s2[mask & (s2[i2] = s2[j2 = mask & j2 + t2]) + (s2[j2] = t2)]; + } + me.i = i2; + me.j = j2; + return r; + })(width); + } + function copy(f, t) { + t.i = f.i; + t.j = f.j; + t.S = f.S.slice(); + return t; + } + ; + function flatten4(obj, depth) { + var result = [], typ = typeof obj, prop; + if (depth && typ == "object") { + for (prop in obj) { + try { + result.push(flatten4(obj[prop], depth - 1)); + } catch (e) { + } + } + } + return result.length ? result : typ == "string" ? obj : obj + "\0"; + } + function mixkey(seed, key) { + var stringseed = seed + "", smear, j = 0; + while (j < stringseed.length) { + key[mask & j] = mask & (smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++); + } + return tostring(key); + } + function autoseed() { + try { + var out; + if (nodecrypto && (out = nodecrypto.randomBytes)) { + out = out(width); + } else { + out = new Uint8Array(width); + (global2.crypto || global2.msCrypto).getRandomValues(out); + } + return tostring(out); + } catch (e) { + var browser = global2.navigator, plugins = browser && browser.plugins; + return [+new Date(), global2, plugins, global2.screen, tostring(pool3)]; + } + } + function tostring(a) { + return String.fromCharCode.apply(0, a); + } + mixkey(math.random(), pool3); + if (typeof module == "object" && module.exports) { + module.exports = seedrandom5; + try { + nodecrypto = require_crypto(); + } catch (ex) { + } + } else if (typeof define == "function" && define.amd) { + define(function() { + return seedrandom5; + }); + } + })([], Math); + }); + var require_seedrandom2 = __commonJS2((exports, module) => { + var alea5 = require_alea(); + var xor128 = require_xor128(); + var xorwow = require_xorwow(); + var xorshift7 = require_xorshift7(); + var xor4096 = require_xor4096(); + var tychei = require_tychei(); + var sr = require_seedrandom(); + sr.alea = alea5; + sr.xor128 = xor128; + sr.xorwow = xorwow; + sr.xorshift7 = xorshift7; + sr.xor4096 = xor4096; + sr.tychei = tychei; + module.exports = sr; + }); + var require_path = __commonJS2(() => { + }); + var require_worker_threads = __commonJS2(() => { + }); + var require_perf_hooks = __commonJS2(() => { + }); + var require_tfjs_backend_wasm_threaded_simd = __commonJS2((exports, module) => { + var WasmBackendModuleThreadedSimd = function() { + var _scriptDir = typeof document !== "undefined" && document.currentScript ? document.currentScript.src : void 0; + if (typeof __filename !== "undefined") + _scriptDir = _scriptDir || __filename; + return function(WasmBackendModuleThreadedSimd2) { + WasmBackendModuleThreadedSimd2 = WasmBackendModuleThreadedSimd2 || {}; + function GROWABLE_HEAP_I8() { + if (wasmMemory.buffer != buffer2) { + updateGlobalBufferAndViews(wasmMemory.buffer); + } + return HEAP8; + } + function GROWABLE_HEAP_U8() { + if (wasmMemory.buffer != buffer2) { + updateGlobalBufferAndViews(wasmMemory.buffer); + } + return HEAPU8; + } + function GROWABLE_HEAP_I32() { + if (wasmMemory.buffer != buffer2) { + updateGlobalBufferAndViews(wasmMemory.buffer); + } + return HEAP32; + } + function GROWABLE_HEAP_U32() { + if (wasmMemory.buffer != buffer2) { + updateGlobalBufferAndViews(wasmMemory.buffer); + } + return HEAPU32; + } + function GROWABLE_HEAP_F64() { + if (wasmMemory.buffer != buffer2) { + updateGlobalBufferAndViews(wasmMemory.buffer); + } + return HEAPF64; + } + var Module = typeof WasmBackendModuleThreadedSimd2 !== "undefined" ? WasmBackendModuleThreadedSimd2 : {}; + var readyPromiseResolve, readyPromiseReject; + Module["ready"] = new Promise(function(resolve, reject) { + readyPromiseResolve = resolve; + readyPromiseReject = reject; + }); + var moduleOverrides = {}; + var key; + for (key in Module) { + if (Module.hasOwnProperty(key)) { + moduleOverrides[key] = Module[key]; + } + } + var arguments_ = []; + var thisProgram = "./this.program"; + var quit_ = function(status, toThrow) { + throw toThrow; + }; + var ENVIRONMENT_IS_WEB = false; + var ENVIRONMENT_IS_WORKER = false; + var ENVIRONMENT_IS_NODE = false; + var ENVIRONMENT_IS_SHELL = false; + ENVIRONMENT_IS_WEB = typeof window === "object"; + ENVIRONMENT_IS_WORKER = typeof importScripts === "function"; + ENVIRONMENT_IS_NODE = typeof process === "object" && typeof process.versions === "object" && typeof process.versions.node === "string"; + ENVIRONMENT_IS_SHELL = !ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_NODE && !ENVIRONMENT_IS_WORKER; + var ENVIRONMENT_IS_PTHREAD = Module["ENVIRONMENT_IS_PTHREAD"] || false; + if (ENVIRONMENT_IS_PTHREAD) { + buffer2 = Module["buffer"]; + } + var scriptDirectory = ""; + function locateFile(path) { + if (Module["locateFile"]) { + return Module["locateFile"](path, scriptDirectory); + } + return scriptDirectory + path; + } + var read_, readAsync, readBinary, setWindowTitle; + var nodeFS; + var nodePath; + if (ENVIRONMENT_IS_NODE) { + if (ENVIRONMENT_IS_WORKER) { + scriptDirectory = require_path().dirname(scriptDirectory) + "/"; + } else { + scriptDirectory = __dirname + "/"; + } + read_ = function shell_read(filename, binary) { + if (!nodeFS) + nodeFS = require("fs"); + if (!nodePath) + nodePath = require_path(); + filename = nodePath["normalize"](filename); + return nodeFS["readFileSync"](filename, binary ? null : "utf8"); + }; + readBinary = function readBinary2(filename) { + var ret = read_(filename, true); + if (!ret.buffer) { + ret = new Uint8Array(ret); + } + assert3(ret.buffer); + return ret; + }; + if (process["argv"].length > 1) { + thisProgram = process["argv"][1].replace(/\\/g, "/"); + } + arguments_ = process["argv"].slice(2); + process["on"]("uncaughtException", function(ex) { + if (!(ex instanceof ExitStatus)) { + throw ex; + } + }); + process["on"]("unhandledRejection", abort); + quit_ = function(status) { + process["exit"](status); + }; + Module["inspect"] = function() { + return "[Emscripten Module object]"; + }; + var nodeWorkerThreads; + try { + nodeWorkerThreads = require_worker_threads(); + } catch (e) { + console.error('The "worker_threads" module is not supported in this node.js build - perhaps a newer version is needed?'); + throw e; + } + global.Worker = nodeWorkerThreads.Worker; + } else if (ENVIRONMENT_IS_SHELL) { + if (typeof read != "undefined") { + read_ = function shell_read(f) { + return read(f); + }; + } + readBinary = function readBinary2(f) { + var data2; + if (typeof readbuffer === "function") { + return new Uint8Array(readbuffer(f)); + } + data2 = read(f, "binary"); + assert3(typeof data2 === "object"); + return data2; + }; + if (typeof scriptArgs != "undefined") { + arguments_ = scriptArgs; + } else if (typeof arguments != "undefined") { + arguments_ = arguments; + } + if (typeof quit === "function") { + quit_ = function(status) { + quit(status); + }; + } + if (typeof print !== "undefined") { + if (typeof console === "undefined") + console = {}; + console.log = print; + console.warn = console.error = typeof printErr !== "undefined" ? printErr : print; + } + } else if (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) { + if (ENVIRONMENT_IS_WORKER) { + scriptDirectory = self.location.href; + } else if (typeof document !== "undefined" && document.currentScript) { + scriptDirectory = document.currentScript.src; + } + if (typeof _scriptDir !== "undefined" && _scriptDir) { + scriptDirectory = _scriptDir; + } + if (scriptDirectory.indexOf("blob:") !== 0) { + scriptDirectory = scriptDirectory.substr(0, scriptDirectory.lastIndexOf("/") + 1); + } else { + scriptDirectory = ""; + } + if (ENVIRONMENT_IS_NODE) { + read_ = function shell_read(filename, binary) { + if (!nodeFS) + nodeFS = require("fs"); + if (!nodePath) + nodePath = require_path(); + filename = nodePath["normalize"](filename); + return nodeFS["readFileSync"](filename, binary ? null : "utf8"); + }; + readBinary = function readBinary2(filename) { + var ret = read_(filename, true); + if (!ret.buffer) { + ret = new Uint8Array(ret); + } + assert3(ret.buffer); + return ret; + }; + } else { + read_ = function(url) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", url, false); + xhr.send(null); + return xhr.responseText; + }; + if (ENVIRONMENT_IS_WORKER) { + readBinary = function(url) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", url, false); + xhr.responseType = "arraybuffer"; + xhr.send(null); + return new Uint8Array(xhr.response); + }; + } + readAsync = function(url, onload, onerror) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", url, true); + xhr.responseType = "arraybuffer"; + xhr.onload = function() { + if (xhr.status == 200 || xhr.status == 0 && xhr.response) { + onload(xhr.response); + return; + } + onerror(); + }; + xhr.onerror = onerror; + xhr.send(null); + }; + } + setWindowTitle = function(title) { + document.title = title; + }; + } else { + } + if (ENVIRONMENT_IS_NODE) { + if (typeof performance === "undefined") { + global.performance = require_perf_hooks().performance; + } + } + var out = Module["print"] || console.log.bind(console); + var err = Module["printErr"] || console.warn.bind(console); + for (key in moduleOverrides) { + if (moduleOverrides.hasOwnProperty(key)) { + Module[key] = moduleOverrides[key]; + } + } + moduleOverrides = null; + if (Module["arguments"]) + arguments_ = Module["arguments"]; + if (Module["thisProgram"]) + thisProgram = Module["thisProgram"]; + if (Module["quit"]) + quit_ = Module["quit"]; + var Atomics_load = Atomics.load; + var Atomics_store = Atomics.store; + var Atomics_compareExchange = Atomics.compareExchange; + var wasmBinary; + if (Module["wasmBinary"]) + wasmBinary = Module["wasmBinary"]; + var noExitRuntime = Module["noExitRuntime"] || true; + if (typeof WebAssembly !== "object") { + abort("no native wasm support detected"); + } + var wasmMemory; + var wasmModule; + var ABORT = false; + var EXITSTATUS; + function assert3(condition, text) { + if (!condition) { + abort("Assertion failed: " + text); + } + } + function getCFunc(ident) { + var func2 = Module["_" + ident]; + assert3(func2, "Cannot call unknown function " + ident + ", make sure it is exported"); + return func2; + } + function ccall(ident, returnType, argTypes, args, opts) { + var toC = {string: function(str) { + var ret2 = 0; + if (str !== null && str !== void 0 && str !== 0) { + var len = (str.length << 2) + 1; + ret2 = stackAlloc(len); + stringToUTF8(str, ret2, len); + } + return ret2; + }, array: function(arr) { + var ret2 = stackAlloc(arr.length); + writeArrayToMemory(arr, ret2); + return ret2; + }}; + function convertReturnValue(ret2) { + if (returnType === "string") + return UTF8ToString(ret2); + if (returnType === "boolean") + return Boolean(ret2); + return ret2; + } + var func2 = getCFunc(ident); + var cArgs = []; + var stack2 = 0; + if (args) { + for (var i = 0; i < args.length; i++) { + var converter = toC[argTypes[i]]; + if (converter) { + if (stack2 === 0) + stack2 = stackSave(); + cArgs[i] = converter(args[i]); + } else { + cArgs[i] = args[i]; + } + } + } + var ret = func2.apply(null, cArgs); + ret = convertReturnValue(ret); + if (stack2 !== 0) + stackRestore(stack2); + return ret; + } + function cwrap(ident, returnType, argTypes, opts) { + argTypes = argTypes || []; + var numericArgs = argTypes.every(function(type) { + return type === "number"; + }); + var numericRet = returnType !== "string"; + if (numericRet && numericArgs && !opts) { + return getCFunc(ident); + } + return function() { + return ccall(ident, returnType, argTypes, arguments, opts); + }; + } + function UTF8ArrayToString(heap, idx, maxBytesToRead) { + var endIdx = idx + maxBytesToRead; + var str = ""; + while (!(idx >= endIdx)) { + var u0 = heap[idx++]; + if (!u0) + return str; + if (!(u0 & 128)) { + str += String.fromCharCode(u0); + continue; + } + var u1 = heap[idx++] & 63; + if ((u0 & 224) == 192) { + str += String.fromCharCode((u0 & 31) << 6 | u1); + continue; + } + var u2 = heap[idx++] & 63; + if ((u0 & 240) == 224) { + u0 = (u0 & 15) << 12 | u1 << 6 | u2; + } else { + u0 = (u0 & 7) << 18 | u1 << 12 | u2 << 6 | heap[idx++] & 63; + } + if (u0 < 65536) { + str += String.fromCharCode(u0); + } else { + var ch = u0 - 65536; + str += String.fromCharCode(55296 | ch >> 10, 56320 | ch & 1023); + } + } + return str; + } + function UTF8ToString(ptr, maxBytesToRead) { + return ptr ? UTF8ArrayToString(GROWABLE_HEAP_U8(), ptr, maxBytesToRead) : ""; + } + function stringToUTF8Array(str, heap, outIdx, maxBytesToWrite) { + if (!(maxBytesToWrite > 0)) + return 0; + var startIdx = outIdx; + var endIdx = outIdx + maxBytesToWrite - 1; + for (var i = 0; i < str.length; ++i) { + var u = str.charCodeAt(i); + if (u >= 55296 && u <= 57343) { + var u1 = str.charCodeAt(++i); + u = 65536 + ((u & 1023) << 10) | u1 & 1023; + } + if (u <= 127) { + if (outIdx >= endIdx) + break; + heap[outIdx++] = u; + } else if (u <= 2047) { + if (outIdx + 1 >= endIdx) + break; + heap[outIdx++] = 192 | u >> 6; + heap[outIdx++] = 128 | u & 63; + } else if (u <= 65535) { + if (outIdx + 2 >= endIdx) + break; + heap[outIdx++] = 224 | u >> 12; + heap[outIdx++] = 128 | u >> 6 & 63; + heap[outIdx++] = 128 | u & 63; + } else { + if (outIdx + 3 >= endIdx) + break; + heap[outIdx++] = 240 | u >> 18; + heap[outIdx++] = 128 | u >> 12 & 63; + heap[outIdx++] = 128 | u >> 6 & 63; + heap[outIdx++] = 128 | u & 63; + } + } + heap[outIdx] = 0; + return outIdx - startIdx; + } + function stringToUTF8(str, outPtr, maxBytesToWrite) { + return stringToUTF8Array(str, GROWABLE_HEAP_U8(), outPtr, maxBytesToWrite); + } + function lengthBytesUTF8(str) { + var len = 0; + for (var i = 0; i < str.length; ++i) { + var u = str.charCodeAt(i); + if (u >= 55296 && u <= 57343) + u = 65536 + ((u & 1023) << 10) | str.charCodeAt(++i) & 1023; + if (u <= 127) + ++len; + else if (u <= 2047) + len += 2; + else if (u <= 65535) + len += 3; + else + len += 4; + } + return len; + } + function writeArrayToMemory(array2, buffer3) { + GROWABLE_HEAP_I8().set(array2, buffer3); + } + function alignUp(x, multiple) { + if (x % multiple > 0) { + x += multiple - x % multiple; + } + return x; + } + var buffer2, HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64; + function updateGlobalBufferAndViews(buf) { + buffer2 = buf; + Module["HEAP8"] = HEAP8 = new Int8Array(buf); + Module["HEAP16"] = HEAP16 = new Int16Array(buf); + Module["HEAP32"] = HEAP32 = new Int32Array(buf); + Module["HEAPU8"] = HEAPU8 = new Uint8Array(buf); + Module["HEAPU16"] = HEAPU16 = new Uint16Array(buf); + Module["HEAPU32"] = HEAPU32 = new Uint32Array(buf); + Module["HEAPF32"] = HEAPF32 = new Float32Array(buf); + Module["HEAPF64"] = HEAPF64 = new Float64Array(buf); + } + var INITIAL_MEMORY = Module["INITIAL_MEMORY"] || 16777216; + if (ENVIRONMENT_IS_PTHREAD) { + wasmMemory = Module["wasmMemory"]; + buffer2 = Module["buffer"]; + } else { + if (Module["wasmMemory"]) { + wasmMemory = Module["wasmMemory"]; + } else { + wasmMemory = new WebAssembly.Memory({initial: INITIAL_MEMORY / 65536, maximum: 2147483648 / 65536, shared: true}); + if (!(wasmMemory.buffer instanceof SharedArrayBuffer)) { + err("requested a shared WebAssembly.Memory but the returned buffer is not a SharedArrayBuffer, indicating that while the browser has SharedArrayBuffer it does not have WebAssembly threads support - you may need to set a flag"); + if (ENVIRONMENT_IS_NODE) { + console.log("(on node you may need: --experimental-wasm-threads --experimental-wasm-bulk-memory and also use a recent version)"); + } + throw Error("bad memory"); + } + } + } + if (wasmMemory) { + buffer2 = wasmMemory.buffer; + } + INITIAL_MEMORY = buffer2.byteLength; + updateGlobalBufferAndViews(buffer2); + var wasmTable; + var __ATPRERUN__ = []; + var __ATINIT__ = []; + var __ATMAIN__ = []; + var __ATEXIT__ = []; + var __ATPOSTRUN__ = []; + var runtimeInitialized = false; + var runtimeExited = false; + if (!ENVIRONMENT_IS_PTHREAD) + __ATINIT__.push({func: function() { + ___wasm_call_ctors(); + }}); + if (ENVIRONMENT_IS_PTHREAD) + runtimeInitialized = true; + function preRun() { + if (ENVIRONMENT_IS_PTHREAD) + return; + if (Module["preRun"]) { + if (typeof Module["preRun"] == "function") + Module["preRun"] = [Module["preRun"]]; + while (Module["preRun"].length) { + addOnPreRun(Module["preRun"].shift()); + } + } + callRuntimeCallbacks(__ATPRERUN__); + } + function initRuntime() { + runtimeInitialized = true; + callRuntimeCallbacks(__ATINIT__); + } + function preMain() { + if (ENVIRONMENT_IS_PTHREAD) + return; + callRuntimeCallbacks(__ATMAIN__); + } + function exitRuntime() { + if (ENVIRONMENT_IS_PTHREAD) + return; + runtimeExited = true; + } + function postRun() { + if (ENVIRONMENT_IS_PTHREAD) + return; + if (Module["postRun"]) { + if (typeof Module["postRun"] == "function") + Module["postRun"] = [Module["postRun"]]; + while (Module["postRun"].length) { + addOnPostRun(Module["postRun"].shift()); + } + } + callRuntimeCallbacks(__ATPOSTRUN__); + } + function addOnPreRun(cb) { + __ATPRERUN__.unshift(cb); + } + function addOnPostRun(cb) { + __ATPOSTRUN__.unshift(cb); + } + var runDependencies = 0; + var runDependencyWatcher = null; + var dependenciesFulfilled = null; + function addRunDependency(id) { + assert3(!ENVIRONMENT_IS_PTHREAD, "addRunDependency cannot be used in a pthread worker"); + runDependencies++; + if (Module["monitorRunDependencies"]) { + Module["monitorRunDependencies"](runDependencies); + } + } + function removeRunDependency(id) { + runDependencies--; + if (Module["monitorRunDependencies"]) { + Module["monitorRunDependencies"](runDependencies); + } + if (runDependencies == 0) { + if (runDependencyWatcher !== null) { + clearInterval(runDependencyWatcher); + runDependencyWatcher = null; + } + if (dependenciesFulfilled) { + var callback = dependenciesFulfilled; + dependenciesFulfilled = null; + callback(); + } + } + } + Module["preloadedImages"] = {}; + Module["preloadedAudios"] = {}; + function abort(what) { + if (Module["onAbort"]) { + Module["onAbort"](what); + } + if (ENVIRONMENT_IS_PTHREAD) + console.error("Pthread aborting at " + new Error().stack); + what += ""; + err(what); + ABORT = true; + EXITSTATUS = 1; + what = "abort(" + what + "). Build with -s ASSERTIONS=1 for more info."; + var e = new WebAssembly.RuntimeError(what); + readyPromiseReject(e); + throw e; + } + function hasPrefix(str, prefix) { + return String.prototype.startsWith ? str.startsWith(prefix) : str.indexOf(prefix) === 0; + } + var dataURIPrefix = "data:application/octet-stream;base64,"; + function isDataURI(filename) { + return hasPrefix(filename, dataURIPrefix); + } + var fileURIPrefix = "file://"; + function isFileURI(filename) { + return hasPrefix(filename, fileURIPrefix); + } + var wasmBinaryFile = "tfjs-backend-wasm-threaded-simd.wasm"; + if (!isDataURI(wasmBinaryFile)) { + wasmBinaryFile = locateFile(wasmBinaryFile); + } + function getBinary(file) { + try { + if (file == wasmBinaryFile && wasmBinary) { + return new Uint8Array(wasmBinary); + } + if (readBinary) { + return readBinary(file); + } else { + throw "both async and sync fetching of the wasm failed"; + } + } catch (err2) { + abort(err2); + } + } + function getBinaryPromise() { + if (!wasmBinary && (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER)) { + if (typeof fetch === "function" && !isFileURI(wasmBinaryFile)) { + return fetch(wasmBinaryFile, {credentials: "same-origin"}).then(function(response) { + if (!response["ok"]) { + throw "failed to load wasm binary file at '" + wasmBinaryFile + "'"; + } + return response["arrayBuffer"](); + }).catch(function() { + return getBinary(wasmBinaryFile); + }); + } else { + if (readAsync) { + return new Promise(function(resolve, reject) { + readAsync(wasmBinaryFile, function(response) { + resolve(new Uint8Array(response)); + }, reject); + }); + } + } + } + return Promise.resolve().then(function() { + return getBinary(wasmBinaryFile); + }); + } + function createWasm() { + var info2 = {a: asmLibraryArg}; + function receiveInstance(instance, module2) { + var exports3 = instance.exports; + Module["asm"] = exports3; + wasmTable = Module["asm"]["F"]; + wasmModule = module2; + if (!ENVIRONMENT_IS_PTHREAD) { + var numWorkersToLoad = PThread.unusedWorkers.length; + PThread.unusedWorkers.forEach(function(w) { + PThread.loadWasmModuleToWorker(w, function() { + if (!--numWorkersToLoad) + removeRunDependency("wasm-instantiate"); + }); + }); + } + } + if (!ENVIRONMENT_IS_PTHREAD) { + addRunDependency("wasm-instantiate"); + } + function receiveInstantiatedSource(output) { + receiveInstance(output["instance"], output["module"]); + } + function instantiateArrayBuffer(receiver) { + return getBinaryPromise().then(function(binary) { + return WebAssembly.instantiate(binary, info2); + }).then(receiver, function(reason) { + err("failed to asynchronously prepare wasm: " + reason); + abort(reason); + }); + } + function instantiateAsync() { + if (!wasmBinary && typeof WebAssembly.instantiateStreaming === "function" && !isDataURI(wasmBinaryFile) && !isFileURI(wasmBinaryFile) && typeof fetch === "function") { + return fetch(wasmBinaryFile, {credentials: "same-origin"}).then(function(response) { + var result = WebAssembly.instantiateStreaming(response, info2); + return result.then(receiveInstantiatedSource, function(reason) { + err("wasm streaming compile failed: " + reason); + err("falling back to ArrayBuffer instantiation"); + return instantiateArrayBuffer(receiveInstantiatedSource); + }); + }); + } else { + return instantiateArrayBuffer(receiveInstantiatedSource); + } + } + if (Module["instantiateWasm"]) { + try { + var exports2 = Module["instantiateWasm"](info2, receiveInstance); + return exports2; + } catch (e) { + err("Module.instantiateWasm callback failed with error: " + e); + return false; + } + } + instantiateAsync().catch(readyPromiseReject); + return {}; + } + var ASM_CONSTS = {8991: function($0, $1) { + setTimeout(function() { + __emscripten_do_dispatch_to_thread($0, $1); + }, 0); + }}; + function initPthreadsJS() { + PThread.initRuntime(); + } + function callRuntimeCallbacks(callbacks2) { + while (callbacks2.length > 0) { + var callback = callbacks2.shift(); + if (typeof callback == "function") { + callback(Module); + continue; + } + var func2 = callback.func; + if (typeof func2 === "number") { + if (callback.arg === void 0) { + wasmTable.get(func2)(); + } else { + wasmTable.get(func2)(callback.arg); + } + } else { + func2(callback.arg === void 0 ? null : callback.arg); + } + } + } + function _emscripten_futex_wake(addr, count2) { + if (addr <= 0 || addr > GROWABLE_HEAP_I8().length || addr & true || count2 < 0) + return -28; + if (count2 == 0) + return 0; + if (count2 >= 2147483647) + count2 = Infinity; + var mainThreadWaitAddress = Atomics.load(GROWABLE_HEAP_I32(), __emscripten_main_thread_futex >> 2); + var mainThreadWoken = 0; + if (mainThreadWaitAddress == addr) { + var loadedAddr = Atomics.compareExchange(GROWABLE_HEAP_I32(), __emscripten_main_thread_futex >> 2, mainThreadWaitAddress, 0); + if (loadedAddr == mainThreadWaitAddress) { + --count2; + mainThreadWoken = 1; + if (count2 <= 0) + return 1; + } + } + var ret = Atomics.notify(GROWABLE_HEAP_I32(), addr >> 2, count2); + if (ret >= 0) + return ret + mainThreadWoken; + throw "Atomics.notify returned an unexpected value " + ret; + } + Module["_emscripten_futex_wake"] = _emscripten_futex_wake; + function killThread(pthread_ptr) { + if (ENVIRONMENT_IS_PTHREAD) + throw "Internal Error! killThread() can only ever be called from main application thread!"; + if (!pthread_ptr) + throw "Internal Error! Null pthread_ptr in killThread!"; + GROWABLE_HEAP_I32()[pthread_ptr + 12 >> 2] = 0; + var pthread = PThread.pthreads[pthread_ptr]; + pthread.worker.terminate(); + PThread.freeThreadData(pthread); + PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(pthread.worker), 1); + pthread.worker.pthread = void 0; + } + function cancelThread(pthread_ptr) { + if (ENVIRONMENT_IS_PTHREAD) + throw "Internal Error! cancelThread() can only ever be called from main application thread!"; + if (!pthread_ptr) + throw "Internal Error! Null pthread_ptr in cancelThread!"; + var pthread = PThread.pthreads[pthread_ptr]; + pthread.worker.postMessage({cmd: "cancel"}); + } + function cleanupThread(pthread_ptr) { + if (ENVIRONMENT_IS_PTHREAD) + throw "Internal Error! cleanupThread() can only ever be called from main application thread!"; + if (!pthread_ptr) + throw "Internal Error! Null pthread_ptr in cleanupThread!"; + GROWABLE_HEAP_I32()[pthread_ptr + 12 >> 2] = 0; + var pthread = PThread.pthreads[pthread_ptr]; + if (pthread) { + var worker = pthread.worker; + PThread.returnWorkerToPool(worker); + } + } + var PThread = {unusedWorkers: [], runningWorkers: [], initMainThreadBlock: function() { + var pthreadPoolSize = 8; + for (var i = 0; i < pthreadPoolSize; ++i) { + PThread.allocateUnusedWorker(); + } + }, initRuntime: function() { + var tb = _malloc(228); + for (var i = 0; i < 228 / 4; ++i) + GROWABLE_HEAP_U32()[tb / 4 + i] = 0; + GROWABLE_HEAP_I32()[tb + 12 >> 2] = tb; + var headPtr = tb + 152; + GROWABLE_HEAP_I32()[headPtr >> 2] = headPtr; + var tlsMemory = _malloc(512); + for (var i = 0; i < 128; ++i) + GROWABLE_HEAP_U32()[tlsMemory / 4 + i] = 0; + Atomics.store(GROWABLE_HEAP_U32(), tb + 100 >> 2, tlsMemory); + Atomics.store(GROWABLE_HEAP_U32(), tb + 40 >> 2, tb); + __emscripten_thread_init(tb, !ENVIRONMENT_IS_WORKER, 1); + _emscripten_register_main_browser_thread_id(tb); + }, initWorker: function() { + }, pthreads: {}, threadExitHandlers: [], setThreadStatus: function() { + }, runExitHandlers: function() { + while (PThread.threadExitHandlers.length > 0) { + PThread.threadExitHandlers.pop()(); + } + if (ENVIRONMENT_IS_PTHREAD && _pthread_self()) + ___pthread_tsd_run_dtors(); + }, threadExit: function(exitCode) { + var tb = _pthread_self(); + if (tb) { + Atomics.store(GROWABLE_HEAP_U32(), tb + 4 >> 2, exitCode); + Atomics.store(GROWABLE_HEAP_U32(), tb + 0 >> 2, 1); + Atomics.store(GROWABLE_HEAP_U32(), tb + 56 >> 2, 1); + Atomics.store(GROWABLE_HEAP_U32(), tb + 60 >> 2, 0); + PThread.runExitHandlers(); + _emscripten_futex_wake(tb + 0, 2147483647); + __emscripten_thread_init(0, 0, 0); + if (ENVIRONMENT_IS_PTHREAD) { + postMessage({cmd: "exit"}); + } + } + }, threadCancel: function() { + PThread.runExitHandlers(); + var tb = _pthread_self(); + Atomics.store(GROWABLE_HEAP_U32(), tb + 4 >> 2, -1); + Atomics.store(GROWABLE_HEAP_U32(), tb + 0 >> 2, 1); + _emscripten_futex_wake(tb + 0, 2147483647); + __emscripten_thread_init(0, 0, 0); + postMessage({cmd: "cancelDone"}); + }, terminateAllThreads: function() { + for (var t in PThread.pthreads) { + var pthread = PThread.pthreads[t]; + if (pthread && pthread.worker) { + PThread.returnWorkerToPool(pthread.worker); + } + } + PThread.pthreads = {}; + for (var i = 0; i < PThread.unusedWorkers.length; ++i) { + var worker = PThread.unusedWorkers[i]; + worker.terminate(); + } + PThread.unusedWorkers = []; + for (var i = 0; i < PThread.runningWorkers.length; ++i) { + var worker = PThread.runningWorkers[i]; + var pthread = worker.pthread; + PThread.freeThreadData(pthread); + worker.terminate(); + } + PThread.runningWorkers = []; + }, freeThreadData: function(pthread) { + if (!pthread) + return; + if (pthread.threadInfoStruct) { + var tlsMemory = GROWABLE_HEAP_I32()[pthread.threadInfoStruct + 100 >> 2]; + GROWABLE_HEAP_I32()[pthread.threadInfoStruct + 100 >> 2] = 0; + _free(tlsMemory); + _free(pthread.threadInfoStruct); + } + pthread.threadInfoStruct = 0; + if (pthread.allocatedOwnStack && pthread.stackBase) + _free(pthread.stackBase); + pthread.stackBase = 0; + if (pthread.worker) + pthread.worker.pthread = null; + }, returnWorkerToPool: function(worker) { + PThread.runWithoutMainThreadQueuedCalls(function() { + delete PThread.pthreads[worker.pthread.threadInfoStruct]; + PThread.unusedWorkers.push(worker); + PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(worker), 1); + PThread.freeThreadData(worker.pthread); + worker.pthread = void 0; + }); + }, runWithoutMainThreadQueuedCalls: function(func2) { + GROWABLE_HEAP_I32()[__emscripten_allow_main_runtime_queued_calls >> 2] = 0; + try { + func2(); + } finally { + GROWABLE_HEAP_I32()[__emscripten_allow_main_runtime_queued_calls >> 2] = 1; + } + }, receiveObjectTransfer: function(data2) { + }, loadWasmModuleToWorker: function(worker, onFinishedLoading) { + worker.onmessage = function(e) { + var d = e["data"]; + var cmd = d["cmd"]; + if (worker.pthread) + PThread.currentProxiedOperationCallerThread = worker.pthread.threadInfoStruct; + if (d["targetThread"] && d["targetThread"] != _pthread_self()) { + var thread = PThread.pthreads[d.targetThread]; + if (thread) { + thread.worker.postMessage(e.data, d["transferList"]); + } else { + console.error('Internal error! Worker sent a message "' + cmd + '" to target pthread ' + d["targetThread"] + ", but that thread no longer exists!"); + } + PThread.currentProxiedOperationCallerThread = void 0; + return; + } + if (cmd === "processQueuedMainThreadWork") { + _emscripten_main_thread_process_queued_calls(); + } else if (cmd === "spawnThread") { + spawnThread(e.data); + } else if (cmd === "cleanupThread") { + cleanupThread(d["thread"]); + } else if (cmd === "killThread") { + killThread(d["thread"]); + } else if (cmd === "cancelThread") { + cancelThread(d["thread"]); + } else if (cmd === "loaded") { + worker.loaded = true; + if (onFinishedLoading) + onFinishedLoading(worker); + if (worker.runPthread) { + worker.runPthread(); + delete worker.runPthread; + } + } else if (cmd === "print") { + out("Thread " + d["threadId"] + ": " + d["text"]); + } else if (cmd === "printErr") { + err("Thread " + d["threadId"] + ": " + d["text"]); + } else if (cmd === "alert") { + alert("Thread " + d["threadId"] + ": " + d["text"]); + } else if (cmd === "exit") { + var detached = worker.pthread && Atomics.load(GROWABLE_HEAP_U32(), worker.pthread.threadInfoStruct + 64 >> 2); + if (detached) { + PThread.returnWorkerToPool(worker); + } + } else if (cmd === "exitProcess") { + try { + exit(d["returnCode"]); + } catch (e2) { + if (e2 instanceof ExitStatus) + return; + throw e2; + } + } else if (cmd === "cancelDone") { + PThread.returnWorkerToPool(worker); + } else if (cmd === "objectTransfer") { + PThread.receiveObjectTransfer(e.data); + } else if (e.data.target === "setimmediate") { + worker.postMessage(e.data); + } else { + err("worker sent an unknown command " + cmd); + } + PThread.currentProxiedOperationCallerThread = void 0; + }; + worker.onerror = function(e) { + err("pthread sent an error! " + e.filename + ":" + e.lineno + ": " + e.message); + }; + if (ENVIRONMENT_IS_NODE) { + worker.on("message", function(data2) { + worker.onmessage({data: data2}); + }); + worker.on("error", function(data2) { + worker.onerror(data2); + }); + worker.on("exit", function(data2) { + }); + } + worker.postMessage({cmd: "load", urlOrBlob: Module["mainScriptUrlOrBlob"] || _scriptDir, wasmMemory, wasmModule}); + }, allocateUnusedWorker: function() { + var pthreadMainJs = locateFile("tfjs-backend-wasm-threaded-simd.worker.js"); + PThread.unusedWorkers.push(new Worker(pthreadMainJs)); + }, getNewWorker: function() { + if (PThread.unusedWorkers.length == 0) { + PThread.allocateUnusedWorker(); + PThread.loadWasmModuleToWorker(PThread.unusedWorkers[0]); + } + if (PThread.unusedWorkers.length > 0) + return PThread.unusedWorkers.pop(); + else + return null; + }, busySpinWait: function(msecs) { + var t = performance.now() + msecs; + while (performance.now() < t) { + } + }}; + function establishStackSpace(stackTop, stackMax) { + _emscripten_stack_set_limits(stackTop, stackMax); + stackRestore(stackTop); + } + Module["establishStackSpace"] = establishStackSpace; + function getNoExitRuntime() { + return noExitRuntime; + } + Module["getNoExitRuntime"] = getNoExitRuntime; + function invokeEntryPoint(ptr, arg) { + return wasmTable.get(ptr)(arg); + } + Module["invokeEntryPoint"] = invokeEntryPoint; + function ___assert_fail(condition, filename, line, func2) { + abort("Assertion failed: " + UTF8ToString(condition) + ", at: " + [filename ? UTF8ToString(filename) : "unknown filename", line, func2 ? UTF8ToString(func2) : "unknown function"]); + } + function ___call_main(argc, argv) { + var returnCode = _main(argc, argv); + } + var _emscripten_get_now; + if (ENVIRONMENT_IS_NODE) { + _emscripten_get_now = function() { + var t = process["hrtime"](); + return t[0] * 1e3 + t[1] / 1e6; + }; + } else if (ENVIRONMENT_IS_PTHREAD) { + _emscripten_get_now = function() { + return performance.now() - Module["__performance_now_clock_drift"]; + }; + } else if (typeof dateNow !== "undefined") { + _emscripten_get_now = dateNow; + } else + _emscripten_get_now = function() { + return performance.now(); + }; + function setErrNo(value) { + GROWABLE_HEAP_I32()[___errno_location() >> 2] = value; + return value; + } + function _atexit(func2, arg) { + if (ENVIRONMENT_IS_PTHREAD) + return _emscripten_proxy_to_main_thread_js(1, 1, func2, arg); + } + function __emscripten_notify_thread_queue(targetThreadId, mainThreadId) { + if (targetThreadId == mainThreadId) { + postMessage({cmd: "processQueuedMainThreadWork"}); + } else if (ENVIRONMENT_IS_PTHREAD) { + postMessage({targetThread: targetThreadId, cmd: "processThreadQueue"}); + } else { + var pthread = PThread.pthreads[targetThreadId]; + var worker = pthread && pthread.worker; + if (!worker) { + return; + } + worker.postMessage({cmd: "processThreadQueue"}); + } + return 1; + } + function _abort() { + abort(); + } + function _emscripten_asm_const_int(code, sigPtr, argbuf) { + var args = readAsmConstArgs(sigPtr, argbuf); + return ASM_CONSTS[code].apply(null, args); + } + function _emscripten_conditional_set_current_thread_status(expectedStatus, newStatus) { + } + function _emscripten_futex_wait(addr, val, timeout) { + if (addr <= 0 || addr > GROWABLE_HEAP_I8().length || addr & true) + return -28; + if (!ENVIRONMENT_IS_WEB) { + var ret = Atomics.wait(GROWABLE_HEAP_I32(), addr >> 2, val, timeout); + if (ret === "timed-out") + return -73; + if (ret === "not-equal") + return -6; + if (ret === "ok") + return 0; + throw "Atomics.wait returned an unexpected value " + ret; + } else { + if (Atomics.load(GROWABLE_HEAP_I32(), addr >> 2) != val) { + return -6; + } + var tNow = performance.now(); + var tEnd = tNow + timeout; + var lastAddr = Atomics.exchange(GROWABLE_HEAP_I32(), __emscripten_main_thread_futex >> 2, addr); + while (1) { + tNow = performance.now(); + if (tNow > tEnd) { + lastAddr = Atomics.exchange(GROWABLE_HEAP_I32(), __emscripten_main_thread_futex >> 2, 0); + return -73; + } + lastAddr = Atomics.exchange(GROWABLE_HEAP_I32(), __emscripten_main_thread_futex >> 2, 0); + if (lastAddr == 0) { + break; + } + _emscripten_main_thread_process_queued_calls(); + if (Atomics.load(GROWABLE_HEAP_I32(), addr >> 2) != val) { + return -6; + } + lastAddr = Atomics.exchange(GROWABLE_HEAP_I32(), __emscripten_main_thread_futex >> 2, addr); + } + return 0; + } + } + function _emscripten_memcpy_big(dest, src, num) { + GROWABLE_HEAP_U8().copyWithin(dest, src, src + num); + } + function _emscripten_num_logical_cores() { + if (ENVIRONMENT_IS_NODE) + return require("os").cpus().length; + return navigator["hardwareConcurrency"]; + } + function _emscripten_proxy_to_main_thread_js(index, sync) { + var numCallArgs = arguments.length - 2; + var stack2 = stackSave(); + var serializedNumCallArgs = numCallArgs; + var args = stackAlloc(serializedNumCallArgs * 8); + var b = args >> 3; + for (var i = 0; i < numCallArgs; i++) { + var arg = arguments[2 + i]; + GROWABLE_HEAP_F64()[b + i] = arg; + } + var ret = _emscripten_run_in_main_runtime_thread_js(index, serializedNumCallArgs, args, sync); + stackRestore(stack2); + return ret; + } + var _emscripten_receive_on_main_thread_js_callArgs = []; + var readAsmConstArgsArray = []; + function readAsmConstArgs(sigPtr, buf) { + readAsmConstArgsArray.length = 0; + var ch; + buf >>= 2; + while (ch = GROWABLE_HEAP_U8()[sigPtr++]) { + var double = ch < 105; + if (double && buf & 1) + buf++; + readAsmConstArgsArray.push(double ? GROWABLE_HEAP_F64()[buf++ >> 1] : GROWABLE_HEAP_I32()[buf]); + ++buf; + } + return readAsmConstArgsArray; + } + function _emscripten_receive_on_main_thread_js(index, numCallArgs, args) { + _emscripten_receive_on_main_thread_js_callArgs.length = numCallArgs; + var b = args >> 3; + for (var i = 0; i < numCallArgs; i++) { + _emscripten_receive_on_main_thread_js_callArgs[i] = GROWABLE_HEAP_F64()[b + i]; + } + var isEmAsmConst = index < 0; + var func2 = !isEmAsmConst ? proxiedFunctionTable[index] : ASM_CONSTS[-index - 1]; + return func2.apply(null, _emscripten_receive_on_main_thread_js_callArgs); + } + function _emscripten_get_heap_size() { + return GROWABLE_HEAP_U8().length; + } + function emscripten_realloc_buffer(size) { + try { + wasmMemory.grow(size - buffer2.byteLength + 65535 >>> 16); + updateGlobalBufferAndViews(wasmMemory.buffer); + return 1; + } catch (e) { + } + } + function _emscripten_resize_heap(requestedSize) { + var oldSize = _emscripten_get_heap_size(); + if (requestedSize <= oldSize) { + return false; + } + var maxHeapSize = 2147483648; + if (requestedSize > maxHeapSize) { + return false; + } + for (var cutDown = 1; cutDown <= 4; cutDown *= 2) { + var overGrownHeapSize = oldSize * (1 + 0.2 / cutDown); + overGrownHeapSize = Math.min(overGrownHeapSize, requestedSize + 100663296); + var newSize = Math.min(maxHeapSize, alignUp(Math.max(requestedSize, overGrownHeapSize), 65536)); + var replacement = emscripten_realloc_buffer(newSize); + if (replacement) { + return true; + } + } + return false; + } + var JSEvents = {inEventHandler: 0, removeAllEventListeners: function() { + for (var i = JSEvents.eventHandlers.length - 1; i >= 0; --i) { + JSEvents._removeHandler(i); + } + JSEvents.eventHandlers = []; + JSEvents.deferredCalls = []; + }, registerRemoveEventListeners: function() { + if (!JSEvents.removeEventListenersRegistered) { + __ATEXIT__.push(JSEvents.removeAllEventListeners); + JSEvents.removeEventListenersRegistered = true; + } + }, deferredCalls: [], deferCall: function(targetFunction, precedence, argsList) { + function arraysHaveEqualContent(arrA, arrB) { + if (arrA.length != arrB.length) + return false; + for (var i2 in arrA) { + if (arrA[i2] != arrB[i2]) + return false; + } + return true; + } + for (var i in JSEvents.deferredCalls) { + var call = JSEvents.deferredCalls[i]; + if (call.targetFunction == targetFunction && arraysHaveEqualContent(call.argsList, argsList)) { + return; + } + } + JSEvents.deferredCalls.push({targetFunction, precedence, argsList}); + JSEvents.deferredCalls.sort(function(x, y) { + return x.precedence < y.precedence; + }); + }, removeDeferredCalls: function(targetFunction) { + for (var i = 0; i < JSEvents.deferredCalls.length; ++i) { + if (JSEvents.deferredCalls[i].targetFunction == targetFunction) { + JSEvents.deferredCalls.splice(i, 1); + --i; + } + } + }, canPerformEventHandlerRequests: function() { + return JSEvents.inEventHandler && JSEvents.currentEventHandler.allowsDeferredCalls; + }, runDeferredCalls: function() { + if (!JSEvents.canPerformEventHandlerRequests()) { + return; + } + for (var i = 0; i < JSEvents.deferredCalls.length; ++i) { + var call = JSEvents.deferredCalls[i]; + JSEvents.deferredCalls.splice(i, 1); + --i; + call.targetFunction.apply(null, call.argsList); + } + }, eventHandlers: [], removeAllHandlersOnTarget: function(target, eventTypeString) { + for (var i = 0; i < JSEvents.eventHandlers.length; ++i) { + if (JSEvents.eventHandlers[i].target == target && (!eventTypeString || eventTypeString == JSEvents.eventHandlers[i].eventTypeString)) { + JSEvents._removeHandler(i--); + } + } + }, _removeHandler: function(i) { + var h = JSEvents.eventHandlers[i]; + h.target.removeEventListener(h.eventTypeString, h.eventListenerFunc, h.useCapture); + JSEvents.eventHandlers.splice(i, 1); + }, registerOrRemoveHandler: function(eventHandler) { + var jsEventHandler = function jsEventHandler2(event) { + ++JSEvents.inEventHandler; + JSEvents.currentEventHandler = eventHandler; + JSEvents.runDeferredCalls(); + eventHandler.handlerFunc(event); + JSEvents.runDeferredCalls(); + --JSEvents.inEventHandler; + }; + if (eventHandler.callbackfunc) { + eventHandler.eventListenerFunc = jsEventHandler; + eventHandler.target.addEventListener(eventHandler.eventTypeString, jsEventHandler, eventHandler.useCapture); + JSEvents.eventHandlers.push(eventHandler); + JSEvents.registerRemoveEventListeners(); + } else { + for (var i = 0; i < JSEvents.eventHandlers.length; ++i) { + if (JSEvents.eventHandlers[i].target == eventHandler.target && JSEvents.eventHandlers[i].eventTypeString == eventHandler.eventTypeString) { + JSEvents._removeHandler(i--); + } + } + } + }, queueEventHandlerOnThread_iiii: function(targetThread, eventHandlerFunc, eventTypeId, eventData, userData) { + var stackTop = stackSave(); + var varargs = stackAlloc(12); + GROWABLE_HEAP_I32()[varargs >> 2] = eventTypeId; + GROWABLE_HEAP_I32()[varargs + 4 >> 2] = eventData; + GROWABLE_HEAP_I32()[varargs + 8 >> 2] = userData; + __emscripten_call_on_thread(0, targetThread, 637534208, eventHandlerFunc, eventData, varargs); + stackRestore(stackTop); + }, getTargetThreadForEventCallback: function(targetThread) { + switch (targetThread) { + case 1: + return 0; + case 2: + return PThread.currentProxiedOperationCallerThread; + default: + return targetThread; + } + }, getNodeNameForTarget: function(target) { + if (!target) + return ""; + if (target == window) + return "#window"; + if (target == screen) + return "#screen"; + return target && target.nodeName ? target.nodeName : ""; + }, fullscreenEnabled: function() { + return document.fullscreenEnabled || document.webkitFullscreenEnabled; + }}; + function stringToNewUTF8(jsString) { + var length = lengthBytesUTF8(jsString) + 1; + var cString = _malloc(length); + stringToUTF8(jsString, cString, length); + return cString; + } + function _emscripten_set_offscreencanvas_size_on_target_thread_js(targetThread, targetCanvas, width, height) { + var stackTop = stackSave(); + var varargs = stackAlloc(12); + var targetCanvasPtr = 0; + if (targetCanvas) { + targetCanvasPtr = stringToNewUTF8(targetCanvas); + } + GROWABLE_HEAP_I32()[varargs >> 2] = targetCanvasPtr; + GROWABLE_HEAP_I32()[varargs + 4 >> 2] = width; + GROWABLE_HEAP_I32()[varargs + 8 >> 2] = height; + __emscripten_call_on_thread(0, targetThread, 657457152, 0, targetCanvasPtr, varargs); + stackRestore(stackTop); + } + function _emscripten_set_offscreencanvas_size_on_target_thread(targetThread, targetCanvas, width, height) { + targetCanvas = targetCanvas ? UTF8ToString(targetCanvas) : ""; + _emscripten_set_offscreencanvas_size_on_target_thread_js(targetThread, targetCanvas, width, height); + } + function maybeCStringToJsString(cString) { + return cString > 2 ? UTF8ToString(cString) : cString; + } + var specialHTMLTargets = [0, typeof document !== "undefined" ? document : 0, typeof window !== "undefined" ? window : 0]; + function findEventTarget(target) { + target = maybeCStringToJsString(target); + var domElement = specialHTMLTargets[target] || (typeof document !== "undefined" ? document.querySelector(target) : void 0); + return domElement; + } + function findCanvasEventTarget(target) { + return findEventTarget(target); + } + function _emscripten_set_canvas_element_size_calling_thread(target, width, height) { + var canvas2 = findCanvasEventTarget(target); + if (!canvas2) + return -4; + if (canvas2.canvasSharedPtr) { + GROWABLE_HEAP_I32()[canvas2.canvasSharedPtr >> 2] = width; + GROWABLE_HEAP_I32()[canvas2.canvasSharedPtr + 4 >> 2] = height; + } + if (canvas2.offscreenCanvas || !canvas2.controlTransferredOffscreen) { + if (canvas2.offscreenCanvas) + canvas2 = canvas2.offscreenCanvas; + var autoResizeViewport = false; + if (canvas2.GLctxObject && canvas2.GLctxObject.GLctx) { + var prevViewport = canvas2.GLctxObject.GLctx.getParameter(2978); + autoResizeViewport = prevViewport[0] === 0 && prevViewport[1] === 0 && prevViewport[2] === canvas2.width && prevViewport[3] === canvas2.height; + } + canvas2.width = width; + canvas2.height = height; + if (autoResizeViewport) { + canvas2.GLctxObject.GLctx.viewport(0, 0, width, height); + } + } else if (canvas2.canvasSharedPtr) { + var targetThread = GROWABLE_HEAP_I32()[canvas2.canvasSharedPtr + 8 >> 2]; + _emscripten_set_offscreencanvas_size_on_target_thread(targetThread, target, width, height); + return 1; + } else { + return -4; + } + return 0; + } + function _emscripten_set_canvas_element_size_main_thread(target, width, height) { + if (ENVIRONMENT_IS_PTHREAD) + return _emscripten_proxy_to_main_thread_js(2, 1, target, width, height); + return _emscripten_set_canvas_element_size_calling_thread(target, width, height); + } + function _emscripten_set_canvas_element_size(target, width, height) { + var canvas2 = findCanvasEventTarget(target); + if (canvas2) { + return _emscripten_set_canvas_element_size_calling_thread(target, width, height); + } else { + return _emscripten_set_canvas_element_size_main_thread(target, width, height); + } + } + function _emscripten_set_current_thread_status(newStatus) { + } + function _emscripten_set_thread_name(threadId, name) { + } + function __webgl_enable_ANGLE_instanced_arrays(ctx) { + var ext = ctx.getExtension("ANGLE_instanced_arrays"); + if (ext) { + ctx["vertexAttribDivisor"] = function(index, divisor) { + ext["vertexAttribDivisorANGLE"](index, divisor); + }; + ctx["drawArraysInstanced"] = function(mode, first, count2, primcount) { + ext["drawArraysInstancedANGLE"](mode, first, count2, primcount); + }; + ctx["drawElementsInstanced"] = function(mode, count2, type, indices, primcount) { + ext["drawElementsInstancedANGLE"](mode, count2, type, indices, primcount); + }; + return 1; + } + } + function __webgl_enable_OES_vertex_array_object(ctx) { + var ext = ctx.getExtension("OES_vertex_array_object"); + if (ext) { + ctx["createVertexArray"] = function() { + return ext["createVertexArrayOES"](); + }; + ctx["deleteVertexArray"] = function(vao) { + ext["deleteVertexArrayOES"](vao); + }; + ctx["bindVertexArray"] = function(vao) { + ext["bindVertexArrayOES"](vao); + }; + ctx["isVertexArray"] = function(vao) { + return ext["isVertexArrayOES"](vao); + }; + return 1; + } + } + function __webgl_enable_WEBGL_draw_buffers(ctx) { + var ext = ctx.getExtension("WEBGL_draw_buffers"); + if (ext) { + ctx["drawBuffers"] = function(n, bufs) { + ext["drawBuffersWEBGL"](n, bufs); + }; + return 1; + } + } + function __webgl_enable_WEBGL_multi_draw(ctx) { + return !!(ctx.multiDrawWebgl = ctx.getExtension("WEBGL_multi_draw")); + } + var GL = {counter: 1, buffers: [], programs: [], framebuffers: [], renderbuffers: [], textures: [], uniforms: [], shaders: [], vaos: [], contexts: {}, offscreenCanvases: {}, timerQueriesEXT: [], programInfos: {}, stringCache: {}, unpackAlignment: 4, recordError: function recordError(errorCode) { + if (!GL.lastError) { + GL.lastError = errorCode; + } + }, getNewId: function(table) { + var ret = GL.counter++; + for (var i = table.length; i < ret; i++) { + table[i] = null; + } + return ret; + }, getSource: function(shader, count2, string, length) { + var source = ""; + for (var i = 0; i < count2; ++i) { + var len = length ? GROWABLE_HEAP_I32()[length + i * 4 >> 2] : -1; + source += UTF8ToString(GROWABLE_HEAP_I32()[string + i * 4 >> 2], len < 0 ? void 0 : len); + } + return source; + }, createContext: function(canvas2, webGLContextAttributes) { + var ctx = canvas2.getContext("webgl", webGLContextAttributes); + if (!ctx) + return 0; + var handle = GL.registerContext(ctx, webGLContextAttributes); + return handle; + }, registerContext: function(ctx, webGLContextAttributes) { + var handle = _malloc(8); + GROWABLE_HEAP_I32()[handle + 4 >> 2] = _pthread_self(); + var context = {handle, attributes: webGLContextAttributes, version: webGLContextAttributes.majorVersion, GLctx: ctx}; + if (ctx.canvas) + ctx.canvas.GLctxObject = context; + GL.contexts[handle] = context; + if (typeof webGLContextAttributes.enableExtensionsByDefault === "undefined" || webGLContextAttributes.enableExtensionsByDefault) { + GL.initExtensions(context); + } + return handle; + }, makeContextCurrent: function(contextHandle) { + GL.currentContext = GL.contexts[contextHandle]; + Module.ctx = GLctx = GL.currentContext && GL.currentContext.GLctx; + return !(contextHandle && !GLctx); + }, getContext: function(contextHandle) { + return GL.contexts[contextHandle]; + }, deleteContext: function(contextHandle) { + if (GL.currentContext === GL.contexts[contextHandle]) + GL.currentContext = null; + if (typeof JSEvents === "object") + JSEvents.removeAllHandlersOnTarget(GL.contexts[contextHandle].GLctx.canvas); + if (GL.contexts[contextHandle] && GL.contexts[contextHandle].GLctx.canvas) + GL.contexts[contextHandle].GLctx.canvas.GLctxObject = void 0; + _free(GL.contexts[contextHandle].handle); + GL.contexts[contextHandle] = null; + }, initExtensions: function(context) { + if (!context) + context = GL.currentContext; + if (context.initExtensionsDone) + return; + context.initExtensionsDone = true; + var GLctx2 = context.GLctx; + __webgl_enable_ANGLE_instanced_arrays(GLctx2); + __webgl_enable_OES_vertex_array_object(GLctx2); + __webgl_enable_WEBGL_draw_buffers(GLctx2); + GLctx2.disjointTimerQueryExt = GLctx2.getExtension("EXT_disjoint_timer_query"); + __webgl_enable_WEBGL_multi_draw(GLctx2); + var exts = GLctx2.getSupportedExtensions() || []; + exts.forEach(function(ext) { + if (ext.indexOf("lose_context") < 0 && ext.indexOf("debug") < 0) { + GLctx2.getExtension(ext); + } + }); + }, populateUniformTable: function(program) { + var p2 = GL.programs[program]; + var ptable = GL.programInfos[program] = {uniforms: {}, maxUniformLength: 0, maxAttributeLength: -1, maxUniformBlockNameLength: -1}; + var utable = ptable.uniforms; + var numUniforms = GLctx.getProgramParameter(p2, 35718); + for (var i = 0; i < numUniforms; ++i) { + var u = GLctx.getActiveUniform(p2, i); + var name = u.name; + ptable.maxUniformLength = Math.max(ptable.maxUniformLength, name.length + 1); + if (name.slice(-1) == "]") { + name = name.slice(0, name.lastIndexOf("[")); + } + var loc = GLctx.getUniformLocation(p2, name); + if (loc) { + var id = GL.getNewId(GL.uniforms); + utable[name] = [u.size, id]; + GL.uniforms[id] = loc; + for (var j = 1; j < u.size; ++j) { + var n = name + "[" + j + "]"; + loc = GLctx.getUniformLocation(p2, n); + id = GL.getNewId(GL.uniforms); + GL.uniforms[id] = loc; + } + } + } + }}; + var __emscripten_webgl_power_preferences = ["default", "low-power", "high-performance"]; + function _emscripten_webgl_do_create_context(target, attributes) { + var a = attributes >> 2; + var powerPreference = GROWABLE_HEAP_I32()[a + (24 >> 2)]; + var contextAttributes = {alpha: !!GROWABLE_HEAP_I32()[a + (0 >> 2)], depth: !!GROWABLE_HEAP_I32()[a + (4 >> 2)], stencil: !!GROWABLE_HEAP_I32()[a + (8 >> 2)], antialias: !!GROWABLE_HEAP_I32()[a + (12 >> 2)], premultipliedAlpha: !!GROWABLE_HEAP_I32()[a + (16 >> 2)], preserveDrawingBuffer: !!GROWABLE_HEAP_I32()[a + (20 >> 2)], powerPreference: __emscripten_webgl_power_preferences[powerPreference], failIfMajorPerformanceCaveat: !!GROWABLE_HEAP_I32()[a + (28 >> 2)], majorVersion: GROWABLE_HEAP_I32()[a + (32 >> 2)], minorVersion: GROWABLE_HEAP_I32()[a + (36 >> 2)], enableExtensionsByDefault: GROWABLE_HEAP_I32()[a + (40 >> 2)], explicitSwapControl: GROWABLE_HEAP_I32()[a + (44 >> 2)], proxyContextToMainThread: GROWABLE_HEAP_I32()[a + (48 >> 2)], renderViaOffscreenBackBuffer: GROWABLE_HEAP_I32()[a + (52 >> 2)]}; + var canvas2 = findCanvasEventTarget(target); + if (!canvas2) { + return 0; + } + if (contextAttributes.explicitSwapControl) { + return 0; + } + var contextHandle = GL.createContext(canvas2, contextAttributes); + return contextHandle; + } + function _emscripten_webgl_create_context(a0, a12) { + return _emscripten_webgl_do_create_context(a0, a12); + } + var SYSCALLS = {mappings: {}, buffers: [null, [], []], printChar: function(stream, curr) { + var buffer3 = SYSCALLS.buffers[stream]; + if (curr === 0 || curr === 10) { + (stream === 1 ? out : err)(UTF8ArrayToString(buffer3, 0)); + buffer3.length = 0; + } else { + buffer3.push(curr); + } + }, varargs: void 0, get: function() { + SYSCALLS.varargs += 4; + var ret = GROWABLE_HEAP_I32()[SYSCALLS.varargs - 4 >> 2]; + return ret; + }, getStr: function(ptr) { + var ret = UTF8ToString(ptr); + return ret; + }, get64: function(low, high) { + return low; + }}; + function _fd_close(fd) { + if (ENVIRONMENT_IS_PTHREAD) + return _emscripten_proxy_to_main_thread_js(3, 1, fd); + return 0; + } + function _fd_seek(fd, offset_low, offset_high, whence, newOffset) { + if (ENVIRONMENT_IS_PTHREAD) + return _emscripten_proxy_to_main_thread_js(4, 1, fd, offset_low, offset_high, whence, newOffset); + } + function _fd_write(fd, iov, iovcnt, pnum) { + if (ENVIRONMENT_IS_PTHREAD) + return _emscripten_proxy_to_main_thread_js(5, 1, fd, iov, iovcnt, pnum); + var num = 0; + for (var i = 0; i < iovcnt; i++) { + var ptr = GROWABLE_HEAP_I32()[iov + i * 8 >> 2]; + var len = GROWABLE_HEAP_I32()[iov + (i * 8 + 4) >> 2]; + for (var j = 0; j < len; j++) { + SYSCALLS.printChar(fd, GROWABLE_HEAP_U8()[ptr + j]); + } + num += len; + } + GROWABLE_HEAP_I32()[pnum >> 2] = num; + return 0; + } + function _pthread_cleanup_pop(execute2) { + var routine = PThread.threadExitHandlers.pop(); + if (execute2) + routine(); + } + function _pthread_cleanup_push(routine, arg) { + PThread.threadExitHandlers.push(function() { + wasmTable.get(routine)(arg); + }); + } + function spawnThread(threadParams) { + if (ENVIRONMENT_IS_PTHREAD) + throw "Internal Error! spawnThread() can only ever be called from main application thread!"; + var worker = PThread.getNewWorker(); + if (worker.pthread !== void 0) + throw "Internal error!"; + if (!threadParams.pthread_ptr) + throw "Internal error, no pthread ptr!"; + PThread.runningWorkers.push(worker); + var tlsMemory = _malloc(128 * 4); + for (var i = 0; i < 128; ++i) { + GROWABLE_HEAP_I32()[tlsMemory + i * 4 >> 2] = 0; + } + var stackHigh = threadParams.stackBase + threadParams.stackSize; + var pthread = PThread.pthreads[threadParams.pthread_ptr] = {worker, stackBase: threadParams.stackBase, stackSize: threadParams.stackSize, allocatedOwnStack: threadParams.allocatedOwnStack, threadInfoStruct: threadParams.pthread_ptr}; + var tis = pthread.threadInfoStruct >> 2; + Atomics.store(GROWABLE_HEAP_U32(), tis + (64 >> 2), threadParams.detached); + Atomics.store(GROWABLE_HEAP_U32(), tis + (100 >> 2), tlsMemory); + Atomics.store(GROWABLE_HEAP_U32(), tis + (40 >> 2), pthread.threadInfoStruct); + Atomics.store(GROWABLE_HEAP_U32(), tis + (80 >> 2), threadParams.stackSize); + Atomics.store(GROWABLE_HEAP_U32(), tis + (76 >> 2), stackHigh); + Atomics.store(GROWABLE_HEAP_U32(), tis + (104 >> 2), threadParams.stackSize); + Atomics.store(GROWABLE_HEAP_U32(), tis + (104 + 8 >> 2), stackHigh); + Atomics.store(GROWABLE_HEAP_U32(), tis + (104 + 12 >> 2), threadParams.detached); + var global_libc = _emscripten_get_global_libc(); + var global_locale = global_libc + 40; + Atomics.store(GROWABLE_HEAP_U32(), tis + (172 >> 2), global_locale); + worker.pthread = pthread; + var msg = {cmd: "run", start_routine: threadParams.startRoutine, arg: threadParams.arg, threadInfoStruct: threadParams.pthread_ptr, stackBase: threadParams.stackBase, stackSize: threadParams.stackSize}; + worker.runPthread = function() { + msg.time = performance.now(); + worker.postMessage(msg, threadParams.transferList); + }; + if (worker.loaded) { + worker.runPthread(); + delete worker.runPthread; + } + } + function _pthread_create(pthread_ptr, attr, start_routine, arg) { + if (typeof SharedArrayBuffer === "undefined") { + err("Current environment does not support SharedArrayBuffer, pthreads are not available!"); + return 6; + } + if (!pthread_ptr) { + err("pthread_create called with a null thread pointer!"); + return 28; + } + var transferList = []; + var error = 0; + if (ENVIRONMENT_IS_PTHREAD && (transferList.length === 0 || error)) { + return _emscripten_sync_run_in_main_thread_4(687865856, pthread_ptr, attr, start_routine, arg); + } + if (error) + return error; + var stackSize = 0; + var stackBase = 0; + var detached = 0; + if (attr && attr != -1) { + stackSize = GROWABLE_HEAP_I32()[attr >> 2]; + stackSize += 81920; + stackBase = GROWABLE_HEAP_I32()[attr + 8 >> 2]; + detached = GROWABLE_HEAP_I32()[attr + 12 >> 2] !== 0; + } else { + stackSize = 2097152; + } + var allocatedOwnStack = stackBase == 0; + if (allocatedOwnStack) { + stackBase = _memalign(16, stackSize); + } else { + stackBase -= stackSize; + assert3(stackBase > 0); + } + var threadInfoStruct = _malloc(228); + for (var i = 0; i < 228 >> 2; ++i) + GROWABLE_HEAP_U32()[(threadInfoStruct >> 2) + i] = 0; + GROWABLE_HEAP_I32()[pthread_ptr >> 2] = threadInfoStruct; + GROWABLE_HEAP_I32()[threadInfoStruct + 12 >> 2] = threadInfoStruct; + var headPtr = threadInfoStruct + 152; + GROWABLE_HEAP_I32()[headPtr >> 2] = headPtr; + var threadParams = {stackBase, stackSize, allocatedOwnStack, detached, startRoutine: start_routine, pthread_ptr: threadInfoStruct, arg, transferList}; + if (ENVIRONMENT_IS_PTHREAD) { + threadParams.cmd = "spawnThread"; + postMessage(threadParams, transferList); + } else { + spawnThread(threadParams); + } + return 0; + } + function _sysconf(name) { + if (ENVIRONMENT_IS_PTHREAD) + return _emscripten_proxy_to_main_thread_js(6, 1, name); + switch (name) { + case 30: + return 16384; + case 85: + var maxHeapSize = 2147483648; + return maxHeapSize / 16384; + case 132: + case 133: + case 12: + case 137: + case 138: + case 15: + case 235: + case 16: + case 17: + case 18: + case 19: + case 20: + case 149: + case 13: + case 10: + case 236: + case 153: + case 9: + case 21: + case 22: + case 159: + case 154: + case 14: + case 77: + case 78: + case 139: + case 82: + case 68: + case 67: + case 164: + case 11: + case 29: + case 47: + case 48: + case 95: + case 52: + case 51: + case 46: + return 200809; + case 27: + case 246: + case 127: + case 128: + case 23: + case 24: + case 160: + case 161: + case 181: + case 182: + case 242: + case 183: + case 184: + case 243: + case 244: + case 245: + case 165: + case 178: + case 179: + case 49: + case 50: + case 168: + case 169: + case 175: + case 170: + case 171: + case 172: + case 97: + case 76: + case 32: + case 173: + case 35: + case 80: + case 81: + case 79: + return -1; + case 176: + case 177: + case 7: + case 155: + case 8: + case 157: + case 125: + case 126: + case 92: + case 93: + case 129: + case 130: + case 131: + case 94: + case 91: + return 1; + case 74: + case 60: + case 69: + case 70: + case 4: + return 1024; + case 31: + case 42: + case 72: + return 32; + case 87: + case 26: + case 33: + return 2147483647; + case 34: + case 1: + return 47839; + case 38: + case 36: + return 99; + case 43: + case 37: + return 2048; + case 0: + return 2097152; + case 3: + return 65536; + case 28: + return 32768; + case 44: + return 32767; + case 75: + return 16384; + case 39: + return 1e3; + case 89: + return 700; + case 71: + return 256; + case 40: + return 255; + case 2: + return 100; + case 180: + return 64; + case 25: + return 20; + case 5: + return 16; + case 6: + return 6; + case 73: + return 4; + case 84: { + if (typeof navigator === "object") + return navigator["hardwareConcurrency"] || 1; + return 1; + } + } + setErrNo(28); + return -1; + } + if (!ENVIRONMENT_IS_PTHREAD) + PThread.initMainThreadBlock(); + var GLctx; + var proxiedFunctionTable = [null, _atexit, _emscripten_set_canvas_element_size_main_thread, _fd_close, _fd_seek, _fd_write, _sysconf]; + var asmLibraryArg = {e: ___assert_fail, r: ___call_main, x: __emscripten_notify_thread_queue, b: _abort, y: _emscripten_asm_const_int, j: _emscripten_conditional_set_current_thread_status, c: _emscripten_futex_wait, d: _emscripten_futex_wake, f: _emscripten_get_now, p: _emscripten_memcpy_big, z: _emscripten_num_logical_cores, u: _emscripten_receive_on_main_thread_js, q: _emscripten_resize_heap, v: _emscripten_set_canvas_element_size, i: _emscripten_set_current_thread_status, t: _emscripten_set_thread_name, w: _emscripten_webgl_create_context, m: _fd_close, n: _fd_seek, g: _fd_write, o: initPthreadsJS, a: wasmMemory || Module["wasmMemory"], k: _pthread_cleanup_pop, l: _pthread_cleanup_push, h: _pthread_create, s: _sysconf}; + var asm = createWasm(); + var ___wasm_call_ctors = Module["___wasm_call_ctors"] = function() { + return (___wasm_call_ctors = Module["___wasm_call_ctors"] = Module["asm"]["A"]).apply(null, arguments); + }; + var _init = Module["_init"] = function() { + return (_init = Module["_init"] = Module["asm"]["B"]).apply(null, arguments); + }; + var _register_tensor = Module["_register_tensor"] = function() { + return (_register_tensor = Module["_register_tensor"] = Module["asm"]["C"]).apply(null, arguments); + }; + var _dispose_data = Module["_dispose_data"] = function() { + return (_dispose_data = Module["_dispose_data"] = Module["asm"]["D"]).apply(null, arguments); + }; + var _dispose = Module["_dispose"] = function() { + return (_dispose = Module["_dispose"] = Module["asm"]["E"]).apply(null, arguments); + }; + var _Abs = Module["_Abs"] = function() { + return (_Abs = Module["_Abs"] = Module["asm"]["G"]).apply(null, arguments); + }; + var _Add = Module["_Add"] = function() { + return (_Add = Module["_Add"] = Module["asm"]["H"]).apply(null, arguments); + }; + var _AddN = Module["_AddN"] = function() { + return (_AddN = Module["_AddN"] = Module["asm"]["I"]).apply(null, arguments); + }; + var _ArgMax = Module["_ArgMax"] = function() { + return (_ArgMax = Module["_ArgMax"] = Module["asm"]["J"]).apply(null, arguments); + }; + var _AvgPool = Module["_AvgPool"] = function() { + return (_AvgPool = Module["_AvgPool"] = Module["asm"]["K"]).apply(null, arguments); + }; + var _BatchMatMul = Module["_BatchMatMul"] = function() { + return (_BatchMatMul = Module["_BatchMatMul"] = Module["asm"]["L"]).apply(null, arguments); + }; + var _Ceil = Module["_Ceil"] = function() { + return (_Ceil = Module["_Ceil"] = Module["asm"]["M"]).apply(null, arguments); + }; + var _ClipByValue = Module["_ClipByValue"] = function() { + return (_ClipByValue = Module["_ClipByValue"] = Module["asm"]["N"]).apply(null, arguments); + }; + var _Conv2D = Module["_Conv2D"] = function() { + return (_Conv2D = Module["_Conv2D"] = Module["asm"]["O"]).apply(null, arguments); + }; + var _Conv2DBackpropInput = Module["_Conv2DBackpropInput"] = function() { + return (_Conv2DBackpropInput = Module["_Conv2DBackpropInput"] = Module["asm"]["P"]).apply(null, arguments); + }; + var _Cos = Module["_Cos"] = function() { + return (_Cos = Module["_Cos"] = Module["asm"]["Q"]).apply(null, arguments); + }; + var _CropAndResize = Module["_CropAndResize"] = function() { + return (_CropAndResize = Module["_CropAndResize"] = Module["asm"]["R"]).apply(null, arguments); + }; + var _Cumsum = Module["_Cumsum"] = function() { + return (_Cumsum = Module["_Cumsum"] = Module["asm"]["S"]).apply(null, arguments); + }; + var _DepthToSpace = Module["_DepthToSpace"] = function() { + return (_DepthToSpace = Module["_DepthToSpace"] = Module["asm"]["T"]).apply(null, arguments); + }; + var _DepthwiseConv2dNative = Module["_DepthwiseConv2dNative"] = function() { + return (_DepthwiseConv2dNative = Module["_DepthwiseConv2dNative"] = Module["asm"]["U"]).apply(null, arguments); + }; + var _Equal = Module["_Equal"] = function() { + return (_Equal = Module["_Equal"] = Module["asm"]["V"]).apply(null, arguments); + }; + var _Exp = Module["_Exp"] = function() { + return (_Exp = Module["_Exp"] = Module["asm"]["W"]).apply(null, arguments); + }; + var _FlipLeftRight = Module["_FlipLeftRight"] = function() { + return (_FlipLeftRight = Module["_FlipLeftRight"] = Module["asm"]["X"]).apply(null, arguments); + }; + var _Floor = Module["_Floor"] = function() { + return (_Floor = Module["_Floor"] = Module["asm"]["Y"]).apply(null, arguments); + }; + var _FloorDiv = Module["_FloorDiv"] = function() { + return (_FloorDiv = Module["_FloorDiv"] = Module["asm"]["Z"]).apply(null, arguments); + }; + var _FusedBatchNorm = Module["_FusedBatchNorm"] = function() { + return (_FusedBatchNorm = Module["_FusedBatchNorm"] = Module["asm"]["_"]).apply(null, arguments); + }; + var _FusedConv2D = Module["_FusedConv2D"] = function() { + return (_FusedConv2D = Module["_FusedConv2D"] = Module["asm"]["$"]).apply(null, arguments); + }; + var _FusedDepthwiseConv2D = Module["_FusedDepthwiseConv2D"] = function() { + return (_FusedDepthwiseConv2D = Module["_FusedDepthwiseConv2D"] = Module["asm"]["aa"]).apply(null, arguments); + }; + var _Gather = Module["_Gather"] = function() { + return (_Gather = Module["_Gather"] = Module["asm"]["ba"]).apply(null, arguments); + }; + var _GatherNd = Module["_GatherNd"] = function() { + return (_GatherNd = Module["_GatherNd"] = Module["asm"]["ca"]).apply(null, arguments); + }; + var _Greater = Module["_Greater"] = function() { + return (_Greater = Module["_Greater"] = Module["asm"]["da"]).apply(null, arguments); + }; + var _GreaterEqual = Module["_GreaterEqual"] = function() { + return (_GreaterEqual = Module["_GreaterEqual"] = Module["asm"]["ea"]).apply(null, arguments); + }; + var _LeakyRelu = Module["_LeakyRelu"] = function() { + return (_LeakyRelu = Module["_LeakyRelu"] = Module["asm"]["fa"]).apply(null, arguments); + }; + var _Less = Module["_Less"] = function() { + return (_Less = Module["_Less"] = Module["asm"]["ga"]).apply(null, arguments); + }; + var _LessEqual = Module["_LessEqual"] = function() { + return (_LessEqual = Module["_LessEqual"] = Module["asm"]["ha"]).apply(null, arguments); + }; + var _Log = Module["_Log"] = function() { + return (_Log = Module["_Log"] = Module["asm"]["ia"]).apply(null, arguments); + }; + var _LogicalAnd = Module["_LogicalAnd"] = function() { + return (_LogicalAnd = Module["_LogicalAnd"] = Module["asm"]["ja"]).apply(null, arguments); + }; + var _Max = Module["_Max"] = function() { + return (_Max = Module["_Max"] = Module["asm"]["ka"]).apply(null, arguments); + }; + var _MaxPool = Module["_MaxPool"] = function() { + return (_MaxPool = Module["_MaxPool"] = Module["asm"]["la"]).apply(null, arguments); + }; + var _Maximum = Module["_Maximum"] = function() { + return (_Maximum = Module["_Maximum"] = Module["asm"]["ma"]).apply(null, arguments); + }; + var _Mean = Module["_Mean"] = function() { + return (_Mean = Module["_Mean"] = Module["asm"]["na"]).apply(null, arguments); + }; + var _Min = Module["_Min"] = function() { + return (_Min = Module["_Min"] = Module["asm"]["oa"]).apply(null, arguments); + }; + var _Minimum = Module["_Minimum"] = function() { + return (_Minimum = Module["_Minimum"] = Module["asm"]["pa"]).apply(null, arguments); + }; + var _Multiply = Module["_Multiply"] = function() { + return (_Multiply = Module["_Multiply"] = Module["asm"]["qa"]).apply(null, arguments); + }; + var _Neg = Module["_Neg"] = function() { + return (_Neg = Module["_Neg"] = Module["asm"]["ra"]).apply(null, arguments); + }; + var _NonMaxSuppressionV3 = Module["_NonMaxSuppressionV3"] = function() { + return (_NonMaxSuppressionV3 = Module["_NonMaxSuppressionV3"] = Module["asm"]["sa"]).apply(null, arguments); + }; + var _NonMaxSuppressionV4 = Module["_NonMaxSuppressionV4"] = function() { + return (_NonMaxSuppressionV4 = Module["_NonMaxSuppressionV4"] = Module["asm"]["ta"]).apply(null, arguments); + }; + var _NonMaxSuppressionV5 = Module["_NonMaxSuppressionV5"] = function() { + return (_NonMaxSuppressionV5 = Module["_NonMaxSuppressionV5"] = Module["asm"]["ua"]).apply(null, arguments); + }; + var _NotEqual = Module["_NotEqual"] = function() { + return (_NotEqual = Module["_NotEqual"] = Module["asm"]["va"]).apply(null, arguments); + }; + var _OneHot = Module["_OneHot"] = function() { + return (_OneHot = Module["_OneHot"] = Module["asm"]["wa"]).apply(null, arguments); + }; + var _PadV2 = Module["_PadV2"] = function() { + return (_PadV2 = Module["_PadV2"] = Module["asm"]["xa"]).apply(null, arguments); + }; + var _Pow = Module["_Pow"] = function() { + return (_Pow = Module["_Pow"] = Module["asm"]["ya"]).apply(null, arguments); + }; + var _Prelu = Module["_Prelu"] = function() { + return (_Prelu = Module["_Prelu"] = Module["asm"]["za"]).apply(null, arguments); + }; + var _Prod = Module["_Prod"] = function() { + return (_Prod = Module["_Prod"] = Module["asm"]["Aa"]).apply(null, arguments); + }; + var _RealDiv = Module["_RealDiv"] = function() { + return (_RealDiv = Module["_RealDiv"] = Module["asm"]["Ba"]).apply(null, arguments); + }; + var _Relu = Module["_Relu"] = function() { + return (_Relu = Module["_Relu"] = Module["asm"]["Ca"]).apply(null, arguments); + }; + var _Relu6 = Module["_Relu6"] = function() { + return (_Relu6 = Module["_Relu6"] = Module["asm"]["Da"]).apply(null, arguments); + }; + var _ResizeBilinear = Module["_ResizeBilinear"] = function() { + return (_ResizeBilinear = Module["_ResizeBilinear"] = Module["asm"]["Ea"]).apply(null, arguments); + }; + var _Reverse = Module["_Reverse"] = function() { + return (_Reverse = Module["_Reverse"] = Module["asm"]["Fa"]).apply(null, arguments); + }; + var _RotateWithOffset = Module["_RotateWithOffset"] = function() { + return (_RotateWithOffset = Module["_RotateWithOffset"] = Module["asm"]["Ga"]).apply(null, arguments); + }; + var _Round = Module["_Round"] = function() { + return (_Round = Module["_Round"] = Module["asm"]["Ha"]).apply(null, arguments); + }; + var _Rsqrt = Module["_Rsqrt"] = function() { + return (_Rsqrt = Module["_Rsqrt"] = Module["asm"]["Ia"]).apply(null, arguments); + }; + var _ScatterNd = Module["_ScatterNd"] = function() { + return (_ScatterNd = Module["_ScatterNd"] = Module["asm"]["Ja"]).apply(null, arguments); + }; + var _SelectV2 = Module["_SelectV2"] = function() { + return (_SelectV2 = Module["_SelectV2"] = Module["asm"]["Ka"]).apply(null, arguments); + }; + var _Sigmoid = Module["_Sigmoid"] = function() { + return (_Sigmoid = Module["_Sigmoid"] = Module["asm"]["La"]).apply(null, arguments); + }; + var _Sin = Module["_Sin"] = function() { + return (_Sin = Module["_Sin"] = Module["asm"]["Ma"]).apply(null, arguments); + }; + var _Softmax = Module["_Softmax"] = function() { + return (_Softmax = Module["_Softmax"] = Module["asm"]["Na"]).apply(null, arguments); + }; + var _Sqrt = Module["_Sqrt"] = function() { + return (_Sqrt = Module["_Sqrt"] = Module["asm"]["Oa"]).apply(null, arguments); + }; + var _Square = Module["_Square"] = function() { + return (_Square = Module["_Square"] = Module["asm"]["Pa"]).apply(null, arguments); + }; + var _SquaredDifference = Module["_SquaredDifference"] = function() { + return (_SquaredDifference = Module["_SquaredDifference"] = Module["asm"]["Qa"]).apply(null, arguments); + }; + var _Step = Module["_Step"] = function() { + return (_Step = Module["_Step"] = Module["asm"]["Ra"]).apply(null, arguments); + }; + var _StridedSlice = Module["_StridedSlice"] = function() { + return (_StridedSlice = Module["_StridedSlice"] = Module["asm"]["Sa"]).apply(null, arguments); + }; + var _Sub = Module["_Sub"] = function() { + return (_Sub = Module["_Sub"] = Module["asm"]["Ta"]).apply(null, arguments); + }; + var _Sum = Module["_Sum"] = function() { + return (_Sum = Module["_Sum"] = Module["asm"]["Ua"]).apply(null, arguments); + }; + var _Tanh = Module["_Tanh"] = function() { + return (_Tanh = Module["_Tanh"] = Module["asm"]["Va"]).apply(null, arguments); + }; + var _Tile = Module["_Tile"] = function() { + return (_Tile = Module["_Tile"] = Module["asm"]["Wa"]).apply(null, arguments); + }; + var _TopK = Module["_TopK"] = function() { + return (_TopK = Module["_TopK"] = Module["asm"]["Xa"]).apply(null, arguments); + }; + var _Transpose = Module["_Transpose"] = function() { + return (_Transpose = Module["_Transpose"] = Module["asm"]["Ya"]).apply(null, arguments); + }; + var __FusedMatMul = Module["__FusedMatMul"] = function() { + return (__FusedMatMul = Module["__FusedMatMul"] = Module["asm"]["Za"]).apply(null, arguments); + }; + var _malloc = Module["_malloc"] = function() { + return (_malloc = Module["_malloc"] = Module["asm"]["_a"]).apply(null, arguments); + }; + var _free = Module["_free"] = function() { + return (_free = Module["_free"] = Module["asm"]["$a"]).apply(null, arguments); + }; + var ___errno_location = Module["___errno_location"] = function() { + return (___errno_location = Module["___errno_location"] = Module["asm"]["ab"]).apply(null, arguments); + }; + var _emscripten_get_global_libc = Module["_emscripten_get_global_libc"] = function() { + return (_emscripten_get_global_libc = Module["_emscripten_get_global_libc"] = Module["asm"]["bb"]).apply(null, arguments); + }; + var _pthread_self = Module["_pthread_self"] = function() { + return (_pthread_self = Module["_pthread_self"] = Module["asm"]["cb"]).apply(null, arguments); + }; + var ___pthread_tsd_run_dtors = Module["___pthread_tsd_run_dtors"] = function() { + return (___pthread_tsd_run_dtors = Module["___pthread_tsd_run_dtors"] = Module["asm"]["db"]).apply(null, arguments); + }; + var _emscripten_main_thread_process_queued_calls = Module["_emscripten_main_thread_process_queued_calls"] = function() { + return (_emscripten_main_thread_process_queued_calls = Module["_emscripten_main_thread_process_queued_calls"] = Module["asm"]["eb"]).apply(null, arguments); + }; + var _emscripten_current_thread_process_queued_calls = Module["_emscripten_current_thread_process_queued_calls"] = function() { + return (_emscripten_current_thread_process_queued_calls = Module["_emscripten_current_thread_process_queued_calls"] = Module["asm"]["fb"]).apply(null, arguments); + }; + var _emscripten_register_main_browser_thread_id = Module["_emscripten_register_main_browser_thread_id"] = function() { + return (_emscripten_register_main_browser_thread_id = Module["_emscripten_register_main_browser_thread_id"] = Module["asm"]["gb"]).apply(null, arguments); + }; + var __emscripten_do_dispatch_to_thread = Module["__emscripten_do_dispatch_to_thread"] = function() { + return (__emscripten_do_dispatch_to_thread = Module["__emscripten_do_dispatch_to_thread"] = Module["asm"]["hb"]).apply(null, arguments); + }; + var _emscripten_sync_run_in_main_thread_4 = Module["_emscripten_sync_run_in_main_thread_4"] = function() { + return (_emscripten_sync_run_in_main_thread_4 = Module["_emscripten_sync_run_in_main_thread_4"] = Module["asm"]["ib"]).apply(null, arguments); + }; + var _emscripten_run_in_main_runtime_thread_js = Module["_emscripten_run_in_main_runtime_thread_js"] = function() { + return (_emscripten_run_in_main_runtime_thread_js = Module["_emscripten_run_in_main_runtime_thread_js"] = Module["asm"]["jb"]).apply(null, arguments); + }; + var __emscripten_call_on_thread = Module["__emscripten_call_on_thread"] = function() { + return (__emscripten_call_on_thread = Module["__emscripten_call_on_thread"] = Module["asm"]["kb"]).apply(null, arguments); + }; + var _emscripten_tls_init = Module["_emscripten_tls_init"] = function() { + return (_emscripten_tls_init = Module["_emscripten_tls_init"] = Module["asm"]["lb"]).apply(null, arguments); + }; + var __emscripten_thread_init = Module["__emscripten_thread_init"] = function() { + return (__emscripten_thread_init = Module["__emscripten_thread_init"] = Module["asm"]["mb"]).apply(null, arguments); + }; + var stackSave = Module["stackSave"] = function() { + return (stackSave = Module["stackSave"] = Module["asm"]["nb"]).apply(null, arguments); + }; + var stackRestore = Module["stackRestore"] = function() { + return (stackRestore = Module["stackRestore"] = Module["asm"]["ob"]).apply(null, arguments); + }; + var stackAlloc = Module["stackAlloc"] = function() { + return (stackAlloc = Module["stackAlloc"] = Module["asm"]["pb"]).apply(null, arguments); + }; + var _emscripten_stack_set_limits = Module["_emscripten_stack_set_limits"] = function() { + return (_emscripten_stack_set_limits = Module["_emscripten_stack_set_limits"] = Module["asm"]["qb"]).apply(null, arguments); + }; + var _memalign = Module["_memalign"] = function() { + return (_memalign = Module["_memalign"] = Module["asm"]["rb"]).apply(null, arguments); + }; + var __emscripten_allow_main_runtime_queued_calls = Module["__emscripten_allow_main_runtime_queued_calls"] = 9880; + var __emscripten_main_thread_futex = Module["__emscripten_main_thread_futex"] = 11368; + Module["cwrap"] = cwrap; + Module["PThread"] = PThread; + Module["PThread"] = PThread; + Module["wasmMemory"] = wasmMemory; + Module["ExitStatus"] = ExitStatus; + var calledRun; + function ExitStatus(status) { + this.name = "ExitStatus"; + this.message = "Program terminated with exit(" + status + ")"; + this.status = status; + } + dependenciesFulfilled = function runCaller() { + if (!calledRun) + run2(); + if (!calledRun) + dependenciesFulfilled = runCaller; + }; + function run2(args) { + args = args || arguments_; + if (runDependencies > 0) { + return; + } + if (ENVIRONMENT_IS_PTHREAD) { + readyPromiseResolve(Module); + postMessage({cmd: "loaded"}); + return; + } + preRun(); + if (runDependencies > 0) { + return; + } + function doRun() { + if (calledRun) + return; + calledRun = true; + Module["calledRun"] = true; + if (ABORT) + return; + initRuntime(); + preMain(); + readyPromiseResolve(Module); + if (Module["onRuntimeInitialized"]) + Module["onRuntimeInitialized"](); + postRun(); + } + if (Module["setStatus"]) { + Module["setStatus"]("Running..."); + setTimeout(function() { + setTimeout(function() { + Module["setStatus"](""); + }, 1); + doRun(); + }, 1); + } else { + doRun(); + } + } + Module["run"] = run2; + function exit(status, implicit) { + if (implicit && noExitRuntime && status === 0) { + return; + } + if (!implicit) { + if (ENVIRONMENT_IS_PTHREAD) { + postMessage({cmd: "exitProcess", returnCode: status}); + throw new ExitStatus(status); + } else { + } + } + if (noExitRuntime) { + } else { + PThread.terminateAllThreads(); + EXITSTATUS = status; + exitRuntime(); + if (Module["onExit"]) + Module["onExit"](status); + ABORT = true; + } + quit_(status, new ExitStatus(status)); + } + if (Module["preInit"]) { + if (typeof Module["preInit"] == "function") + Module["preInit"] = [Module["preInit"]]; + while (Module["preInit"].length > 0) { + Module["preInit"].pop()(); + } + } + if (ENVIRONMENT_IS_PTHREAD) { + noExitRuntime = false; + PThread.initWorker(); + } + run2(); + return WasmBackendModuleThreadedSimd2.ready; + }; + }(); + if (typeof exports === "object" && typeof module === "object") + module.exports = WasmBackendModuleThreadedSimd; + else if (typeof define === "function" && define["amd"]) + define([], function() { + return WasmBackendModuleThreadedSimd; + }); + else if (typeof exports === "object") + exports["WasmBackendModuleThreadedSimd"] = WasmBackendModuleThreadedSimd; + }); + var require_tfjs_backend_wasm = __commonJS2((exports, module) => { + var WasmBackendModule = function() { + var _scriptDir = typeof document !== "undefined" && document.currentScript ? document.currentScript.src : void 0; + if (typeof __filename !== "undefined") + _scriptDir = _scriptDir || __filename; + return function(WasmBackendModule2) { + WasmBackendModule2 = WasmBackendModule2 || {}; + var Module = typeof WasmBackendModule2 !== "undefined" ? WasmBackendModule2 : {}; + var readyPromiseResolve, readyPromiseReject; + Module["ready"] = new Promise(function(resolve, reject) { + readyPromiseResolve = resolve; + readyPromiseReject = reject; + }); + var moduleOverrides = {}; + var key; + for (key in Module) { + if (Module.hasOwnProperty(key)) { + moduleOverrides[key] = Module[key]; + } + } + var arguments_ = []; + var thisProgram = "./this.program"; + var quit_ = function(status, toThrow) { + throw toThrow; + }; + var ENVIRONMENT_IS_WEB = false; + var ENVIRONMENT_IS_WORKER = false; + var ENVIRONMENT_IS_NODE = false; + var ENVIRONMENT_IS_SHELL = false; + ENVIRONMENT_IS_WEB = typeof window === "object"; + ENVIRONMENT_IS_WORKER = typeof importScripts === "function"; + ENVIRONMENT_IS_NODE = typeof process === "object" && typeof process.versions === "object" && typeof process.versions.node === "string"; + ENVIRONMENT_IS_SHELL = !ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_NODE && !ENVIRONMENT_IS_WORKER; + var scriptDirectory = ""; + function locateFile(path) { + if (Module["locateFile"]) { + return Module["locateFile"](path, scriptDirectory); + } + return scriptDirectory + path; + } + var read_, readAsync, readBinary, setWindowTitle; + var nodeFS; + var nodePath; + if (ENVIRONMENT_IS_NODE) { + if (ENVIRONMENT_IS_WORKER) { + scriptDirectory = require_path().dirname(scriptDirectory) + "/"; + } else { + scriptDirectory = __dirname + "/"; + } + read_ = function shell_read(filename, binary) { + if (!nodeFS) + nodeFS = require("fs"); + if (!nodePath) + nodePath = require_path(); + filename = nodePath["normalize"](filename); + return nodeFS["readFileSync"](filename, binary ? null : "utf8"); + }; + readBinary = function readBinary2(filename) { + var ret = read_(filename, true); + if (!ret.buffer) { + ret = new Uint8Array(ret); + } + assert3(ret.buffer); + return ret; + }; + if (process["argv"].length > 1) { + thisProgram = process["argv"][1].replace(/\\/g, "/"); + } + arguments_ = process["argv"].slice(2); + process["on"]("uncaughtException", function(ex) { + if (!(ex instanceof ExitStatus)) { + throw ex; + } + }); + process["on"]("unhandledRejection", abort); + quit_ = function(status) { + process["exit"](status); + }; + Module["inspect"] = function() { + return "[Emscripten Module object]"; + }; + } else if (ENVIRONMENT_IS_SHELL) { + if (typeof read != "undefined") { + read_ = function shell_read(f) { + return read(f); + }; + } + readBinary = function readBinary2(f) { + var data2; + if (typeof readbuffer === "function") { + return new Uint8Array(readbuffer(f)); + } + data2 = read(f, "binary"); + assert3(typeof data2 === "object"); + return data2; + }; + if (typeof scriptArgs != "undefined") { + arguments_ = scriptArgs; + } else if (typeof arguments != "undefined") { + arguments_ = arguments; + } + if (typeof quit === "function") { + quit_ = function(status) { + quit(status); + }; + } + if (typeof print !== "undefined") { + if (typeof console === "undefined") + console = {}; + console.log = print; + console.warn = console.error = typeof printErr !== "undefined" ? printErr : print; + } + } else if (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) { + if (ENVIRONMENT_IS_WORKER) { + scriptDirectory = self.location.href; + } else if (typeof document !== "undefined" && document.currentScript) { + scriptDirectory = document.currentScript.src; + } + if (_scriptDir) { + scriptDirectory = _scriptDir; + } + if (scriptDirectory.indexOf("blob:") !== 0) { + scriptDirectory = scriptDirectory.substr(0, scriptDirectory.lastIndexOf("/") + 1); + } else { + scriptDirectory = ""; + } + { + read_ = function(url) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", url, false); + xhr.send(null); + return xhr.responseText; + }; + if (ENVIRONMENT_IS_WORKER) { + readBinary = function(url) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", url, false); + xhr.responseType = "arraybuffer"; + xhr.send(null); + return new Uint8Array(xhr.response); + }; + } + readAsync = function(url, onload, onerror) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", url, true); + xhr.responseType = "arraybuffer"; + xhr.onload = function() { + if (xhr.status == 200 || xhr.status == 0 && xhr.response) { + onload(xhr.response); + return; + } + onerror(); + }; + xhr.onerror = onerror; + xhr.send(null); + }; + } + setWindowTitle = function(title) { + document.title = title; + }; + } else { + } + var out = Module["print"] || console.log.bind(console); + var err = Module["printErr"] || console.warn.bind(console); + for (key in moduleOverrides) { + if (moduleOverrides.hasOwnProperty(key)) { + Module[key] = moduleOverrides[key]; + } + } + moduleOverrides = null; + if (Module["arguments"]) + arguments_ = Module["arguments"]; + if (Module["thisProgram"]) + thisProgram = Module["thisProgram"]; + if (Module["quit"]) + quit_ = Module["quit"]; + var wasmBinary; + if (Module["wasmBinary"]) + wasmBinary = Module["wasmBinary"]; + var noExitRuntime = Module["noExitRuntime"] || true; + if (typeof WebAssembly !== "object") { + abort("no native wasm support detected"); + } + var wasmMemory; + var ABORT = false; + var EXITSTATUS; + function assert3(condition, text) { + if (!condition) { + abort("Assertion failed: " + text); + } + } + function getCFunc(ident) { + var func2 = Module["_" + ident]; + assert3(func2, "Cannot call unknown function " + ident + ", make sure it is exported"); + return func2; + } + function ccall(ident, returnType, argTypes, args, opts) { + var toC = {string: function(str) { + var ret2 = 0; + if (str !== null && str !== void 0 && str !== 0) { + var len = (str.length << 2) + 1; + ret2 = stackAlloc(len); + stringToUTF8(str, ret2, len); + } + return ret2; + }, array: function(arr) { + var ret2 = stackAlloc(arr.length); + writeArrayToMemory(arr, ret2); + return ret2; + }}; + function convertReturnValue(ret2) { + if (returnType === "string") + return UTF8ToString(ret2); + if (returnType === "boolean") + return Boolean(ret2); + return ret2; + } + var func2 = getCFunc(ident); + var cArgs = []; + var stack2 = 0; + if (args) { + for (var i = 0; i < args.length; i++) { + var converter = toC[argTypes[i]]; + if (converter) { + if (stack2 === 0) + stack2 = stackSave(); + cArgs[i] = converter(args[i]); + } else { + cArgs[i] = args[i]; + } + } + } + var ret = func2.apply(null, cArgs); + ret = convertReturnValue(ret); + if (stack2 !== 0) + stackRestore(stack2); + return ret; + } + function cwrap(ident, returnType, argTypes, opts) { + argTypes = argTypes || []; + var numericArgs = argTypes.every(function(type) { + return type === "number"; + }); + var numericRet = returnType !== "string"; + if (numericRet && numericArgs && !opts) { + return getCFunc(ident); + } + return function() { + return ccall(ident, returnType, argTypes, arguments, opts); + }; + } + var UTF8Decoder = typeof TextDecoder !== "undefined" ? new TextDecoder("utf8") : void 0; + function UTF8ArrayToString(heap, idx, maxBytesToRead) { + var endIdx = idx + maxBytesToRead; + var endPtr = idx; + while (heap[endPtr] && !(endPtr >= endIdx)) + ++endPtr; + if (endPtr - idx > 16 && heap.subarray && UTF8Decoder) { + return UTF8Decoder.decode(heap.subarray(idx, endPtr)); + } else { + var str = ""; + while (idx < endPtr) { + var u0 = heap[idx++]; + if (!(u0 & 128)) { + str += String.fromCharCode(u0); + continue; + } + var u1 = heap[idx++] & 63; + if ((u0 & 224) == 192) { + str += String.fromCharCode((u0 & 31) << 6 | u1); + continue; + } + var u2 = heap[idx++] & 63; + if ((u0 & 240) == 224) { + u0 = (u0 & 15) << 12 | u1 << 6 | u2; + } else { + u0 = (u0 & 7) << 18 | u1 << 12 | u2 << 6 | heap[idx++] & 63; + } + if (u0 < 65536) { + str += String.fromCharCode(u0); + } else { + var ch = u0 - 65536; + str += String.fromCharCode(55296 | ch >> 10, 56320 | ch & 1023); + } + } + } + return str; + } + function UTF8ToString(ptr, maxBytesToRead) { + return ptr ? UTF8ArrayToString(HEAPU8, ptr, maxBytesToRead) : ""; + } + function stringToUTF8Array(str, heap, outIdx, maxBytesToWrite) { + if (!(maxBytesToWrite > 0)) + return 0; + var startIdx = outIdx; + var endIdx = outIdx + maxBytesToWrite - 1; + for (var i = 0; i < str.length; ++i) { + var u = str.charCodeAt(i); + if (u >= 55296 && u <= 57343) { + var u1 = str.charCodeAt(++i); + u = 65536 + ((u & 1023) << 10) | u1 & 1023; + } + if (u <= 127) { + if (outIdx >= endIdx) + break; + heap[outIdx++] = u; + } else if (u <= 2047) { + if (outIdx + 1 >= endIdx) + break; + heap[outIdx++] = 192 | u >> 6; + heap[outIdx++] = 128 | u & 63; + } else if (u <= 65535) { + if (outIdx + 2 >= endIdx) + break; + heap[outIdx++] = 224 | u >> 12; + heap[outIdx++] = 128 | u >> 6 & 63; + heap[outIdx++] = 128 | u & 63; + } else { + if (outIdx + 3 >= endIdx) + break; + heap[outIdx++] = 240 | u >> 18; + heap[outIdx++] = 128 | u >> 12 & 63; + heap[outIdx++] = 128 | u >> 6 & 63; + heap[outIdx++] = 128 | u & 63; + } + } + heap[outIdx] = 0; + return outIdx - startIdx; + } + function stringToUTF8(str, outPtr, maxBytesToWrite) { + return stringToUTF8Array(str, HEAPU8, outPtr, maxBytesToWrite); + } + function writeArrayToMemory(array2, buffer3) { + HEAP8.set(array2, buffer3); + } + function alignUp(x, multiple) { + if (x % multiple > 0) { + x += multiple - x % multiple; + } + return x; + } + var buffer2, HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64; + function updateGlobalBufferAndViews(buf) { + buffer2 = buf; + Module["HEAP8"] = HEAP8 = new Int8Array(buf); + Module["HEAP16"] = HEAP16 = new Int16Array(buf); + Module["HEAP32"] = HEAP32 = new Int32Array(buf); + Module["HEAPU8"] = HEAPU8 = new Uint8Array(buf); + Module["HEAPU16"] = HEAPU16 = new Uint16Array(buf); + Module["HEAPU32"] = HEAPU32 = new Uint32Array(buf); + Module["HEAPF32"] = HEAPF32 = new Float32Array(buf); + Module["HEAPF64"] = HEAPF64 = new Float64Array(buf); + } + var INITIAL_MEMORY = Module["INITIAL_MEMORY"] || 16777216; + var wasmTable; + var __ATPRERUN__ = []; + var __ATINIT__ = []; + var __ATMAIN__ = []; + var __ATPOSTRUN__ = []; + var runtimeInitialized = false; + __ATINIT__.push({func: function() { + ___wasm_call_ctors(); + }}); + function preRun() { + if (Module["preRun"]) { + if (typeof Module["preRun"] == "function") + Module["preRun"] = [Module["preRun"]]; + while (Module["preRun"].length) { + addOnPreRun(Module["preRun"].shift()); + } + } + callRuntimeCallbacks(__ATPRERUN__); + } + function initRuntime() { + runtimeInitialized = true; + callRuntimeCallbacks(__ATINIT__); + } + function preMain() { + callRuntimeCallbacks(__ATMAIN__); + } + function postRun() { + if (Module["postRun"]) { + if (typeof Module["postRun"] == "function") + Module["postRun"] = [Module["postRun"]]; + while (Module["postRun"].length) { + addOnPostRun(Module["postRun"].shift()); + } + } + callRuntimeCallbacks(__ATPOSTRUN__); + } + function addOnPreRun(cb) { + __ATPRERUN__.unshift(cb); + } + function addOnPostRun(cb) { + __ATPOSTRUN__.unshift(cb); + } + var runDependencies = 0; + var runDependencyWatcher = null; + var dependenciesFulfilled = null; + function addRunDependency(id) { + runDependencies++; + if (Module["monitorRunDependencies"]) { + Module["monitorRunDependencies"](runDependencies); + } + } + function removeRunDependency(id) { + runDependencies--; + if (Module["monitorRunDependencies"]) { + Module["monitorRunDependencies"](runDependencies); + } + if (runDependencies == 0) { + if (runDependencyWatcher !== null) { + clearInterval(runDependencyWatcher); + runDependencyWatcher = null; + } + if (dependenciesFulfilled) { + var callback = dependenciesFulfilled; + dependenciesFulfilled = null; + callback(); + } + } + } + Module["preloadedImages"] = {}; + Module["preloadedAudios"] = {}; + function abort(what) { + if (Module["onAbort"]) { + Module["onAbort"](what); + } + what += ""; + err(what); + ABORT = true; + EXITSTATUS = 1; + what = "abort(" + what + "). Build with -s ASSERTIONS=1 for more info."; + var e = new WebAssembly.RuntimeError(what); + readyPromiseReject(e); + throw e; + } + function hasPrefix(str, prefix) { + return String.prototype.startsWith ? str.startsWith(prefix) : str.indexOf(prefix) === 0; + } + var dataURIPrefix = "data:application/octet-stream;base64,"; + function isDataURI(filename) { + return hasPrefix(filename, dataURIPrefix); + } + var fileURIPrefix = "file://"; + function isFileURI(filename) { + return hasPrefix(filename, fileURIPrefix); + } + var wasmBinaryFile = "tfjs-backend-wasm.wasm"; + if (!isDataURI(wasmBinaryFile)) { + wasmBinaryFile = locateFile(wasmBinaryFile); + } + function getBinary(file) { + try { + if (file == wasmBinaryFile && wasmBinary) { + return new Uint8Array(wasmBinary); + } + if (readBinary) { + return readBinary(file); + } else { + throw "both async and sync fetching of the wasm failed"; + } + } catch (err2) { + abort(err2); + } + } + function getBinaryPromise() { + if (!wasmBinary && (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER)) { + if (typeof fetch === "function" && !isFileURI(wasmBinaryFile)) { + return fetch(wasmBinaryFile, {credentials: "same-origin"}).then(function(response) { + if (!response["ok"]) { + throw "failed to load wasm binary file at '" + wasmBinaryFile + "'"; + } + return response["arrayBuffer"](); + }).catch(function() { + return getBinary(wasmBinaryFile); + }); + } else { + if (readAsync) { + return new Promise(function(resolve, reject) { + readAsync(wasmBinaryFile, function(response) { + resolve(new Uint8Array(response)); + }, reject); + }); + } + } + } + return Promise.resolve().then(function() { + return getBinary(wasmBinaryFile); + }); + } + function createWasm() { + var info2 = {a: asmLibraryArg}; + function receiveInstance(instance, module2) { + var exports3 = instance.exports; + Module["asm"] = exports3; + wasmMemory = Module["asm"]["g"]; + updateGlobalBufferAndViews(wasmMemory.buffer); + wasmTable = Module["asm"]["m"]; + removeRunDependency("wasm-instantiate"); + } + addRunDependency("wasm-instantiate"); + function receiveInstantiatedSource(output) { + receiveInstance(output["instance"]); + } + function instantiateArrayBuffer(receiver) { + return getBinaryPromise().then(function(binary) { + return WebAssembly.instantiate(binary, info2); + }).then(receiver, function(reason) { + err("failed to asynchronously prepare wasm: " + reason); + abort(reason); + }); + } + function instantiateAsync() { + if (!wasmBinary && typeof WebAssembly.instantiateStreaming === "function" && !isDataURI(wasmBinaryFile) && !isFileURI(wasmBinaryFile) && typeof fetch === "function") { + return fetch(wasmBinaryFile, {credentials: "same-origin"}).then(function(response) { + var result = WebAssembly.instantiateStreaming(response, info2); + return result.then(receiveInstantiatedSource, function(reason) { + err("wasm streaming compile failed: " + reason); + err("falling back to ArrayBuffer instantiation"); + return instantiateArrayBuffer(receiveInstantiatedSource); + }); + }); + } else { + return instantiateArrayBuffer(receiveInstantiatedSource); + } + } + if (Module["instantiateWasm"]) { + try { + var exports2 = Module["instantiateWasm"](info2, receiveInstance); + return exports2; + } catch (e) { + err("Module.instantiateWasm callback failed with error: " + e); + return false; + } + } + instantiateAsync().catch(readyPromiseReject); + return {}; + } + function callRuntimeCallbacks(callbacks2) { + while (callbacks2.length > 0) { + var callback = callbacks2.shift(); + if (typeof callback == "function") { + callback(Module); + continue; + } + var func2 = callback.func; + if (typeof func2 === "number") { + if (callback.arg === void 0) { + wasmTable.get(func2)(); + } else { + wasmTable.get(func2)(callback.arg); + } + } else { + func2(callback.arg === void 0 ? null : callback.arg); + } + } + } + function _abort() { + abort(); + } + function _emscripten_memcpy_big(dest, src, num) { + HEAPU8.copyWithin(dest, src, src + num); + } + function _emscripten_get_heap_size() { + return HEAPU8.length; + } + function emscripten_realloc_buffer(size) { + try { + wasmMemory.grow(size - buffer2.byteLength + 65535 >>> 16); + updateGlobalBufferAndViews(wasmMemory.buffer); + return 1; + } catch (e) { + } + } + function _emscripten_resize_heap(requestedSize) { + var oldSize = _emscripten_get_heap_size(); + var maxHeapSize = 2147483648; + if (requestedSize > maxHeapSize) { + return false; + } + for (var cutDown = 1; cutDown <= 4; cutDown *= 2) { + var overGrownHeapSize = oldSize * (1 + 0.2 / cutDown); + overGrownHeapSize = Math.min(overGrownHeapSize, requestedSize + 100663296); + var newSize = Math.min(maxHeapSize, alignUp(Math.max(requestedSize, overGrownHeapSize), 65536)); + var replacement = emscripten_realloc_buffer(newSize); + if (replacement) { + return true; + } + } + return false; + } + var SYSCALLS = {mappings: {}, buffers: [null, [], []], printChar: function(stream, curr) { + var buffer3 = SYSCALLS.buffers[stream]; + if (curr === 0 || curr === 10) { + (stream === 1 ? out : err)(UTF8ArrayToString(buffer3, 0)); + buffer3.length = 0; + } else { + buffer3.push(curr); + } + }, varargs: void 0, get: function() { + SYSCALLS.varargs += 4; + var ret = HEAP32[SYSCALLS.varargs - 4 >> 2]; + return ret; + }, getStr: function(ptr) { + var ret = UTF8ToString(ptr); + return ret; + }, get64: function(low, high) { + return low; + }}; + function _fd_close(fd) { + return 0; + } + function _fd_seek(fd, offset_low, offset_high, whence, newOffset) { + } + function _fd_write(fd, iov, iovcnt, pnum) { + var num = 0; + for (var i = 0; i < iovcnt; i++) { + var ptr = HEAP32[iov + i * 8 >> 2]; + var len = HEAP32[iov + (i * 8 + 4) >> 2]; + for (var j = 0; j < len; j++) { + SYSCALLS.printChar(fd, HEAPU8[ptr + j]); + } + num += len; + } + HEAP32[pnum >> 2] = num; + return 0; + } + var asmLibraryArg = {a: _abort, d: _emscripten_memcpy_big, e: _emscripten_resize_heap, f: _fd_close, c: _fd_seek, b: _fd_write}; + var asm = createWasm(); + var ___wasm_call_ctors = Module["___wasm_call_ctors"] = function() { + return (___wasm_call_ctors = Module["___wasm_call_ctors"] = Module["asm"]["h"]).apply(null, arguments); + }; + var _init = Module["_init"] = function() { + return (_init = Module["_init"] = Module["asm"]["i"]).apply(null, arguments); + }; + var _register_tensor = Module["_register_tensor"] = function() { + return (_register_tensor = Module["_register_tensor"] = Module["asm"]["j"]).apply(null, arguments); + }; + var _dispose_data = Module["_dispose_data"] = function() { + return (_dispose_data = Module["_dispose_data"] = Module["asm"]["k"]).apply(null, arguments); + }; + var _dispose = Module["_dispose"] = function() { + return (_dispose = Module["_dispose"] = Module["asm"]["l"]).apply(null, arguments); + }; + var _Abs = Module["_Abs"] = function() { + return (_Abs = Module["_Abs"] = Module["asm"]["n"]).apply(null, arguments); + }; + var _Add = Module["_Add"] = function() { + return (_Add = Module["_Add"] = Module["asm"]["o"]).apply(null, arguments); + }; + var _AddN = Module["_AddN"] = function() { + return (_AddN = Module["_AddN"] = Module["asm"]["p"]).apply(null, arguments); + }; + var _ArgMax = Module["_ArgMax"] = function() { + return (_ArgMax = Module["_ArgMax"] = Module["asm"]["q"]).apply(null, arguments); + }; + var _AvgPool = Module["_AvgPool"] = function() { + return (_AvgPool = Module["_AvgPool"] = Module["asm"]["r"]).apply(null, arguments); + }; + var _BatchMatMul = Module["_BatchMatMul"] = function() { + return (_BatchMatMul = Module["_BatchMatMul"] = Module["asm"]["s"]).apply(null, arguments); + }; + var _Ceil = Module["_Ceil"] = function() { + return (_Ceil = Module["_Ceil"] = Module["asm"]["t"]).apply(null, arguments); + }; + var _ClipByValue = Module["_ClipByValue"] = function() { + return (_ClipByValue = Module["_ClipByValue"] = Module["asm"]["u"]).apply(null, arguments); + }; + var _Conv2D = Module["_Conv2D"] = function() { + return (_Conv2D = Module["_Conv2D"] = Module["asm"]["v"]).apply(null, arguments); + }; + var _Conv2DBackpropInput = Module["_Conv2DBackpropInput"] = function() { + return (_Conv2DBackpropInput = Module["_Conv2DBackpropInput"] = Module["asm"]["w"]).apply(null, arguments); + }; + var _Cos = Module["_Cos"] = function() { + return (_Cos = Module["_Cos"] = Module["asm"]["x"]).apply(null, arguments); + }; + var _CropAndResize = Module["_CropAndResize"] = function() { + return (_CropAndResize = Module["_CropAndResize"] = Module["asm"]["y"]).apply(null, arguments); + }; + var _Cumsum = Module["_Cumsum"] = function() { + return (_Cumsum = Module["_Cumsum"] = Module["asm"]["z"]).apply(null, arguments); + }; + var _DepthToSpace = Module["_DepthToSpace"] = function() { + return (_DepthToSpace = Module["_DepthToSpace"] = Module["asm"]["A"]).apply(null, arguments); + }; + var _DepthwiseConv2dNative = Module["_DepthwiseConv2dNative"] = function() { + return (_DepthwiseConv2dNative = Module["_DepthwiseConv2dNative"] = Module["asm"]["B"]).apply(null, arguments); + }; + var _Equal = Module["_Equal"] = function() { + return (_Equal = Module["_Equal"] = Module["asm"]["C"]).apply(null, arguments); + }; + var _Exp = Module["_Exp"] = function() { + return (_Exp = Module["_Exp"] = Module["asm"]["D"]).apply(null, arguments); + }; + var _FlipLeftRight = Module["_FlipLeftRight"] = function() { + return (_FlipLeftRight = Module["_FlipLeftRight"] = Module["asm"]["E"]).apply(null, arguments); + }; + var _Floor = Module["_Floor"] = function() { + return (_Floor = Module["_Floor"] = Module["asm"]["F"]).apply(null, arguments); + }; + var _FloorDiv = Module["_FloorDiv"] = function() { + return (_FloorDiv = Module["_FloorDiv"] = Module["asm"]["G"]).apply(null, arguments); + }; + var _FusedBatchNorm = Module["_FusedBatchNorm"] = function() { + return (_FusedBatchNorm = Module["_FusedBatchNorm"] = Module["asm"]["H"]).apply(null, arguments); + }; + var _FusedConv2D = Module["_FusedConv2D"] = function() { + return (_FusedConv2D = Module["_FusedConv2D"] = Module["asm"]["I"]).apply(null, arguments); + }; + var _FusedDepthwiseConv2D = Module["_FusedDepthwiseConv2D"] = function() { + return (_FusedDepthwiseConv2D = Module["_FusedDepthwiseConv2D"] = Module["asm"]["J"]).apply(null, arguments); + }; + var _Gather = Module["_Gather"] = function() { + return (_Gather = Module["_Gather"] = Module["asm"]["K"]).apply(null, arguments); + }; + var _GatherNd = Module["_GatherNd"] = function() { + return (_GatherNd = Module["_GatherNd"] = Module["asm"]["L"]).apply(null, arguments); + }; + var _Greater = Module["_Greater"] = function() { + return (_Greater = Module["_Greater"] = Module["asm"]["M"]).apply(null, arguments); + }; + var _GreaterEqual = Module["_GreaterEqual"] = function() { + return (_GreaterEqual = Module["_GreaterEqual"] = Module["asm"]["N"]).apply(null, arguments); + }; + var _LeakyRelu = Module["_LeakyRelu"] = function() { + return (_LeakyRelu = Module["_LeakyRelu"] = Module["asm"]["O"]).apply(null, arguments); + }; + var _Less = Module["_Less"] = function() { + return (_Less = Module["_Less"] = Module["asm"]["P"]).apply(null, arguments); + }; + var _LessEqual = Module["_LessEqual"] = function() { + return (_LessEqual = Module["_LessEqual"] = Module["asm"]["Q"]).apply(null, arguments); + }; + var _Log = Module["_Log"] = function() { + return (_Log = Module["_Log"] = Module["asm"]["R"]).apply(null, arguments); + }; + var _LogicalAnd = Module["_LogicalAnd"] = function() { + return (_LogicalAnd = Module["_LogicalAnd"] = Module["asm"]["S"]).apply(null, arguments); + }; + var _Max = Module["_Max"] = function() { + return (_Max = Module["_Max"] = Module["asm"]["T"]).apply(null, arguments); + }; + var _MaxPool = Module["_MaxPool"] = function() { + return (_MaxPool = Module["_MaxPool"] = Module["asm"]["U"]).apply(null, arguments); + }; + var _Maximum = Module["_Maximum"] = function() { + return (_Maximum = Module["_Maximum"] = Module["asm"]["V"]).apply(null, arguments); + }; + var _Mean = Module["_Mean"] = function() { + return (_Mean = Module["_Mean"] = Module["asm"]["W"]).apply(null, arguments); + }; + var _Min = Module["_Min"] = function() { + return (_Min = Module["_Min"] = Module["asm"]["X"]).apply(null, arguments); + }; + var _Minimum = Module["_Minimum"] = function() { + return (_Minimum = Module["_Minimum"] = Module["asm"]["Y"]).apply(null, arguments); + }; + var _Multiply = Module["_Multiply"] = function() { + return (_Multiply = Module["_Multiply"] = Module["asm"]["Z"]).apply(null, arguments); + }; + var _Neg = Module["_Neg"] = function() { + return (_Neg = Module["_Neg"] = Module["asm"]["_"]).apply(null, arguments); + }; + var _NonMaxSuppressionV3 = Module["_NonMaxSuppressionV3"] = function() { + return (_NonMaxSuppressionV3 = Module["_NonMaxSuppressionV3"] = Module["asm"]["$"]).apply(null, arguments); + }; + var _NonMaxSuppressionV4 = Module["_NonMaxSuppressionV4"] = function() { + return (_NonMaxSuppressionV4 = Module["_NonMaxSuppressionV4"] = Module["asm"]["aa"]).apply(null, arguments); + }; + var _NonMaxSuppressionV5 = Module["_NonMaxSuppressionV5"] = function() { + return (_NonMaxSuppressionV5 = Module["_NonMaxSuppressionV5"] = Module["asm"]["ba"]).apply(null, arguments); + }; + var _NotEqual = Module["_NotEqual"] = function() { + return (_NotEqual = Module["_NotEqual"] = Module["asm"]["ca"]).apply(null, arguments); + }; + var _OneHot = Module["_OneHot"] = function() { + return (_OneHot = Module["_OneHot"] = Module["asm"]["da"]).apply(null, arguments); + }; + var _PadV2 = Module["_PadV2"] = function() { + return (_PadV2 = Module["_PadV2"] = Module["asm"]["ea"]).apply(null, arguments); + }; + var _Pow = Module["_Pow"] = function() { + return (_Pow = Module["_Pow"] = Module["asm"]["fa"]).apply(null, arguments); + }; + var _Prelu = Module["_Prelu"] = function() { + return (_Prelu = Module["_Prelu"] = Module["asm"]["ga"]).apply(null, arguments); + }; + var _Prod = Module["_Prod"] = function() { + return (_Prod = Module["_Prod"] = Module["asm"]["ha"]).apply(null, arguments); + }; + var _RealDiv = Module["_RealDiv"] = function() { + return (_RealDiv = Module["_RealDiv"] = Module["asm"]["ia"]).apply(null, arguments); + }; + var _Relu = Module["_Relu"] = function() { + return (_Relu = Module["_Relu"] = Module["asm"]["ja"]).apply(null, arguments); + }; + var _Relu6 = Module["_Relu6"] = function() { + return (_Relu6 = Module["_Relu6"] = Module["asm"]["ka"]).apply(null, arguments); + }; + var _ResizeBilinear = Module["_ResizeBilinear"] = function() { + return (_ResizeBilinear = Module["_ResizeBilinear"] = Module["asm"]["la"]).apply(null, arguments); + }; + var _Reverse = Module["_Reverse"] = function() { + return (_Reverse = Module["_Reverse"] = Module["asm"]["ma"]).apply(null, arguments); + }; + var _RotateWithOffset = Module["_RotateWithOffset"] = function() { + return (_RotateWithOffset = Module["_RotateWithOffset"] = Module["asm"]["na"]).apply(null, arguments); + }; + var _Round = Module["_Round"] = function() { + return (_Round = Module["_Round"] = Module["asm"]["oa"]).apply(null, arguments); + }; + var _Rsqrt = Module["_Rsqrt"] = function() { + return (_Rsqrt = Module["_Rsqrt"] = Module["asm"]["pa"]).apply(null, arguments); + }; + var _ScatterNd = Module["_ScatterNd"] = function() { + return (_ScatterNd = Module["_ScatterNd"] = Module["asm"]["qa"]).apply(null, arguments); + }; + var _SelectV2 = Module["_SelectV2"] = function() { + return (_SelectV2 = Module["_SelectV2"] = Module["asm"]["ra"]).apply(null, arguments); + }; + var _Sigmoid = Module["_Sigmoid"] = function() { + return (_Sigmoid = Module["_Sigmoid"] = Module["asm"]["sa"]).apply(null, arguments); + }; + var _Sin = Module["_Sin"] = function() { + return (_Sin = Module["_Sin"] = Module["asm"]["ta"]).apply(null, arguments); + }; + var _Softmax = Module["_Softmax"] = function() { + return (_Softmax = Module["_Softmax"] = Module["asm"]["ua"]).apply(null, arguments); + }; + var _Sqrt = Module["_Sqrt"] = function() { + return (_Sqrt = Module["_Sqrt"] = Module["asm"]["va"]).apply(null, arguments); + }; + var _Square = Module["_Square"] = function() { + return (_Square = Module["_Square"] = Module["asm"]["wa"]).apply(null, arguments); + }; + var _SquaredDifference = Module["_SquaredDifference"] = function() { + return (_SquaredDifference = Module["_SquaredDifference"] = Module["asm"]["xa"]).apply(null, arguments); + }; + var _Step = Module["_Step"] = function() { + return (_Step = Module["_Step"] = Module["asm"]["ya"]).apply(null, arguments); + }; + var _StridedSlice = Module["_StridedSlice"] = function() { + return (_StridedSlice = Module["_StridedSlice"] = Module["asm"]["za"]).apply(null, arguments); + }; + var _Sub = Module["_Sub"] = function() { + return (_Sub = Module["_Sub"] = Module["asm"]["Aa"]).apply(null, arguments); + }; + var _Sum = Module["_Sum"] = function() { + return (_Sum = Module["_Sum"] = Module["asm"]["Ba"]).apply(null, arguments); + }; + var _Tanh = Module["_Tanh"] = function() { + return (_Tanh = Module["_Tanh"] = Module["asm"]["Ca"]).apply(null, arguments); + }; + var _Tile = Module["_Tile"] = function() { + return (_Tile = Module["_Tile"] = Module["asm"]["Da"]).apply(null, arguments); + }; + var _TopK = Module["_TopK"] = function() { + return (_TopK = Module["_TopK"] = Module["asm"]["Ea"]).apply(null, arguments); + }; + var _Transpose = Module["_Transpose"] = function() { + return (_Transpose = Module["_Transpose"] = Module["asm"]["Fa"]).apply(null, arguments); + }; + var __FusedMatMul = Module["__FusedMatMul"] = function() { + return (__FusedMatMul = Module["__FusedMatMul"] = Module["asm"]["Ga"]).apply(null, arguments); + }; + var _malloc = Module["_malloc"] = function() { + return (_malloc = Module["_malloc"] = Module["asm"]["Ha"]).apply(null, arguments); + }; + var _free = Module["_free"] = function() { + return (_free = Module["_free"] = Module["asm"]["Ia"]).apply(null, arguments); + }; + var stackSave = Module["stackSave"] = function() { + return (stackSave = Module["stackSave"] = Module["asm"]["Ja"]).apply(null, arguments); + }; + var stackRestore = Module["stackRestore"] = function() { + return (stackRestore = Module["stackRestore"] = Module["asm"]["Ka"]).apply(null, arguments); + }; + var stackAlloc = Module["stackAlloc"] = function() { + return (stackAlloc = Module["stackAlloc"] = Module["asm"]["La"]).apply(null, arguments); + }; + Module["cwrap"] = cwrap; + var calledRun; + function ExitStatus(status) { + this.name = "ExitStatus"; + this.message = "Program terminated with exit(" + status + ")"; + this.status = status; + } + dependenciesFulfilled = function runCaller() { + if (!calledRun) + run2(); + if (!calledRun) + dependenciesFulfilled = runCaller; + }; + function run2(args) { + args = args || arguments_; + if (runDependencies > 0) { + return; + } + preRun(); + if (runDependencies > 0) { + return; + } + function doRun() { + if (calledRun) + return; + calledRun = true; + Module["calledRun"] = true; + if (ABORT) + return; + initRuntime(); + preMain(); + readyPromiseResolve(Module); + if (Module["onRuntimeInitialized"]) + Module["onRuntimeInitialized"](); + postRun(); + } + if (Module["setStatus"]) { + Module["setStatus"]("Running..."); + setTimeout(function() { + setTimeout(function() { + Module["setStatus"](""); + }, 1); + doRun(); + }, 1); + } else { + doRun(); + } + } + Module["run"] = run2; + if (Module["preInit"]) { + if (typeof Module["preInit"] == "function") + Module["preInit"] = [Module["preInit"]]; + while (Module["preInit"].length > 0) { + Module["preInit"].pop()(); + } + } + run2(); + return WasmBackendModule2.ready; + }; + }(); + if (typeof exports === "object" && typeof module === "object") + module.exports = WasmBackendModule; + else if (typeof define === "function" && define["amd"]) + define([], function() { + return WasmBackendModule; + }); + else if (typeof exports === "object") + exports["WasmBackendModule"] = WasmBackendModule; + }); + var require_alea2 = __commonJS2((exports, module) => { + (function(global2, module2, define2) { + function Alea(seed) { + var me = this, mash = Mash(); + me.next = function() { + var t = 2091639 * me.s0 + me.c * 23283064365386963e-26; + me.s0 = me.s1; + me.s1 = me.s2; + return me.s2 = t - (me.c = t | 0); + }; + me.c = 1; + me.s0 = mash(" "); + me.s1 = mash(" "); + me.s2 = mash(" "); + me.s0 -= mash(seed); + if (me.s0 < 0) { + me.s0 += 1; + } + me.s1 -= mash(seed); + if (me.s1 < 0) { + me.s1 += 1; + } + me.s2 -= mash(seed); + if (me.s2 < 0) { + me.s2 += 1; + } + mash = null; + } + function copy(f, t) { + t.c = f.c; + t.s0 = f.s0; + t.s1 = f.s1; + t.s2 = f.s2; + return t; + } + function impl(seed, opts) { + var xg = new Alea(seed), state = opts && opts.state, prng = xg.next; + prng.int32 = function() { + return xg.next() * 4294967296 | 0; + }; + prng.double = function() { + return prng() + (prng() * 2097152 | 0) * 11102230246251565e-32; + }; + prng.quick = prng; + if (state) { + if (typeof state == "object") + copy(state, xg); + prng.state = function() { + return copy(xg, {}); + }; + } + return prng; + } + function Mash() { + var n = 4022871197; + var mash = function(data2) { + data2 = String(data2); + for (var i = 0; i < data2.length; i++) { + n += data2.charCodeAt(i); + var h = 0.02519603282416938 * n; + n = h >>> 0; + h -= n; + h *= n; + n = h >>> 0; + h -= n; + n += h * 4294967296; + } + return (n >>> 0) * 23283064365386963e-26; + }; + return mash; + } + if (module2 && module2.exports) { + module2.exports = impl; + } else if (define2 && define2.amd) { + define2(function() { + return impl; + }); + } else { + this.alea = impl; + } + })(exports, typeof module == "object" && module, typeof define == "function" && define); + }); + var require_xor1282 = __commonJS2((exports, module) => { + (function(global2, module2, define2) { + function XorGen(seed) { + var me = this, strseed = ""; + me.x = 0; + me.y = 0; + me.z = 0; + me.w = 0; + me.next = function() { + var t = me.x ^ me.x << 11; + me.x = me.y; + me.y = me.z; + me.z = me.w; + return me.w ^= me.w >>> 19 ^ t ^ t >>> 8; + }; + if (seed === (seed | 0)) { + me.x = seed; + } else { + strseed += seed; + } + for (var k = 0; k < strseed.length + 64; k++) { + me.x ^= strseed.charCodeAt(k) | 0; + me.next(); + } + } + function copy(f, t) { + t.x = f.x; + t.y = f.y; + t.z = f.z; + t.w = f.w; + return t; + } + function impl(seed, opts) { + var xg = new XorGen(seed), state = opts && opts.state, prng = function() { + return (xg.next() >>> 0) / 4294967296; + }; + prng.double = function() { + do { + var top = xg.next() >>> 11, bot = (xg.next() >>> 0) / 4294967296, result = (top + bot) / (1 << 21); + } while (result === 0); + return result; + }; + prng.int32 = xg.next; + prng.quick = prng; + if (state) { + if (typeof state == "object") + copy(state, xg); + prng.state = function() { + return copy(xg, {}); + }; + } + return prng; + } + if (module2 && module2.exports) { + module2.exports = impl; + } else if (define2 && define2.amd) { + define2(function() { + return impl; + }); + } else { + this.xor128 = impl; + } + })(exports, typeof module == "object" && module, typeof define == "function" && define); + }); + var require_xorwow2 = __commonJS2((exports, module) => { + (function(global2, module2, define2) { + function XorGen(seed) { + var me = this, strseed = ""; + me.next = function() { + var t = me.x ^ me.x >>> 2; + me.x = me.y; + me.y = me.z; + me.z = me.w; + me.w = me.v; + return (me.d = me.d + 362437 | 0) + (me.v = me.v ^ me.v << 4 ^ (t ^ t << 1)) | 0; + }; + me.x = 0; + me.y = 0; + me.z = 0; + me.w = 0; + me.v = 0; + if (seed === (seed | 0)) { + me.x = seed; + } else { + strseed += seed; + } + for (var k = 0; k < strseed.length + 64; k++) { + me.x ^= strseed.charCodeAt(k) | 0; + if (k == strseed.length) { + me.d = me.x << 10 ^ me.x >>> 4; + } + me.next(); + } + } + function copy(f, t) { + t.x = f.x; + t.y = f.y; + t.z = f.z; + t.w = f.w; + t.v = f.v; + t.d = f.d; + return t; + } + function impl(seed, opts) { + var xg = new XorGen(seed), state = opts && opts.state, prng = function() { + return (xg.next() >>> 0) / 4294967296; + }; + prng.double = function() { + do { + var top = xg.next() >>> 11, bot = (xg.next() >>> 0) / 4294967296, result = (top + bot) / (1 << 21); + } while (result === 0); + return result; + }; + prng.int32 = xg.next; + prng.quick = prng; + if (state) { + if (typeof state == "object") + copy(state, xg); + prng.state = function() { + return copy(xg, {}); + }; + } + return prng; + } + if (module2 && module2.exports) { + module2.exports = impl; + } else if (define2 && define2.amd) { + define2(function() { + return impl; + }); + } else { + this.xorwow = impl; + } + })(exports, typeof module == "object" && module, typeof define == "function" && define); + }); + var require_xorshift72 = __commonJS2((exports, module) => { + (function(global2, module2, define2) { + function XorGen(seed) { + var me = this; + me.next = function() { + var X = me.x, i = me.i, t, v, w; + t = X[i]; + t ^= t >>> 7; + v = t ^ t << 24; + t = X[i + 1 & 7]; + v ^= t ^ t >>> 10; + t = X[i + 3 & 7]; + v ^= t ^ t >>> 3; + t = X[i + 4 & 7]; + v ^= t ^ t << 7; + t = X[i + 7 & 7]; + t = t ^ t << 13; + v ^= t ^ t << 9; + X[i] = v; + me.i = i + 1 & 7; + return v; + }; + function init2(me2, seed2) { + var j, w, X = []; + if (seed2 === (seed2 | 0)) { + w = X[0] = seed2; + } else { + seed2 = "" + seed2; + for (j = 0; j < seed2.length; ++j) { + X[j & 7] = X[j & 7] << 15 ^ seed2.charCodeAt(j) + X[j + 1 & 7] << 13; + } + } + while (X.length < 8) + X.push(0); + for (j = 0; j < 8 && X[j] === 0; ++j) + ; + if (j == 8) + w = X[7] = -1; + else + w = X[j]; + me2.x = X; + me2.i = 0; + for (j = 256; j > 0; --j) { + me2.next(); + } + } + init2(me, seed); + } + function copy(f, t) { + t.x = f.x.slice(); + t.i = f.i; + return t; + } + function impl(seed, opts) { + if (seed == null) + seed = +new Date(); + var xg = new XorGen(seed), state = opts && opts.state, prng = function() { + return (xg.next() >>> 0) / 4294967296; + }; + prng.double = function() { + do { + var top = xg.next() >>> 11, bot = (xg.next() >>> 0) / 4294967296, result = (top + bot) / (1 << 21); + } while (result === 0); + return result; + }; + prng.int32 = xg.next; + prng.quick = prng; + if (state) { + if (state.x) + copy(state, xg); + prng.state = function() { + return copy(xg, {}); + }; + } + return prng; + } + if (module2 && module2.exports) { + module2.exports = impl; + } else if (define2 && define2.amd) { + define2(function() { + return impl; + }); + } else { + this.xorshift7 = impl; + } + })(exports, typeof module == "object" && module, typeof define == "function" && define); + }); + var require_xor40962 = __commonJS2((exports, module) => { + (function(global2, module2, define2) { + function XorGen(seed) { + var me = this; + me.next = function() { + var w = me.w, X = me.X, i = me.i, t, v; + me.w = w = w + 1640531527 | 0; + v = X[i + 34 & 127]; + t = X[i = i + 1 & 127]; + v ^= v << 13; + t ^= t << 17; + v ^= v >>> 15; + t ^= t >>> 12; + v = X[i] = v ^ t; + me.i = i; + return v + (w ^ w >>> 16) | 0; + }; + function init2(me2, seed2) { + var t, v, i, j, w, X = [], limit = 128; + if (seed2 === (seed2 | 0)) { + v = seed2; + seed2 = null; + } else { + seed2 = seed2 + "\0"; + v = 0; + limit = Math.max(limit, seed2.length); + } + for (i = 0, j = -32; j < limit; ++j) { + if (seed2) + v ^= seed2.charCodeAt((j + 32) % seed2.length); + if (j === 0) + w = v; + v ^= v << 10; + v ^= v >>> 15; + v ^= v << 4; + v ^= v >>> 13; + if (j >= 0) { + w = w + 1640531527 | 0; + t = X[j & 127] ^= v + w; + i = t == 0 ? i + 1 : 0; + } + } + if (i >= 128) { + X[(seed2 && seed2.length || 0) & 127] = -1; + } + i = 127; + for (j = 4 * 128; j > 0; --j) { + v = X[i + 34 & 127]; + t = X[i = i + 1 & 127]; + v ^= v << 13; + t ^= t << 17; + v ^= v >>> 15; + t ^= t >>> 12; + X[i] = v ^ t; + } + me2.w = w; + me2.X = X; + me2.i = i; + } + init2(me, seed); + } + function copy(f, t) { + t.i = f.i; + t.w = f.w; + t.X = f.X.slice(); + return t; + } + ; + function impl(seed, opts) { + if (seed == null) + seed = +new Date(); + var xg = new XorGen(seed), state = opts && opts.state, prng = function() { + return (xg.next() >>> 0) / 4294967296; + }; + prng.double = function() { + do { + var top = xg.next() >>> 11, bot = (xg.next() >>> 0) / 4294967296, result = (top + bot) / (1 << 21); + } while (result === 0); + return result; + }; + prng.int32 = xg.next; + prng.quick = prng; + if (state) { + if (state.X) + copy(state, xg); + prng.state = function() { + return copy(xg, {}); + }; + } + return prng; + } + if (module2 && module2.exports) { + module2.exports = impl; + } else if (define2 && define2.amd) { + define2(function() { + return impl; + }); + } else { + this.xor4096 = impl; + } + })(exports, typeof module == "object" && module, typeof define == "function" && define); + }); + var require_tychei2 = __commonJS2((exports, module) => { + (function(global2, module2, define2) { + function XorGen(seed) { + var me = this, strseed = ""; + me.next = function() { + var b = me.b, c = me.c, d = me.d, a = me.a; + b = b << 25 ^ b >>> 7 ^ c; + c = c - d | 0; + d = d << 24 ^ d >>> 8 ^ a; + a = a - b | 0; + me.b = b = b << 20 ^ b >>> 12 ^ c; + me.c = c = c - d | 0; + me.d = d << 16 ^ c >>> 16 ^ a; + return me.a = a - b | 0; + }; + me.a = 0; + me.b = 0; + me.c = 2654435769 | 0; + me.d = 1367130551; + if (seed === Math.floor(seed)) { + me.a = seed / 4294967296 | 0; + me.b = seed | 0; + } else { + strseed += seed; + } + for (var k = 0; k < strseed.length + 20; k++) { + me.b ^= strseed.charCodeAt(k) | 0; + me.next(); + } + } + function copy(f, t) { + t.a = f.a; + t.b = f.b; + t.c = f.c; + t.d = f.d; + return t; + } + ; + function impl(seed, opts) { + var xg = new XorGen(seed), state = opts && opts.state, prng = function() { + return (xg.next() >>> 0) / 4294967296; + }; + prng.double = function() { + do { + var top = xg.next() >>> 11, bot = (xg.next() >>> 0) / 4294967296, result = (top + bot) / (1 << 21); + } while (result === 0); + return result; + }; + prng.int32 = xg.next; + prng.quick = prng; + if (state) { + if (typeof state == "object") + copy(state, xg); + prng.state = function() { + return copy(xg, {}); + }; + } + return prng; + } + if (module2 && module2.exports) { + module2.exports = impl; + } else if (define2 && define2.amd) { + define2(function() { + return impl; + }); + } else { + this.tychei = impl; + } + })(exports, typeof module == "object" && module, typeof define == "function" && define); + }); + var require_seedrandom3 = __commonJS2((exports, module) => { + (function(global2, pool3, math) { + var width = 256, chunks = 6, digits = 52, rngname = "random", startdenom = math.pow(width, chunks), significance = math.pow(2, digits), overflow = significance * 2, mask = width - 1, nodecrypto; + function seedrandom5(seed, options, callback) { + var key = []; + options = options == true ? {entropy: true} : options || {}; + var shortseed = mixkey(flatten4(options.entropy ? [seed, tostring(pool3)] : seed == null ? autoseed() : seed, 3), key); + var arc4 = new ARC4(key); + var prng = function() { + var n = arc4.g(chunks), d = startdenom, x = 0; + while (n < significance) { + n = (n + x) * width; + d *= width; + x = arc4.g(1); + } + while (n >= overflow) { + n /= 2; + d /= 2; + x >>>= 1; + } + return (n + x) / d; + }; + prng.int32 = function() { + return arc4.g(4) | 0; + }; + prng.quick = function() { + return arc4.g(4) / 4294967296; + }; + prng.double = prng; + mixkey(tostring(arc4.S), pool3); + return (options.pass || callback || function(prng2, seed2, is_math_call, state) { + if (state) { + if (state.S) { + copy(state, arc4); + } + prng2.state = function() { + return copy(arc4, {}); + }; + } + if (is_math_call) { + math[rngname] = prng2; + return seed2; + } else + return prng2; + })(prng, shortseed, "global" in options ? options.global : this == math, options.state); + } + function ARC4(key) { + var t, keylen = key.length, me = this, i = 0, j = me.i = me.j = 0, s = me.S = []; + if (!keylen) { + key = [keylen++]; + } + while (i < width) { + s[i] = i++; + } + for (i = 0; i < width; i++) { + s[i] = s[j = mask & j + key[i % keylen] + (t = s[i])]; + s[j] = t; + } + (me.g = function(count2) { + var t2, r = 0, i2 = me.i, j2 = me.j, s2 = me.S; + while (count2--) { + t2 = s2[i2 = mask & i2 + 1]; + r = r * width + s2[mask & (s2[i2] = s2[j2 = mask & j2 + t2]) + (s2[j2] = t2)]; + } + me.i = i2; + me.j = j2; + return r; + })(width); + } + function copy(f, t) { + t.i = f.i; + t.j = f.j; + t.S = f.S.slice(); + return t; + } + ; + function flatten4(obj, depth) { + var result = [], typ = typeof obj, prop; + if (depth && typ == "object") { + for (prop in obj) { + try { + result.push(flatten4(obj[prop], depth - 1)); + } catch (e) { + } + } + } + return result.length ? result : typ == "string" ? obj : obj + "\0"; + } + function mixkey(seed, key) { + var stringseed = seed + "", smear, j = 0; + while (j < stringseed.length) { + key[mask & j] = mask & (smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++); + } + return tostring(key); + } + function autoseed() { + try { + var out; + if (nodecrypto && (out = nodecrypto.randomBytes)) { + out = out(width); + } else { + out = new Uint8Array(width); + (global2.crypto || global2.msCrypto).getRandomValues(out); + } + return tostring(out); + } catch (e) { + var browser = global2.navigator, plugins = browser && browser.plugins; + return [+new Date(), global2, plugins, global2.screen, tostring(pool3)]; + } + } + function tostring(a) { + return String.fromCharCode.apply(0, a); + } + mixkey(math.random(), pool3); + if (typeof module == "object" && module.exports) { + module.exports = seedrandom5; + try { + nodecrypto = require_crypto(); + } catch (ex) { + } + } else if (typeof define == "function" && define.amd) { + define(function() { + return seedrandom5; + }); + } else { + math["seed" + rngname] = seedrandom5; + } + })(typeof self !== "undefined" ? self : exports, [], Math); + }); + var require_seedrandom4 = __commonJS2((exports, module) => { + var alea5 = require_alea2(); + var xor128 = require_xor1282(); + var xorwow = require_xorwow2(); + var xorshift7 = require_xorshift72(); + var xor4096 = require_xor40962(); + var tychei = require_tychei2(); + var sr = require_seedrandom3(); + sr.alea = alea5; + sr.xor128 = xor128; + sr.xorwow = xorwow; + sr.xorshift7 = xorshift7; + sr.xor4096 = xor4096; + sr.tychei = tychei; + module.exports = sr; + }); + var require_string_decoder = __commonJS2(() => { + }); + var version = "3.3.0"; + var version2 = "3.3.0"; + var version3 = "3.3.0"; + var version4 = "3.3.0"; + var version5 = "3.3.0"; + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var EPSILON_FLOAT32 = 1e-7; + var EPSILON_FLOAT16 = 1e-4; + var DataStorage = class { + constructor(backend22, dataMover) { + this.backend = backend22; + this.dataMover = dataMover; + this.data = new WeakMap(); + this.dataIdsCount = 0; + } + get(dataId) { + if (!this.data.has(dataId)) { + this.dataMover.moveData(this.backend, dataId); + } + return this.data.get(dataId); + } + set(dataId, value) { + this.dataIdsCount++; + this.data.set(dataId, value); + } + has(dataId) { + return this.data.has(dataId); + } + delete(dataId) { + this.dataIdsCount--; + return this.data.delete(dataId); + } + numDataIds() { + return this.dataIdsCount; + } + }; + var KernelBackend = class { + refCount(dataId) { + return notYetImplemented("refCount"); + } + incRef(dataId) { + return notYetImplemented("incRef"); + } + timerAvailable() { + return true; + } + time(f) { + return notYetImplemented("time"); + } + read(dataId) { + return notYetImplemented("read"); + } + readSync(dataId) { + return notYetImplemented("readSync"); + } + numDataIds() { + return notYetImplemented("numDataIds"); + } + disposeData(dataId, force) { + return notYetImplemented("disposeData"); + } + write(values, shape, dtype) { + return notYetImplemented("write"); + } + move(dataId, values, shape, dtype, refCount) { + return notYetImplemented("move"); + } + memory() { + return notYetImplemented("memory"); + } + floatPrecision() { + return notYetImplemented("floatPrecision"); + } + epsilon() { + return this.floatPrecision() === 32 ? EPSILON_FLOAT32 : EPSILON_FLOAT16; + } + dispose() { + return notYetImplemented("dispose"); + } + }; + function notYetImplemented(kernelName) { + throw new Error(`'${kernelName}' not yet implemented or not found in the registry. This kernel may not be supported by the tfjs backend you have chosen`); + } + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + function shuffle(array2) { + let counter = array2.length; + let temp = 0; + let index = 0; + while (counter > 0) { + index = Math.random() * counter | 0; + counter--; + temp = array2[counter]; + array2[counter] = array2[index]; + array2[index] = temp; + } + } + function shuffleCombo(array2, array22) { + if (array2.length !== array22.length) { + throw new Error(`Array sizes must match to be shuffled together First array length was ${array2.length}Second array length was ${array22.length}`); + } + let counter = array2.length; + let temp, temp2; + let index = 0; + while (counter > 0) { + index = Math.random() * counter | 0; + counter--; + temp = array2[counter]; + temp2 = array22[counter]; + array2[counter] = array2[index]; + array22[counter] = array22[index]; + array2[index] = temp; + array22[index] = temp2; + } + } + function clamp(min6, x, max6) { + return Math.max(min6, Math.min(x, max6)); + } + function nearestLargerEven(val) { + return val % 2 === 0 ? val : val + 1; + } + function sum(arr) { + let sum6 = 0; + for (let i = 0; i < arr.length; i++) { + sum6 += arr[i]; + } + return sum6; + } + function randUniform(a, b) { + const r = Math.random(); + return b * r + (1 - r) * a; + } + function distSquared(a, b) { + let result = 0; + for (let i = 0; i < a.length; i++) { + const diff = Number(a[i]) - Number(b[i]); + result += diff * diff; + } + return result; + } + function assert(expr, msg) { + if (!expr) { + throw new Error(typeof msg === "string" ? msg : msg()); + } + } + function assertShapesMatch(shapeA, shapeB, errorMessagePrefix = "") { + assert(arraysEqual(shapeA, shapeB), () => errorMessagePrefix + ` Shapes ${shapeA} and ${shapeB} must match`); + } + function assertNonNull(a) { + assert(a != null, () => `The input to the tensor constructor must be a non-null value.`); + } + function flatten(arr, result = [], skipTypedArray = false) { + if (result == null) { + result = []; + } + if (Array.isArray(arr) || isTypedArray(arr) && !skipTypedArray) { + for (let i = 0; i < arr.length; ++i) { + flatten(arr[i], result, skipTypedArray); + } + } else { + result.push(arr); + } + return result; + } + function sizeFromShape(shape) { + if (shape.length === 0) { + return 1; + } + let size = shape[0]; + for (let i = 1; i < shape.length; i++) { + size *= shape[i]; + } + return size; + } + function isScalarShape(shape) { + return shape.length === 0; + } + function arraysEqual(n1, n2) { + if (n1 === n2) { + return true; + } + if (n1 == null || n2 == null) { + return false; + } + if (n1.length !== n2.length) { + return false; + } + for (let i = 0; i < n1.length; i++) { + if (n1[i] !== n2[i]) { + return false; + } + } + return true; + } + function isInt(a) { + return a % 1 === 0; + } + function tanh(x) { + if (Math.tanh != null) { + return Math.tanh(x); + } + if (x === Infinity) { + return 1; + } else if (x === -Infinity) { + return -1; + } else { + const e2x = Math.exp(2 * x); + return (e2x - 1) / (e2x + 1); + } + } + function sizeToSquarishShape(size) { + const width = Math.ceil(Math.sqrt(size)); + return [width, Math.ceil(size / width)]; + } + function createShuffledIndices(n) { + const shuffledIndices = new Uint32Array(n); + for (let i = 0; i < n; ++i) { + shuffledIndices[i] = i; + } + shuffle(shuffledIndices); + return shuffledIndices; + } + function rightPad(a, size) { + if (size <= a.length) { + return a; + } + return a + " ".repeat(size - a.length); + } + function repeatedTry(checkFn, delayFn = (counter) => 0, maxCounter) { + return new Promise((resolve, reject) => { + let tryCount = 0; + const tryFn = () => { + if (checkFn()) { + resolve(); + return; + } + tryCount++; + const nextBackoff = delayFn(tryCount); + if (maxCounter != null && tryCount >= maxCounter) { + reject(); + return; + } + setTimeout(tryFn, nextBackoff); + }; + tryFn(); + }); + } + function inferFromImplicitShape(shape, size) { + let shapeProd = 1; + let implicitIdx = -1; + for (let i = 0; i < shape.length; ++i) { + if (shape[i] >= 0) { + shapeProd *= shape[i]; + } else if (shape[i] === -1) { + if (implicitIdx !== -1) { + throw Error(`Shapes can only have 1 implicit size. Found -1 at dim ${implicitIdx} and dim ${i}`); + } + implicitIdx = i; + } else if (shape[i] < 0) { + throw Error(`Shapes can not be < 0. Found ${shape[i]} at dim ${i}`); + } + } + if (implicitIdx === -1) { + if (size > 0 && size !== shapeProd) { + throw Error(`Size(${size}) must match the product of shape ${shape}`); + } + return shape; + } + if (shapeProd === 0) { + throw Error(`Cannot infer the missing size in [${shape}] when there are 0 elements`); + } + if (size % shapeProd !== 0) { + throw Error(`The implicit shape can't be a fractional number. Got ${size} / ${shapeProd}`); + } + const newShape = shape.slice(); + newShape[implicitIdx] = size / shapeProd; + return newShape; + } + function parseAxisParam(axis, shape) { + const rank = shape.length; + axis = axis == null ? shape.map((s, i) => i) : [].concat(axis); + assert(axis.every((ax) => ax >= -rank && ax < rank), () => `All values in axis param must be in range [-${rank}, ${rank}) but got axis ${axis}`); + assert(axis.every((ax) => isInt(ax)), () => `All values in axis param must be integers but got axis ${axis}`); + return axis.map((a) => a < 0 ? rank + a : a); + } + function squeezeShape(shape, axis) { + const newShape = []; + const keptDims = []; + const isEmptyArray = axis != null && Array.isArray(axis) && axis.length === 0; + const axes = axis == null || isEmptyArray ? null : parseAxisParam(axis, shape).sort(); + let j = 0; + for (let i = 0; i < shape.length; ++i) { + if (axes != null) { + if (axes[j] === i && shape[i] !== 1) { + throw new Error(`Can't squeeze axis ${i} since its dim '${shape[i]}' is not 1`); + } + if ((axes[j] == null || axes[j] > i) && shape[i] === 1) { + newShape.push(shape[i]); + keptDims.push(i); + } + if (axes[j] <= i) { + j++; + } + } + if (shape[i] !== 1) { + newShape.push(shape[i]); + keptDims.push(i); + } + } + return {newShape, keptDims}; + } + function getTypedArrayFromDType(dtype, size) { + let values = null; + if (dtype == null || dtype === "float32") { + values = new Float32Array(size); + } else if (dtype === "int32") { + values = new Int32Array(size); + } else if (dtype === "bool") { + values = new Uint8Array(size); + } else { + throw new Error(`Unknown data type ${dtype}`); + } + return values; + } + function getArrayFromDType(dtype, size) { + let values = null; + if (dtype == null || dtype === "float32") { + values = new Float32Array(size); + } else if (dtype === "int32") { + values = new Int32Array(size); + } else if (dtype === "bool") { + values = new Uint8Array(size); + } else if (dtype === "string") { + values = new Array(size); + } else { + throw new Error(`Unknown data type ${dtype}`); + } + return values; + } + function checkConversionForErrors(vals, dtype) { + for (let i = 0; i < vals.length; i++) { + const num = vals[i]; + if (isNaN(num) || !isFinite(num)) { + throw Error(`A tensor of type ${dtype} being uploaded contains ${num}.`); + } + } + } + function isValidDtype(dtype) { + return dtype === "bool" || dtype === "complex64" || dtype === "float32" || dtype === "int32" || dtype === "string"; + } + function hasEncodingLoss(oldType, newType) { + if (newType === "complex64") { + return false; + } + if (newType === "float32" && oldType !== "complex64") { + return false; + } + if (newType === "int32" && oldType !== "float32" && oldType !== "complex64") { + return false; + } + if (newType === "bool" && oldType === "bool") { + return false; + } + return true; + } + function isTypedArray(a) { + return a instanceof Float32Array || a instanceof Int32Array || a instanceof Uint8Array; + } + function bytesPerElement(dtype) { + if (dtype === "float32" || dtype === "int32") { + return 4; + } else if (dtype === "complex64") { + return 8; + } else if (dtype === "bool") { + return 1; + } else { + throw new Error(`Unknown dtype ${dtype}`); + } + } + function bytesFromStringArray(arr) { + if (arr == null) { + return 0; + } + let bytes = 0; + arr.forEach((x) => bytes += x.length); + return bytes; + } + function isString(value) { + return typeof value === "string" || value instanceof String; + } + function isBoolean(value) { + return typeof value === "boolean"; + } + function isNumber(value) { + return typeof value === "number"; + } + function inferDtype(values) { + if (Array.isArray(values)) { + return inferDtype(values[0]); + } + if (values instanceof Float32Array) { + return "float32"; + } else if (values instanceof Int32Array || values instanceof Uint8Array) { + return "int32"; + } else if (isNumber(values)) { + return "float32"; + } else if (isString(values)) { + return "string"; + } else if (isBoolean(values)) { + return "bool"; + } + return "float32"; + } + function isFunction(f) { + return !!(f && f.constructor && f.call && f.apply); + } + function nearestDivisor(size, start) { + for (let i = start; i < size; ++i) { + if (size % i === 0) { + return i; + } + } + return size; + } + function computeStrides(shape) { + const rank = shape.length; + if (rank < 2) { + return []; + } + const strides = new Array(rank - 1); + strides[rank - 2] = shape[rank - 1]; + for (let i = rank - 3; i >= 0; --i) { + strides[i] = strides[i + 1] * shape[i + 1]; + } + return strides; + } + function createNestedArray(offset, shape, a) { + const ret = new Array(); + if (shape.length === 1) { + const d = shape[0]; + for (let i = 0; i < d; i++) { + ret[i] = a[offset + i]; + } + } else { + const d = shape[0]; + const rest = shape.slice(1); + const len = rest.reduce((acc, c) => acc * c); + for (let i = 0; i < d; i++) { + ret[i] = createNestedArray(offset + i * len, rest, a); + } + } + return ret; + } + function toNestedArray(shape, a) { + if (shape.length === 0) { + return a[0]; + } + const size = shape.reduce((acc, c) => acc * c); + if (size === 0) { + return []; + } + if (size !== a.length) { + throw new Error(`[${shape}] does not match the input size ${a.length}.`); + } + return createNestedArray(0, shape, a); + } + function makeOnesTypedArray(size, dtype) { + const array2 = makeZerosTypedArray(size, dtype); + for (let i = 0; i < array2.length; i++) { + array2[i] = 1; + } + return array2; + } + function makeZerosTypedArray(size, dtype) { + if (dtype == null || dtype === "float32" || dtype === "complex64") { + return new Float32Array(size); + } else if (dtype === "int32") { + return new Int32Array(size); + } else if (dtype === "bool") { + return new Uint8Array(size); + } else { + throw new Error(`Unknown data type ${dtype}`); + } + } + function makeZerosNestedTypedArray(shape, dtype) { + const size = shape.reduce((prev, curr) => prev * curr, 1); + if (dtype == null || dtype === "float32") { + return toNestedArray(shape, new Float32Array(size)); + } else if (dtype === "int32") { + return toNestedArray(shape, new Int32Array(size)); + } else if (dtype === "bool") { + return toNestedArray(shape, new Uint8Array(size)); + } else { + throw new Error(`Unknown data type ${dtype}`); + } + } + function assertNonNegativeIntegerDimensions(shape) { + shape.forEach((dimSize) => { + assert(Number.isInteger(dimSize) && dimSize >= 0, () => `Tensor must have a shape comprised of positive integers but got shape [${shape}].`); + }); + } + function locToIndex(locs, rank, strides) { + if (rank === 0) { + return 0; + } else if (rank === 1) { + return locs[0]; + } + let index = locs[locs.length - 1]; + for (let i = 0; i < locs.length - 1; ++i) { + index += strides[i] * locs[i]; + } + return index; + } + function indexToLoc(index, rank, strides) { + if (rank === 0) { + return []; + } else if (rank === 1) { + return [index]; + } + const locs = new Array(rank); + for (let i = 0; i < locs.length - 1; ++i) { + locs[i] = Math.floor(index / strides[i]); + index -= locs[i] * strides[i]; + } + locs[locs.length - 1] = index; + return locs; + } + function isPromise(object2) { + return object2 && object2.then && typeof object2.then === "function"; + } + /** + * @license + * Copyright 2017 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var TENSORFLOWJS_FLAGS_PREFIX = "tfjsflags"; + var Environment = class { + constructor(global2) { + this.global = global2; + this.flags = {}; + this.flagRegistry = {}; + this.urlFlags = {}; + this.populateURLFlags(); + } + setPlatform(platformName, platform) { + if (this.platform != null) { + console.warn(`Platform ${this.platformName} has already been set. Overwriting the platform with ${platform}.`); + } + this.platformName = platformName; + this.platform = platform; + } + registerFlag(flagName, evaluationFn, setHook) { + this.flagRegistry[flagName] = {evaluationFn, setHook}; + if (this.urlFlags[flagName] != null) { + const flagValue = this.urlFlags[flagName]; + console.warn(`Setting feature override from URL ${flagName}: ${flagValue}.`); + this.set(flagName, flagValue); + } + } + async getAsync(flagName) { + if (flagName in this.flags) { + return this.flags[flagName]; + } + this.flags[flagName] = await this.evaluateFlag(flagName); + return this.flags[flagName]; + } + get(flagName) { + if (flagName in this.flags) { + return this.flags[flagName]; + } + const flagValue = this.evaluateFlag(flagName); + if (isPromise(flagValue)) { + throw new Error(`Flag ${flagName} cannot be synchronously evaluated. Please use getAsync() instead.`); + } + this.flags[flagName] = flagValue; + return this.flags[flagName]; + } + getNumber(flagName) { + return this.get(flagName); + } + getBool(flagName) { + return this.get(flagName); + } + getFlags() { + return this.flags; + } + get features() { + return this.flags; + } + set(flagName, value) { + if (this.flagRegistry[flagName] == null) { + throw new Error(`Cannot set flag ${flagName} as it has not been registered.`); + } + this.flags[flagName] = value; + if (this.flagRegistry[flagName].setHook != null) { + this.flagRegistry[flagName].setHook(value); + } + } + evaluateFlag(flagName) { + if (this.flagRegistry[flagName] == null) { + throw new Error(`Cannot evaluate flag '${flagName}': no evaluation function found.`); + } + return this.flagRegistry[flagName].evaluationFn(); + } + setFlags(flags) { + this.flags = Object.assign({}, flags); + } + reset() { + this.flags = {}; + this.urlFlags = {}; + this.populateURLFlags(); + } + populateURLFlags() { + if (typeof this.global === "undefined" || typeof this.global.location === "undefined" || typeof this.global.location.search === "undefined") { + return; + } + const urlParams = getQueryParams(this.global.location.search); + if (TENSORFLOWJS_FLAGS_PREFIX in urlParams) { + const keyValues = urlParams[TENSORFLOWJS_FLAGS_PREFIX].split(","); + keyValues.forEach((keyValue) => { + const [key, value] = keyValue.split(":"); + this.urlFlags[key] = parseValue(key, value); + }); + } + } + }; + function getQueryParams(queryString) { + const params = {}; + queryString.replace(/[?&]([^=?&]+)(?:=([^&]*))?/g, (s, ...t) => { + decodeParam(params, t[0], t[1]); + return t.join("="); + }); + return params; + } + function decodeParam(params, name, value) { + params[decodeURIComponent(name)] = decodeURIComponent(value || ""); + } + function parseValue(flagName, value) { + value = value.toLowerCase(); + if (value === "true" || value === "false") { + return value === "true"; + } else if (`${+value}` === value) { + return +value; + } + throw new Error(`Could not parse value flag value ${value} for flag ${flagName}.`); + } + function env() { + return ENV; + } + var ENV = null; + function setEnvironmentGlobal(environment) { + ENV = environment; + } + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var globalNameSpace; + function getGlobalNamespace() { + if (globalNameSpace == null) { + let ns; + if (typeof window !== "undefined") { + ns = window; + } else if (typeof global !== "undefined") { + ns = global; + } else if (typeof process !== "undefined") { + ns = process; + } else if (typeof self !== "undefined") { + ns = self; + } else { + throw new Error("Could not find a global object"); + } + globalNameSpace = ns; + } + return globalNameSpace; + } + function getGlobalMap() { + const ns = getGlobalNamespace(); + if (ns._tfGlobals == null) { + ns._tfGlobals = new Map(); + } + return ns._tfGlobals; + } + function getGlobal(key, init2) { + const globalMap = getGlobalMap(); + if (globalMap.has(key)) { + return globalMap.get(key); + } else { + const singleton = init2(); + globalMap.set(key, singleton); + return globalMap.get(key); + } + } + var Abs = "Abs"; + var Acos = "Acos"; + var Acosh = "Acosh"; + var Add = "Add"; + var AddN = "AddN"; + var All = "All"; + var Any = "Any"; + var ArgMax = "ArgMax"; + var ArgMin = "ArgMin"; + var Asin = "Asin"; + var Asinh = "Asinh"; + var Atan = "Atan"; + var Atanh = "Atanh"; + var Atan2 = "Atan2"; + var AvgPool = "AvgPool"; + var AvgPoolGrad = "AvgPoolGrad"; + var AvgPool3D = "AvgPool3D"; + var AvgPool3DGrad = "AvgPool3DGrad"; + var BatchMatMul = "BatchMatMul"; + var BatchToSpaceND = "BatchToSpaceND"; + var Bincount = "Bincount"; + var BroadcastTo = "BroadcastTo"; + var Cast = "Cast"; + var Ceil = "Ceil"; + var ClipByValue = "ClipByValue"; + var Complex = "Complex"; + var ComplexAbs = "ComplexAbs"; + var Concat = "Concat"; + var Conv2D = "Conv2D"; + var Conv2DBackpropFilter = "Conv2DBackpropFilter"; + var Conv2DBackpropInput = "Conv2DBackpropInput"; + var Conv3D = "Conv3D"; + var Conv3DBackpropFilterV2 = "Conv3DBackpropFilterV2"; + var Conv3DBackpropInputV2 = "Conv3DBackpropInputV2"; + var Cos = "Cos"; + var Cosh = "Cosh"; + var Cumsum = "Cumsum"; + var CropAndResize = "CropAndResize"; + var DenseBincount = "DenseBincount"; + var DepthToSpace = "DepthToSpace"; + var DepthwiseConv2dNative = "DepthwiseConv2dNative"; + var DepthwiseConv2dNativeBackpropFilter = "DepthwiseConv2dNativeBackpropFilter"; + var DepthwiseConv2dNativeBackpropInput = "DepthwiseConv2dNativeBackpropInput"; + var Diag = "Diag"; + var Dilation2D = "Dilation2D"; + var Dilation2DBackpropInput = "Dilation2DBackpropInput"; + var Dilation2DBackpropFilter = "Dilation2DBackpropFilter"; + var RealDiv = "RealDiv"; + var Elu = "Elu"; + var EluGrad = "EluGrad"; + var Erf = "Erf"; + var Equal = "Equal"; + var Exp = "Exp"; + var ExpandDims = "ExpandDims"; + var Expm1 = "Expm1"; + var FFT = "FFT"; + var Fill = "Fill"; + var FlipLeftRight = "FlipLeftRight"; + var Floor = "Floor"; + var FloorDiv = "FloorDiv"; + var FusedBatchNorm = "FusedBatchNorm"; + var GatherV2 = "GatherV2"; + var GatherNd = "GatherNd"; + var Greater = "Greater"; + var GreaterEqual = "GreaterEqual"; + var Identity = "Identity"; + var IFFT = "IFFT"; + var Imag = "Imag"; + var IsFinite = "IsFinite"; + var IsInf = "IsInf"; + var IsNan = "IsNan"; + var LeakyRelu = "LeakyRelu"; + var Less = "Less"; + var LessEqual = "LessEqual"; + var LinSpace = "LinSpace"; + var Log = "Log"; + var Log1p = "Log1p"; + var LogicalAnd = "LogicalAnd"; + var LogicalNot = "LogicalNot"; + var LogicalOr = "LogicalOr"; + var LogSoftmax = "LogSoftmax"; + var LRN = "LRN"; + var LRNGrad = "LRNGrad"; + var Max = "Max"; + var Maximum = "Maximum"; + var MaxPool = "MaxPool"; + var MaxPoolGrad = "MaxPoolGrad"; + var MaxPool3D = "MaxPool3D"; + var MaxPool3DGrad = "MaxPool3DGrad"; + var MaxPoolWithArgmax = "MaxPoolWithArgmax"; + var Mean = "Mean"; + var Min = "Min"; + var Minimum = "Minimum"; + var MirrorPad = "MirrorPad"; + var Mod = "Mod"; + var Multinomial = "Multinomial"; + var Multiply = "Multiply"; + var Neg = "Neg"; + var NotEqual = "NotEqual"; + var NonMaxSuppressionV3 = "NonMaxSuppressionV3"; + var NonMaxSuppressionV4 = "NonMaxSuppressionV4"; + var NonMaxSuppressionV5 = "NonMaxSuppressionV5"; + var OnesLike = "OnesLike"; + var OneHot = "OneHot"; + var Pack = "Pack"; + var PadV2 = "PadV2"; + var Pool = "Pool"; + var Pow = "Pow"; + var Prelu = "Prelu"; + var Prod = "Prod"; + var Range = "Range"; + var Real = "Real"; + var Reciprocal = "Reciprocal"; + var Relu = "Relu"; + var Reshape = "Reshape"; + var ResizeNearestNeighbor = "ResizeNearestNeighbor"; + var ResizeNearestNeighborGrad = "ResizeNearestNeighborGrad"; + var ResizeBilinear = "ResizeBilinear"; + var ResizeBilinearGrad = "ResizeBilinearGrad"; + var Relu6 = "Relu6"; + var Reverse = "Reverse"; + var Round = "Round"; + var Rsqrt = "Rsqrt"; + var ScatterNd = "ScatterNd"; + var Select = "Select"; + var Selu = "Selu"; + var Slice = "Slice"; + var Sin = "Sin"; + var Sinh = "Sinh"; + var Sign = "Sign"; + var Sigmoid = "Sigmoid"; + var Softplus = "Softplus"; + var Sqrt = "Sqrt"; + var Sum = "Sum"; + var SpaceToBatchND = "SpaceToBatchND"; + var SplitV = "SplitV"; + var Softmax = "Softmax"; + var SquaredDifference = "SquaredDifference"; + var Square = "Square"; + var Sub = "Sub"; + var SparseToDense = "SparseToDense"; + var StridedSlice = "StridedSlice"; + var Tan = "Tan"; + var Tanh = "Tanh"; + var Tile = "Tile"; + var TopK = "TopK"; + var Transform = "Transform"; + var Transpose = "Transpose"; + var Unique = "Unique"; + var Unpack = "Unpack"; + var UnsortedSegmentSum = "UnsortedSegmentSum"; + var ZerosLike = "ZerosLike"; + var Step = "Step"; + var FromPixels = "FromPixels"; + var RotateWithOffset = "RotateWithOffset"; + var _FusedMatMul = "_FusedMatMul"; + var FusedConv2D = "FusedConv2D"; + var FusedDepthwiseConv2D = "FusedDepthwiseConv2D"; + /** + * @license + * Copyright 2019 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var kernelRegistry = getGlobal("kernelRegistry", () => new Map()); + var gradRegistry = getGlobal("gradRegistry", () => new Map()); + function getKernel(kernelName, backendName) { + const key = makeKey(kernelName, backendName); + return kernelRegistry.get(key); + } + function getGradient(kernelName) { + return gradRegistry.get(kernelName); + } + function getKernelsForBackend(backendName) { + const it = kernelRegistry.entries(); + const result = []; + while (true) { + const {done, value} = it.next(); + if (done) { + break; + } + const [key, config3] = value; + const [backend22] = key.split("_"); + if (backend22 === backendName) { + result.push(config3); + } + } + return result; + } + function registerKernel(config3) { + const {kernelName, backendName} = config3; + const key = makeKey(kernelName, backendName); + if (kernelRegistry.has(key)) { + console.warn(`The kernel '${kernelName}' for backend '${backendName}' is already registered`); + } + kernelRegistry.set(key, config3); + } + function registerGradient(config3) { + const {kernelName} = config3; + if (gradRegistry.has(kernelName)) { + if (env().getBool("DEBUG")) { + console.warn(`Overriding the gradient for '${kernelName}'`); + } + } + gradRegistry.set(kernelName, config3); + } + function unregisterKernel(kernelName, backendName) { + const key = makeKey(kernelName, backendName); + if (!kernelRegistry.has(key)) { + throw new Error(`The kernel '${kernelName}' for backend '${backendName}' is not registered`); + } + kernelRegistry.delete(key); + } + function unregisterGradient(kernelName) { + if (!gradRegistry.has(kernelName)) { + throw new Error(`The gradient '${kernelName}' for backend is not registered`); + } + gradRegistry.delete(kernelName); + } + function copyRegisteredKernels(registeredBackendName, newBackendName) { + const kernels = getKernelsForBackend(registeredBackendName); + kernels.forEach((kernelConfig) => { + const newKernelConfig = Object.assign({}, kernelConfig, {backendName: newBackendName}); + registerKernel(newKernelConfig); + }); + } + function makeKey(kernelName, backendName) { + return `${backendName}_${kernelName}`; + } + var util_exports = {}; + __export2(util_exports, { + arraysEqual: () => arraysEqual, + assert: () => assert, + assertNonNegativeIntegerDimensions: () => assertNonNegativeIntegerDimensions, + assertNonNull: () => assertNonNull, + assertShapesMatch: () => assertShapesMatch, + bytesFromStringArray: () => bytesFromStringArray, + bytesPerElement: () => bytesPerElement, + checkConversionForErrors: () => checkConversionForErrors, + clamp: () => clamp, + computeStrides: () => computeStrides, + createScalarValue: () => createScalarValue, + createShuffledIndices: () => createShuffledIndices, + decodeString: () => decodeString, + distSquared: () => distSquared, + encodeString: () => encodeString, + fetch: () => fetch2, + flatten: () => flatten, + getArrayFromDType: () => getArrayFromDType, + getTypedArrayFromDType: () => getTypedArrayFromDType, + hasEncodingLoss: () => hasEncodingLoss, + indexToLoc: () => indexToLoc, + inferDtype: () => inferDtype, + inferFromImplicitShape: () => inferFromImplicitShape, + isBoolean: () => isBoolean, + isFunction: () => isFunction, + isInt: () => isInt, + isNumber: () => isNumber, + isPromise: () => isPromise, + isScalarShape: () => isScalarShape, + isString: () => isString, + isTypedArray: () => isTypedArray, + isValidDtype: () => isValidDtype, + locToIndex: () => locToIndex, + makeOnesTypedArray: () => makeOnesTypedArray, + makeZerosNestedTypedArray: () => makeZerosNestedTypedArray, + makeZerosTypedArray: () => makeZerosTypedArray, + nearestDivisor: () => nearestDivisor, + nearestLargerEven: () => nearestLargerEven, + now: () => now2, + parseAxisParam: () => parseAxisParam, + randUniform: () => randUniform, + repeatedTry: () => repeatedTry, + rightPad: () => rightPad, + shuffle: () => shuffle, + shuffleCombo: () => shuffleCombo, + sizeFromShape: () => sizeFromShape, + sizeToSquarishShape: () => sizeToSquarishShape, + squeezeShape: () => squeezeShape, + sum: () => sum, + tanh: () => tanh, + toNestedArray: () => toNestedArray, + toTypedArray: () => toTypedArray + }); + /** + * @license + * Copyright 2017 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + function createScalarValue(value, dtype) { + if (dtype === "string") { + return encodeString(value); + } + return toTypedArray([value], dtype); + } + function noConversionNeeded(a, dtype) { + return a instanceof Float32Array && dtype === "float32" || a instanceof Int32Array && dtype === "int32" || a instanceof Uint8Array && dtype === "bool"; + } + function toTypedArray(a, dtype) { + if (dtype === "string") { + throw new Error("Cannot convert a string[] to a TypedArray"); + } + if (Array.isArray(a)) { + a = flatten(a); + } + if (env().getBool("DEBUG")) { + checkConversionForErrors(a, dtype); + } + if (noConversionNeeded(a, dtype)) { + return a; + } + if (dtype == null || dtype === "float32" || dtype === "complex64") { + return new Float32Array(a); + } else if (dtype === "int32") { + return new Int32Array(a); + } else if (dtype === "bool") { + const bool = new Uint8Array(a.length); + for (let i = 0; i < bool.length; ++i) { + if (Math.round(a[i]) !== 0) { + bool[i] = 1; + } + } + return bool; + } else { + throw new Error(`Unknown data type ${dtype}`); + } + } + function now2() { + return env().platform.now(); + } + function fetch2(path, requestInits) { + return env().platform.fetch(path, requestInits); + } + function encodeString(s, encoding = "utf-8") { + encoding = encoding || "utf-8"; + return env().platform.encode(s, encoding); + } + function decodeString(bytes, encoding = "utf-8") { + encoding = encoding || "utf-8"; + return env().platform.decode(bytes, encoding); + } + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var Profiler = class { + constructor(backendTimer, logger) { + this.backendTimer = backendTimer; + this.logger = logger; + if (logger == null) { + this.logger = new Logger(); + } + } + profileKernel(kernelName, inputs, f) { + let outputs; + const holdResultWrapperFn = () => { + outputs = f(); + }; + let timer; + const start = now2(); + if (this.backendTimer.timerAvailable()) { + timer = this.backendTimer.time(holdResultWrapperFn); + } else { + holdResultWrapperFn(); + for (const output of outputs) { + output.dataSync(); + } + timer = Promise.resolve({kernelMs: now2() - start}); + } + if (env().getBool("CHECK_COMPUTATION_FOR_ERRORS")) { + for (let i = 0; i < outputs.length; i++) { + const output = outputs[i]; + output.data().then((tensorVals) => { + checkComputationForErrors(tensorVals, output.dtype, kernelName); + }); + } + } + const kernelProfile = { + kernelName, + outputs, + inputs, + timeMs: timer.then((timing) => timing.kernelMs), + extraInfo: timer.then((timing) => timing.getExtraProfileInfo != null ? timing.getExtraProfileInfo() : "") + }; + return kernelProfile; + } + logKernelProfile(kernelProfile) { + const {kernelName, outputs, timeMs, inputs, extraInfo} = kernelProfile; + outputs.forEach((result) => { + Promise.all([result.data(), timeMs, extraInfo]).then((valueContainer) => { + this.logger.logKernelProfile(kernelName, result, valueContainer[0], valueContainer[1], inputs, valueContainer[2]); + }); + }); + } + }; + function checkComputationForErrors(vals, dtype, kernelName) { + if (dtype !== "float32") { + return false; + } + for (let i = 0; i < vals.length; i++) { + const num = vals[i]; + if (isNaN(num) || !isFinite(num)) { + console.warn(`Found ${num} in the result of '${kernelName}'`); + return true; + } + } + return false; + } + var Logger = class { + logKernelProfile(name, result, vals, timeMs, inputs, extraInfo) { + const time2 = typeof timeMs === "number" ? rightPad(`${timeMs}ms`, 9) : timeMs["error"]; + const paddedName = rightPad(name, 25); + const rank = result.rank; + const size = result.size; + const shape = rightPad(result.shape.toString(), 14); + let inputShapesDescription = ""; + for (const name2 in inputs) { + const input2 = inputs[name2]; + if (input2 != null) { + const inputShape = input2.shape || result.shape; + const inputRank = inputShape.length; + inputShapesDescription += `${name2}: ${inputRank}D ${inputRank > 0 ? inputShape : ""} `; + } + } + console.log(`%c${paddedName} %c${time2} %c${rank}D ${shape} %c${size} %c${inputShapesDescription} %c${extraInfo}`, "font-weight:bold", "color:red", "color:blue", "color: orange", "color: green", "color: steelblue"); + } + }; + /** + * @license + * Copyright 2017 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + function getFilteredNodesXToY(tape, xs, y) { + const tensorsFromX = {}; + const nodesFromX = {}; + for (let i = 0; i < xs.length; i++) { + tensorsFromX[xs[i].id] = true; + } + for (let i = 0; i < tape.length; i++) { + const node = tape[i]; + const nodeInputs = node.inputs; + for (const inputName in nodeInputs) { + const input2 = nodeInputs[inputName]; + let anyInputFromX = false; + for (let j = 0; j < xs.length; j++) { + if (tensorsFromX[input2.id]) { + node.outputs.forEach((output) => tensorsFromX[output.id] = true); + anyInputFromX = true; + nodesFromX[node.id] = true; + break; + } + } + if (anyInputFromX) { + break; + } + } + } + const tensorsLeadToY = {}; + tensorsLeadToY[y.id] = true; + const nodesToY = {}; + for (let i = tape.length - 1; i >= 0; i--) { + const node = tape[i]; + const nodeInputs = node.inputs; + for (let j = 0; j < node.outputs.length; j++) { + if (tensorsLeadToY[node.outputs[j].id]) { + for (const inputName in nodeInputs) { + tensorsLeadToY[nodeInputs[inputName].id] = true; + nodesToY[node.id] = true; + } + break; + } + } + } + const filteredTape = []; + for (let i = 0; i < tape.length; i++) { + const node = tape[i]; + if (nodesFromX[node.id] && nodesToY[node.id]) { + const prunedInputs = {}; + for (const inputName in node.inputs) { + const nodeInput = node.inputs[inputName]; + if (tensorsFromX[nodeInput.id]) { + prunedInputs[inputName] = nodeInput; + } + } + const prunedNode = Object.assign({}, node); + prunedNode.inputs = prunedInputs; + prunedNode.outputs = node.outputs; + filteredTape.push(prunedNode); + } + } + return filteredTape; + } + function backpropagateGradients(tensorAccumulatedGradientMap, filteredTape, tidy2, add5) { + for (let i = filteredTape.length - 1; i >= 0; i--) { + const node = filteredTape[i]; + const dys = []; + node.outputs.forEach((o) => { + const gradTensor = tensorAccumulatedGradientMap[o.id]; + if (gradTensor != null) { + dys.push(gradTensor); + } else { + dys.push(null); + } + }); + if (node.gradient == null) { + throw new Error(`Cannot compute gradient: gradient function not found for ${node.kernelName}.`); + } + const inputGradients = node.gradient(dys); + for (const inputName in node.inputs) { + if (!(inputName in inputGradients)) { + throw new Error(`Cannot backprop through input ${inputName}. Available gradients found: ${Object.keys(inputGradients)}.`); + } + const dx = tidy2(() => inputGradients[inputName]()); + if (dx.dtype !== "float32") { + throw new Error(`Error in gradient for op ${node.kernelName}. The gradient of input ${inputName} must have 'float32' dtype, but has '${dx.dtype}'`); + } + const x = node.inputs[inputName]; + if (!arraysEqual(dx.shape, x.shape)) { + throw new Error(`Error in gradient for op ${node.kernelName}. The gradient of input '${inputName}' has shape '${dx.shape}', which does not match the shape of the input '${x.shape}'`); + } + if (tensorAccumulatedGradientMap[x.id] == null) { + tensorAccumulatedGradientMap[x.id] = dx; + } else { + const curGradient = tensorAccumulatedGradientMap[x.id]; + tensorAccumulatedGradientMap[x.id] = add5(curGradient, dx); + curGradient.dispose(); + } + } + } + } + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var FORMAT_LIMIT_NUM_VALS = 20; + var FORMAT_NUM_FIRST_LAST_VALS = 3; + var FORMAT_NUM_SIG_DIGITS = 7; + function tensorToString(vals, shape, dtype, verbose) { + const strides = computeStrides(shape); + const padPerCol = computeMaxSizePerColumn(vals, shape, dtype, strides); + const rank = shape.length; + const valsLines = subTensorToString(vals, shape, dtype, strides, padPerCol); + const lines2 = ["Tensor"]; + if (verbose) { + lines2.push(` dtype: ${dtype}`); + lines2.push(` rank: ${rank}`); + lines2.push(` shape: [${shape}]`); + lines2.push(` values:`); + } + lines2.push(valsLines.map((l) => " " + l).join("\n")); + return lines2.join("\n"); + } + function computeMaxSizePerColumn(vals, shape, dtype, strides) { + const n = sizeFromShape(shape); + const numCols = strides[strides.length - 1]; + const padPerCol = new Array(numCols).fill(0); + const rank = shape.length; + const valuesOrTuples = dtype === "complex64" ? createComplexTuples(vals) : vals; + if (rank > 1) { + for (let row = 0; row < n / numCols; row++) { + const offset = row * numCols; + for (let j = 0; j < numCols; j++) { + padPerCol[j] = Math.max(padPerCol[j], valToString(valuesOrTuples[offset + j], 0, dtype).length); + } + } + } + return padPerCol; + } + function valToString(val, pad3, dtype) { + let valStr; + if (Array.isArray(val)) { + valStr = `${parseFloat(val[0].toFixed(FORMAT_NUM_SIG_DIGITS))} + ${parseFloat(val[1].toFixed(FORMAT_NUM_SIG_DIGITS))}j`; + } else if (isString(val)) { + valStr = `'${val}'`; + } else if (dtype === "bool") { + valStr = boolNumToString(val); + } else { + valStr = parseFloat(val.toFixed(FORMAT_NUM_SIG_DIGITS)).toString(); + } + return rightPad(valStr, pad3); + } + function boolNumToString(v) { + return v === 0 ? "false" : "true"; + } + function subTensorToString(vals, shape, dtype, strides, padPerCol, isLast = true) { + const storagePerElement = dtype === "complex64" ? 2 : 1; + const size = shape[0]; + const rank = shape.length; + if (rank === 0) { + if (dtype === "complex64") { + const complexTuple = createComplexTuples(vals); + return [valToString(complexTuple[0], 0, dtype)]; + } + if (dtype === "bool") { + return [boolNumToString(vals[0])]; + } + return [vals[0].toString()]; + } + if (rank === 1) { + if (size > FORMAT_LIMIT_NUM_VALS) { + const firstValsSize = FORMAT_NUM_FIRST_LAST_VALS * storagePerElement; + let firstVals = Array.from(vals.slice(0, firstValsSize)); + let lastVals = Array.from(vals.slice((size - FORMAT_NUM_FIRST_LAST_VALS) * storagePerElement, size * storagePerElement)); + if (dtype === "complex64") { + firstVals = createComplexTuples(firstVals); + lastVals = createComplexTuples(lastVals); + } + return [ + "[" + firstVals.map((x, i) => valToString(x, padPerCol[i], dtype)).join(", ") + ", ..., " + lastVals.map((x, i) => valToString(x, padPerCol[size - FORMAT_NUM_FIRST_LAST_VALS + i], dtype)).join(", ") + "]" + ]; + } + const displayVals = dtype === "complex64" ? createComplexTuples(vals) : Array.from(vals); + return [ + "[" + displayVals.map((x, i) => valToString(x, padPerCol[i], dtype)).join(", ") + "]" + ]; + } + const subshape = shape.slice(1); + const substrides = strides.slice(1); + const stride = strides[0] * storagePerElement; + const lines2 = []; + if (size > FORMAT_LIMIT_NUM_VALS) { + for (let i = 0; i < FORMAT_NUM_FIRST_LAST_VALS; i++) { + const start = i * stride; + const end = start + stride; + lines2.push(...subTensorToString(vals.slice(start, end), subshape, dtype, substrides, padPerCol, false)); + } + lines2.push("..."); + for (let i = size - FORMAT_NUM_FIRST_LAST_VALS; i < size; i++) { + const start = i * stride; + const end = start + stride; + lines2.push(...subTensorToString(vals.slice(start, end), subshape, dtype, substrides, padPerCol, i === size - 1)); + } + } else { + for (let i = 0; i < size; i++) { + const start = i * stride; + const end = start + stride; + lines2.push(...subTensorToString(vals.slice(start, end), subshape, dtype, substrides, padPerCol, i === size - 1)); + } + } + const sep = rank === 2 ? "," : ""; + lines2[0] = "[" + lines2[0] + sep; + for (let i = 1; i < lines2.length - 1; i++) { + lines2[i] = " " + lines2[i] + sep; + } + let newLineSep = ",\n"; + for (let i = 2; i < rank; i++) { + newLineSep += "\n"; + } + lines2[lines2.length - 1] = " " + lines2[lines2.length - 1] + "]" + (isLast ? "" : newLineSep); + return lines2; + } + function createComplexTuples(vals) { + const complexTuples = []; + for (let i = 0; i < vals.length; i += 2) { + complexTuples.push([vals[i], vals[i + 1]]); + } + return complexTuples; + } + /** + * @license + * Copyright 2017 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var TensorBuffer = class { + constructor(shape, dtype, values) { + this.dtype = dtype; + this.shape = shape.slice(); + this.size = sizeFromShape(shape); + if (values != null) { + const n = values.length; + assert(n === this.size, () => `Length of values '${n}' does not match the size inferred by the shape '${this.size}'.`); + } + if (dtype === "complex64") { + throw new Error(`complex64 dtype TensorBuffers are not supported. Please create a TensorBuffer for the real and imaginary parts separately and call tf.complex(real, imag).`); + } + this.values = values || getArrayFromDType(dtype, this.size); + this.strides = computeStrides(shape); + } + set(value, ...locs) { + if (locs.length === 0) { + locs = [0]; + } + assert(locs.length === this.rank, () => `The number of provided coordinates (${locs.length}) must match the rank (${this.rank})`); + const index = this.locToIndex(locs); + this.values[index] = value; + } + get(...locs) { + if (locs.length === 0) { + locs = [0]; + } + let i = 0; + for (const loc of locs) { + if (loc < 0 || loc >= this.shape[i]) { + const msg = `Requested out of range element at ${locs}. Buffer shape=${this.shape}`; + throw new Error(msg); + } + i++; + } + let index = locs[locs.length - 1]; + for (let i2 = 0; i2 < locs.length - 1; ++i2) { + index += this.strides[i2] * locs[i2]; + } + return this.values[index]; + } + locToIndex(locs) { + if (this.rank === 0) { + return 0; + } else if (this.rank === 1) { + return locs[0]; + } + let index = locs[locs.length - 1]; + for (let i = 0; i < locs.length - 1; ++i) { + index += this.strides[i] * locs[i]; + } + return index; + } + indexToLoc(index) { + if (this.rank === 0) { + return []; + } else if (this.rank === 1) { + return [index]; + } + const locs = new Array(this.shape.length); + for (let i = 0; i < locs.length - 1; ++i) { + locs[i] = Math.floor(index / this.strides[i]); + index -= locs[i] * this.strides[i]; + } + locs[locs.length - 1] = index; + return locs; + } + get rank() { + return this.shape.length; + } + toTensor() { + return trackerFn().makeTensor(this.values, this.shape, this.dtype); + } + }; + var trackerFn = null; + var opHandler = null; + var deprecationWarningFn = null; + function setTensorTracker(fn) { + trackerFn = fn; + } + function setOpHandler(handler) { + opHandler = handler; + } + function setDeprecationWarningFn(fn) { + deprecationWarningFn = fn; + } + var Tensor = class { + constructor(shape, dtype, dataId, id) { + this.kept = false; + this.isDisposedInternal = false; + this.shape = shape.slice(); + this.dtype = dtype || "float32"; + this.size = sizeFromShape(shape); + this.strides = computeStrides(shape); + this.dataId = dataId; + this.id = id; + this.rankType = this.rank < 5 ? this.rank.toString() : "higher"; + } + get rank() { + return this.shape.length; + } + async buffer() { + const vals = await this.data(); + return opHandler.buffer(this.shape, this.dtype, vals); + } + bufferSync() { + return opHandler.buffer(this.shape, this.dtype, this.dataSync()); + } + async array() { + const vals = await this.data(); + return toNestedArray(this.shape, vals); + } + arraySync() { + return toNestedArray(this.shape, this.dataSync()); + } + async data() { + this.throwIfDisposed(); + const data2 = trackerFn().read(this.dataId); + if (this.dtype === "string") { + const bytes = await data2; + try { + return bytes.map((b) => decodeString(b)); + } catch (_a) { + throw new Error("Failed to decode the string bytes into utf-8. To get the original bytes, call tensor.bytes()."); + } + } + return data2; + } + dataSync() { + this.throwIfDisposed(); + const data2 = trackerFn().readSync(this.dataId); + if (this.dtype === "string") { + try { + return data2.map((b) => decodeString(b)); + } catch (_a) { + throw new Error("Failed to decode the string bytes into utf-8. To get the original bytes, call tensor.bytes()."); + } + } + return data2; + } + async bytes() { + this.throwIfDisposed(); + const data2 = await trackerFn().read(this.dataId); + if (this.dtype === "string") { + return data2; + } else { + return new Uint8Array(data2.buffer); + } + } + dispose() { + if (this.isDisposed) { + return; + } + trackerFn().disposeTensor(this); + this.isDisposedInternal = true; + } + get isDisposed() { + return this.isDisposedInternal; + } + throwIfDisposed() { + if (this.isDisposed) { + throw new Error(`Tensor is disposed.`); + } + } + print(verbose = false) { + return opHandler.print(this, verbose); + } + clone() { + this.throwIfDisposed(); + return opHandler.clone(this); + } + toString(verbose = false) { + const vals = this.dataSync(); + return tensorToString(vals, this.shape, this.dtype, verbose); + } + cast(dtype) { + this.throwIfDisposed(); + return opHandler.cast(this, dtype); + } + variable(trainable = true, name, dtype) { + this.throwIfDisposed(); + return trackerFn().makeVariable(this, trainable, name, dtype); + } + }; + Object.defineProperty(Tensor, Symbol.hasInstance, { + value: (instance) => { + return !!instance && instance.data != null && instance.dataSync != null && instance.throwIfDisposed != null; + } + }); + function getGlobalTensorClass() { + return getGlobal("Tensor", () => { + return Tensor; + }); + } + getGlobalTensorClass(); + var Variable = class extends Tensor { + constructor(initialValue, trainable, name, tensorId) { + super(initialValue.shape, initialValue.dtype, initialValue.dataId, tensorId); + this.trainable = trainable; + this.name = name; + } + assign(newValue) { + if (newValue.dtype !== this.dtype) { + throw new Error(`dtype of the new value (${newValue.dtype}) and previous value (${this.dtype}) must match`); + } + if (!arraysEqual(newValue.shape, this.shape)) { + throw new Error(`shape of the new value (${newValue.shape}) and previous value (${this.shape}) must match`); + } + trackerFn().disposeTensor(this); + this.dataId = newValue.dataId; + trackerFn().incRef(this, null); + } + dispose() { + trackerFn().disposeVariable(this); + this.isDisposedInternal = true; + } + }; + Object.defineProperty(Variable, Symbol.hasInstance, { + value: (instance) => { + return instance instanceof Tensor && instance.assign != null && instance.assign instanceof Function; + } + }); + var tensor_util_exports = {}; + __export2(tensor_util_exports, { + assertTypesMatch: () => assertTypesMatch, + getTensorsInContainer: () => getTensorsInContainer, + isTensorInList: () => isTensorInList, + makeTypesMatch: () => makeTypesMatch + }); + /** + * @license + * Copyright 2017 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var Rank; + (function(Rank2) { + Rank2["R0"] = "R0"; + Rank2["R1"] = "R1"; + Rank2["R2"] = "R2"; + Rank2["R3"] = "R3"; + Rank2["R4"] = "R4"; + Rank2["R5"] = "R5"; + Rank2["R6"] = "R6"; + })(Rank || (Rank = {})); + var UpcastInt32AndMap; + (function(UpcastInt32AndMap2) { + UpcastInt32AndMap2["float32"] = "float32"; + UpcastInt32AndMap2["int32"] = "int32"; + UpcastInt32AndMap2["bool"] = "int32"; + UpcastInt32AndMap2["complex64"] = "complex64"; + })(UpcastInt32AndMap || (UpcastInt32AndMap = {})); + var UpcastBoolAndMap; + (function(UpcastBoolAndMap2) { + UpcastBoolAndMap2["float32"] = "float32"; + UpcastBoolAndMap2["int32"] = "int32"; + UpcastBoolAndMap2["bool"] = "bool"; + UpcastBoolAndMap2["complex64"] = "complex64"; + })(UpcastBoolAndMap || (UpcastBoolAndMap = {})); + var UpcastFloat32AndMap; + (function(UpcastFloat32AndMap2) { + UpcastFloat32AndMap2["float32"] = "float32"; + UpcastFloat32AndMap2["int32"] = "float32"; + UpcastFloat32AndMap2["bool"] = "float32"; + UpcastFloat32AndMap2["complex64"] = "complex64"; + })(UpcastFloat32AndMap || (UpcastFloat32AndMap = {})); + var UpcastComplex64AndMap; + (function(UpcastComplex64AndMap2) { + UpcastComplex64AndMap2["float32"] = "complex64"; + UpcastComplex64AndMap2["int32"] = "complex64"; + UpcastComplex64AndMap2["bool"] = "complex64"; + UpcastComplex64AndMap2["complex64"] = "complex64"; + })(UpcastComplex64AndMap || (UpcastComplex64AndMap = {})); + var upcastTypeMap = { + float32: UpcastFloat32AndMap, + int32: UpcastInt32AndMap, + bool: UpcastBoolAndMap, + complex64: UpcastComplex64AndMap + }; + function upcastType(typeA, typeB) { + if (typeA === "string" || typeB === "string") { + if (typeA === "string" && typeB === "string") { + return "string"; + } + throw new Error(`Can not upcast ${typeA} with ${typeB}`); + } + return upcastTypeMap[typeA][typeB]; + } + function sumOutType(type) { + return upcastType(type, "int32"); + } + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + function makeTypesMatch(a, b) { + if (a.dtype === b.dtype) { + return [a, b]; + } + const dtype = upcastType(a.dtype, b.dtype); + return [a.cast(dtype), b.cast(dtype)]; + } + function assertTypesMatch(a, b) { + assert(a.dtype === b.dtype, () => `The dtypes of the first(${a.dtype}) and second(${b.dtype}) input must match`); + } + function isTensorInList(tensor2, tensorList) { + return tensorList.some((x) => x.id === tensor2.id); + } + function getTensorsInContainer(result) { + const list = []; + const seen = new Set(); + walkTensorContainer(result, list, seen); + return list; + } + function walkTensorContainer(container, list, seen) { + if (container == null) { + return; + } + if (container instanceof Tensor) { + list.push(container); + return; + } + if (!isIterable(container)) { + return; + } + const iterable = container; + for (const k in iterable) { + const val = iterable[k]; + if (!seen.has(val)) { + seen.add(val); + walkTensorContainer(val, list, seen); + } + } + } + function isIterable(obj) { + return Array.isArray(obj) || typeof obj === "object"; + } + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + function isRegisteredKernelInvocation(kernelInvocation) { + return kernelInvocation.kernelName != null; + } + var EngineState = class { + constructor() { + this.registeredVariables = {}; + this.nextTapeNodeId = 0; + this.numBytes = 0; + this.numTensors = 0; + this.numStringTensors = 0; + this.numDataBuffers = 0; + this.gradientDepth = 0; + this.kernelDepth = 0; + this.scopeStack = []; + this.numDataMovesStack = []; + this.nextScopeId = 0; + this.tensorInfo = new WeakMap(); + this.profiling = false; + this.activeProfile = { + newBytes: 0, + newTensors: 0, + peakBytes: 0, + kernels: [], + result: null, + get kernelNames() { + return Array.from(new Set(this.kernels.map((k) => k.name))); + } + }; + } + dispose() { + for (const variableName in this.registeredVariables) { + this.registeredVariables[variableName].dispose(); + } + } + }; + var Engine = class { + constructor(ENV5) { + this.ENV = ENV5; + this.registry = {}; + this.registryFactory = {}; + this.pendingBackendInitId = 0; + this.state = new EngineState(); + } + async ready() { + if (this.pendingBackendInit != null) { + return this.pendingBackendInit.then(() => { + }); + } + if (this.backendInstance != null) { + return; + } + const sortedBackends = this.getSortedBackends(); + for (let i = 0; i < sortedBackends.length; i++) { + const backendName = sortedBackends[i]; + const success = await this.initializeBackend(backendName).success; + if (success) { + await this.setBackend(backendName); + return; + } + } + throw new Error(`Could not initialize any backends, all backend initializations failed.`); + } + get backend() { + if (this.pendingBackendInit != null) { + throw new Error(`Backend '${this.backendName}' has not yet been initialized. Make sure to await tf.ready() or await tf.setBackend() before calling other methods`); + } + if (this.backendInstance == null) { + const {name, asyncInit} = this.initializeBackendsAndReturnBest(); + if (asyncInit) { + throw new Error(`The highest priority backend '${name}' has not yet been initialized. Make sure to await tf.ready() or await tf.setBackend() before calling other methods`); + } + this.setBackend(name); + } + return this.backendInstance; + } + backendNames() { + return Object.keys(this.registryFactory); + } + findBackend(backendName) { + if (!(backendName in this.registry)) { + if (backendName in this.registryFactory) { + const {asyncInit} = this.initializeBackend(backendName); + if (asyncInit) { + return null; + } + } else { + return null; + } + } + return this.registry[backendName]; + } + findBackendFactory(backendName) { + if (!(backendName in this.registryFactory)) { + return null; + } + return this.registryFactory[backendName].factory; + } + registerBackend(backendName, factory, priority = 1) { + if (backendName in this.registryFactory) { + console.warn(`${backendName} backend was already registered. Reusing existing backend factory.`); + return false; + } + this.registryFactory[backendName] = {factory, priority}; + return true; + } + async setBackend(backendName) { + if (this.registryFactory[backendName] == null) { + throw new Error(`Backend name '${backendName}' not found in registry`); + } + this.backendName = backendName; + if (this.registry[backendName] == null) { + this.backendInstance = null; + const {success, asyncInit} = this.initializeBackend(backendName); + const result = asyncInit ? await success : success; + if (!result) { + return false; + } + } + this.backendInstance = this.registry[backendName]; + this.setupRegisteredKernels(); + this.profiler = new Profiler(this.backendInstance); + return true; + } + setupRegisteredKernels() { + const kernels = getKernelsForBackend(this.backendName); + kernels.forEach((kernel) => { + if (kernel.setupFunc != null) { + kernel.setupFunc(this.backendInstance); + } + }); + } + disposeRegisteredKernels(backendName) { + const kernels = getKernelsForBackend(backendName); + kernels.forEach((kernel) => { + if (kernel.disposeFunc != null) { + kernel.disposeFunc(this.registry[backendName]); + } + }); + } + initializeBackend(backendName) { + const registryFactoryEntry = this.registryFactory[backendName]; + if (registryFactoryEntry == null) { + throw new Error(`Cannot initialize backend ${backendName}, no registration found.`); + } + try { + const backend22 = registryFactoryEntry.factory(); + if (backend22 && !(backend22 instanceof KernelBackend) && typeof backend22.then === "function") { + const promiseId = ++this.pendingBackendInitId; + const success = backend22.then((backendInstance) => { + if (promiseId < this.pendingBackendInitId) { + return false; + } + this.registry[backendName] = backendInstance; + this.pendingBackendInit = null; + return true; + }).catch((err) => { + if (promiseId < this.pendingBackendInitId) { + return false; + } + this.pendingBackendInit = null; + console.warn(`Initialization of backend ${backendName} failed`); + console.warn(err.stack || err.message); + return false; + }); + this.pendingBackendInit = success; + return {success, asyncInit: true}; + } else { + this.registry[backendName] = backend22; + return {success: true, asyncInit: false}; + } + } catch (err) { + console.warn(`Initialization of backend ${backendName} failed`); + console.warn(err.stack || err.message); + return {success: false, asyncInit: false}; + } + } + removeBackend(backendName) { + if (!(backendName in this.registryFactory)) { + throw new Error(`${backendName} backend not found in registry`); + } + if (this.backendName === backendName && this.pendingBackendInit != null) { + this.pendingBackendInitId++; + } + if (backendName in this.registry) { + this.disposeRegisteredKernels(backendName); + this.registry[backendName].dispose(); + delete this.registry[backendName]; + } + delete this.registryFactory[backendName]; + if (this.backendName === backendName) { + this.pendingBackendInit = null; + this.backendName = null; + this.backendInstance = null; + } + } + getSortedBackends() { + if (Object.keys(this.registryFactory).length === 0) { + throw new Error("No backend found in registry."); + } + return Object.keys(this.registryFactory).sort((a, b) => { + return this.registryFactory[b].priority - this.registryFactory[a].priority; + }); + } + initializeBackendsAndReturnBest() { + const sortedBackends = this.getSortedBackends(); + for (let i = 0; i < sortedBackends.length; i++) { + const backendName = sortedBackends[i]; + const {success, asyncInit} = this.initializeBackend(backendName); + if (asyncInit || success) { + return {name: backendName, asyncInit}; + } + } + throw new Error(`Could not initialize any backends, all backend initializations failed.`); + } + moveData(backend22, dataId) { + const info2 = this.state.tensorInfo.get(dataId); + const srcBackend = info2.backend; + const values = this.readSync(dataId); + const refCount = srcBackend.refCount(dataId); + srcBackend.disposeData(dataId, true); + info2.backend = backend22; + backend22.move(dataId, values, info2.shape, info2.dtype, refCount); + if (this.shouldCheckForMemLeaks()) { + this.state.numDataMovesStack[this.state.numDataMovesStack.length - 1]++; + } + } + tidy(nameOrFn, fn) { + let name = null; + if (fn == null) { + if (typeof nameOrFn !== "function") { + throw new Error("Please provide a function to tidy()"); + } + fn = nameOrFn; + } else { + if (typeof nameOrFn !== "string" && !(nameOrFn instanceof String)) { + throw new Error("When calling with two arguments, the first argument to tidy() must be a string"); + } + if (typeof fn !== "function") { + throw new Error("When calling with two arguments, the 2nd argument to tidy() must be a function"); + } + name = nameOrFn; + } + let result; + return this.scopedRun(() => this.startScope(name), () => this.endScope(result), () => { + result = fn(); + if (result instanceof Promise) { + console.error("Cannot return a Promise inside of tidy."); + } + return result; + }); + } + scopedRun(start, end, f) { + start(); + try { + const res = f(); + end(); + return res; + } catch (ex) { + end(); + throw ex; + } + } + nextTensorId() { + return Engine.nextTensorId++; + } + nextVariableId() { + return Engine.nextVariableId++; + } + clone(x) { + const y = ENGINE.runKernel(Identity, {x}); + const inputs = {x}; + const grad2 = (dy) => ({ + x: () => { + const dtype = "float32"; + const gradInputs = {x: dy}; + const attrs = {dtype}; + return ENGINE.runKernel(Cast, gradInputs, attrs); + } + }); + const saved = []; + this.addTapeNode(this.state.activeScope.name, inputs, [y], grad2, saved, {}); + return y; + } + runKernel(kernelName, inputs, attrs) { + const hasKernel = getKernel(kernelName, this.backendName) != null; + if (!hasKernel) { + throw new Error(`Kernel '${kernelName}' not registered for backend '${this.backendName}'`); + } + return this.runKernelFunc({kernelName, inputs, attrs}); + } + shouldCheckForMemLeaks() { + return this.ENV.getBool("IS_TEST"); + } + checkKernelForMemLeak(kernelName, numDataIdsBefore, outInfos) { + const numDataIdsAfter = this.backend.numDataIds(); + let numOutputDataIds = 0; + outInfos.forEach((info2) => { + numOutputDataIds += info2.dtype === "complex64" ? 3 : 1; + }); + const numMoves = this.state.numDataMovesStack[this.state.numDataMovesStack.length - 1]; + const dataIdsLeaked = numDataIdsAfter - numDataIdsBefore - numOutputDataIds - numMoves; + if (dataIdsLeaked > 0) { + throw new Error(`Backend '${this.backendName}' has an internal memory leak (${dataIdsLeaked} data ids) after running '${kernelName}'`); + } + } + runKernelFunc(kernelParams) { + let outputs; + let saved = []; + const isTapeOn = this.isTapeOn(); + const startingBytecount = this.state.numBytes; + const startingNumTensors = this.state.numTensors; + if (this.shouldCheckForMemLeaks()) { + this.state.numDataMovesStack.push(0); + } + let kernelFunc3; + if (this.backendName == null) { + this.backend; + } + let out; + const kernelOrScopeName = isRegisteredKernelInvocation(kernelParams) ? kernelParams.kernelName : this.state.activeScope != null ? this.state.activeScope.name : ""; + if (isRegisteredKernelInvocation(kernelParams)) { + const {kernelName, inputs: inputs2, attrs: attrs2} = kernelParams; + if (this.backendName == null) { + this.backend; + } + const kernel = getKernel(kernelName, this.backendName); + assert(kernel != null, () => `Cannot find registered kernel '${kernelName}' for backend '${this.backendName}'`); + kernelFunc3 = () => { + const numDataIdsBefore = this.backend.numDataIds(); + out = kernel.kernelFunc({inputs: inputs2, attrs: attrs2, backend: this.backend}); + const outInfos = Array.isArray(out) ? out : [out]; + if (this.shouldCheckForMemLeaks()) { + this.checkKernelForMemLeak(kernelName, numDataIdsBefore, outInfos); + } + const outTensors = outInfos.map((outInfo) => { + if (outInfo.rank != null) { + return outInfo; + } + const {dataId, shape, dtype} = outInfo; + return this.makeTensorFromDataId(dataId, shape, dtype); + }); + if (isTapeOn) { + const tensorsToSave = this.getTensorsForGradient(kernelName, inputs2, outTensors); + saved = this.saveTensorsForBackwardMode(tensorsToSave); + } + return outTensors; + }; + } else { + const {forwardFunc} = kernelParams; + const saveFunc = (tensors) => { + if (!isTapeOn) { + return; + } + saved = tensors.map((tensor2) => this.keep(this.clone(tensor2))); + }; + kernelFunc3 = () => { + const numDataIdsBefore = this.backend.numDataIds(); + out = this.tidy(() => forwardFunc(this.backend, saveFunc)); + const outs = Array.isArray(out) ? out : [out]; + if (this.shouldCheckForMemLeaks()) { + this.checkKernelForMemLeak(kernelOrScopeName, numDataIdsBefore, outs); + } + return outs; + }; + } + const {inputs, attrs} = kernelParams; + const backwardsFunc = isRegisteredKernelInvocation(kernelParams) ? null : kernelParams.backwardsFunc; + let kernelProfile; + this.scopedRun(() => this.state.kernelDepth++, () => this.state.kernelDepth--, () => { + if (!this.ENV.getBool("DEBUG") && !this.state.profiling) { + outputs = kernelFunc3(); + } else { + kernelProfile = this.profiler.profileKernel(kernelOrScopeName, inputs, () => kernelFunc3()); + if (this.ENV.getBool("DEBUG")) { + this.profiler.logKernelProfile(kernelProfile); + } + outputs = kernelProfile.outputs; + } + }); + if (isTapeOn) { + this.addTapeNode(kernelOrScopeName, inputs, outputs, backwardsFunc, saved, attrs); + } + if (this.state.profiling) { + this.state.activeProfile.kernels.push({ + name: kernelOrScopeName, + bytesAdded: this.state.numBytes - startingBytecount, + totalBytesSnapshot: this.state.numBytes, + tensorsAdded: this.state.numTensors - startingNumTensors, + totalTensorsSnapshot: this.state.numTensors, + inputShapes: Object.keys(inputs).map((key) => inputs[key] != null ? inputs[key].shape : null), + outputShapes: outputs.map((item) => item.shape), + kernelTimeMs: kernelProfile.timeMs, + extraInfo: kernelProfile.extraInfo + }); + } + return Array.isArray(out) ? outputs : outputs[0]; + } + saveTensorsForBackwardMode(tensors) { + const saved = tensors.map((tensor2) => this.keep(this.clone(tensor2))); + return saved; + } + getTensorsForGradient(kernelName, inputs, outputs) { + const gradConfig = getGradient(kernelName); + if (gradConfig != null) { + const inputsToSave = gradConfig.inputsToSave || []; + const outputsToSave = gradConfig.outputsToSave || []; + let inputTensorsToSave; + if (gradConfig.saveAllInputs) { + assert(Array.isArray(inputs), () => "saveAllInputs is true, expected inputs to be an array."); + inputTensorsToSave = Object.keys(inputs).map((key) => inputs[key]); + } else { + inputTensorsToSave = inputsToSave.map((inputName) => inputs[inputName]); + } + const outputTensorsToSave = outputs.filter((_, i) => outputsToSave[i]); + return inputTensorsToSave.concat(outputTensorsToSave); + } + return []; + } + makeTensor(values, shape, dtype, backend22) { + if (values == null) { + throw new Error("Values passed to engine.makeTensor() are null"); + } + dtype = dtype || "float32"; + backend22 = backend22 || this.backend; + let backendVals = values; + if (dtype === "string" && isString(values[0])) { + backendVals = values.map((d) => encodeString(d)); + } + const dataId = backend22.write(backendVals, shape, dtype); + const t = new Tensor(shape, dtype, dataId, this.nextTensorId()); + this.trackTensor(t, backend22); + if (dtype === "string") { + const info2 = this.state.tensorInfo.get(dataId); + const newBytes = bytesFromStringArray(backendVals); + this.state.numBytes += newBytes - info2.bytes; + info2.bytes = newBytes; + } + return t; + } + makeTensorFromDataId(dataId, shape, dtype, backend22) { + dtype = dtype || "float32"; + const t = new Tensor(shape, dtype, dataId, this.nextTensorId()); + this.trackTensor(t, backend22); + return t; + } + makeVariable(initialValue, trainable = true, name, dtype) { + name = name || this.nextVariableId().toString(); + if (dtype != null && dtype !== initialValue.dtype) { + initialValue = initialValue.cast(dtype); + } + const v = new Variable(initialValue, trainable, name, this.nextTensorId()); + if (this.state.registeredVariables[v.name] != null) { + throw new Error(`Variable with name ${v.name} was already registered`); + } + this.state.registeredVariables[v.name] = v; + this.incRef(v, this.backend); + return v; + } + trackTensor(a, backend22) { + this.state.numTensors++; + if (a.dtype === "string") { + this.state.numStringTensors++; + } + let bytes = 0; + if (a.dtype !== "complex64" && a.dtype !== "string") { + bytes = a.size * bytesPerElement(a.dtype); + } + this.state.numBytes += bytes; + if (!this.state.tensorInfo.has(a.dataId)) { + this.state.numDataBuffers++; + this.state.tensorInfo.set(a.dataId, { + backend: backend22 || this.backend, + dtype: a.dtype, + shape: a.shape, + bytes + }); + } + if (!(a instanceof Variable)) { + this.track(a); + } + } + incRef(a, backend22) { + this.trackTensor(a, backend22); + this.backend.incRef(a.dataId); + } + removeDataId(dataId, backend22) { + if (this.state.tensorInfo.has(dataId) && this.state.tensorInfo.get(dataId).backend === backend22) { + this.state.tensorInfo.delete(dataId); + this.state.numDataBuffers--; + } + } + disposeTensor(a) { + if (!this.state.tensorInfo.has(a.dataId)) { + return; + } + const info2 = this.state.tensorInfo.get(a.dataId); + this.state.numTensors--; + if (a.dtype === "string") { + this.state.numStringTensors--; + this.state.numBytes -= info2.bytes; + } + if (a.dtype !== "complex64" && a.dtype !== "string") { + const bytes = a.size * bytesPerElement(a.dtype); + this.state.numBytes -= bytes; + } + if (info2.backend.disposeData(a.dataId)) { + this.removeDataId(a.dataId, info2.backend); + } + } + disposeVariables() { + for (const varName in this.state.registeredVariables) { + const v = this.state.registeredVariables[varName]; + this.disposeVariable(v); + } + } + disposeVariable(v) { + this.disposeTensor(v); + if (this.state.registeredVariables[v.name] != null) { + delete this.state.registeredVariables[v.name]; + } + } + memory() { + const info2 = this.backend.memory(); + info2.numTensors = this.state.numTensors; + info2.numDataBuffers = this.state.numDataBuffers; + info2.numBytes = this.state.numBytes; + if (this.state.numStringTensors > 0) { + info2.unreliable = true; + if (info2.reasons == null) { + info2.reasons = []; + } + info2.reasons.push("Memory usage by string tensors is approximate (2 bytes per character)"); + } + return info2; + } + async profile(query) { + this.state.profiling = true; + const startBytes = this.state.numBytes; + const startNumTensors = this.state.numTensors; + this.state.activeProfile.kernels = []; + this.state.activeProfile.result = await query(); + this.state.profiling = false; + this.state.activeProfile.peakBytes = Math.max(...this.state.activeProfile.kernels.map((d) => d.totalBytesSnapshot)); + this.state.activeProfile.newBytes = this.state.numBytes - startBytes; + this.state.activeProfile.newTensors = this.state.numTensors - startNumTensors; + for (const kernel of this.state.activeProfile.kernels) { + kernel.kernelTimeMs = await kernel.kernelTimeMs; + kernel.extraInfo = await kernel.extraInfo; + } + return this.state.activeProfile; + } + isTapeOn() { + return this.state.gradientDepth > 0 && this.state.kernelDepth === 0; + } + addTapeNode(kernelName, inputs, outputs, gradientsFunc, saved, attrs) { + const tapeNode = {id: this.state.nextTapeNodeId++, kernelName, inputs, outputs, saved}; + const gradConfig = getGradient(kernelName); + if (gradConfig != null) { + gradientsFunc = gradConfig.gradFunc; + } + if (gradientsFunc != null) { + tapeNode.gradient = (dys) => { + dys = dys.map((dy, i) => { + if (dy == null) { + const output = outputs[i]; + const vals = makeZerosTypedArray(output.size, output.dtype); + return this.makeTensor(vals, output.shape, output.dtype); + } + return dy; + }); + return gradientsFunc(dys.length > 1 ? dys : dys[0], saved, attrs); + }; + } + this.state.activeTape.push(tapeNode); + } + keep(result) { + result.kept = true; + return result; + } + startTape() { + if (this.state.gradientDepth === 0) { + this.state.activeTape = []; + } + this.state.gradientDepth++; + } + endTape() { + this.state.gradientDepth--; + } + startScope(name) { + const scopeInfo = { + track: [], + name: "unnamed scope", + id: this.state.nextScopeId++ + }; + if (name) { + scopeInfo.name = name; + } + this.state.scopeStack.push(scopeInfo); + this.state.activeScope = scopeInfo; + } + endScope(result) { + const tensorsToTrackInParent = getTensorsInContainer(result); + const tensorsToTrackInParentSet = new Set(tensorsToTrackInParent.map((t) => t.id)); + for (let i = 0; i < this.state.activeScope.track.length; i++) { + const tensor2 = this.state.activeScope.track[i]; + if (!tensor2.kept && !tensorsToTrackInParentSet.has(tensor2.id)) { + tensor2.dispose(); + } + } + const oldScope = this.state.scopeStack.pop(); + this.state.activeScope = this.state.scopeStack.length === 0 ? null : this.state.scopeStack[this.state.scopeStack.length - 1]; + tensorsToTrackInParent.forEach((tensor2) => { + if (!tensor2.kept && tensor2.scopeId === oldScope.id) { + this.track(tensor2); + } + }); + } + gradients(f, xs, dy, allowNoGradients = false) { + assert(xs.length > 0, () => "gradients() received an empty list of xs."); + if (dy != null && dy.dtype !== "float32") { + throw new Error(`dy must have 'float32' dtype, but has '${dy.dtype}'`); + } + const y = this.scopedRun(() => this.startTape(), () => this.endTape(), () => this.tidy("forward", f)); + assert(y instanceof Tensor, () => "The result y returned by f() must be a tensor."); + const filteredTape = getFilteredNodesXToY(this.state.activeTape, xs, y); + if (!allowNoGradients && filteredTape.length === 0 && xs.length > 0) { + throw new Error("Cannot compute gradient of y=f(x) with respect to x. Make sure that the f you passed encloses all operations that lead from x to y."); + } + return this.tidy("backward", () => { + const accumulatedGradientMap = {}; + accumulatedGradientMap[y.id] = dy == null ? ones(y.shape) : dy; + backpropagateGradients(accumulatedGradientMap, filteredTape, (f2) => this.tidy(f2), add); + const grads2 = xs.map((x) => accumulatedGradientMap[x.id]); + if (this.state.gradientDepth === 0) { + this.state.activeTape.forEach((node) => { + for (const tensor2 of node.saved) { + tensor2.dispose(); + } + }); + this.state.activeTape = null; + } + return {value: y, grads: grads2}; + }); + } + customGrad(f) { + assert(isFunction(f), () => "The f passed in customGrad(f) must be a function."); + return (...inputs) => { + assert(inputs.every((t) => t instanceof Tensor), () => "The args passed in customGrad(f)(x1, x2,...) must all be tensors"); + let res; + const inputMap = {}; + inputs.forEach((input2, i) => { + inputMap[i] = input2; + }); + const forwardFunc = (_, save) => { + res = f(...[...inputs, save]); + assert(res.value instanceof Tensor, () => "The function f passed in customGrad(f) must return an object where `obj.value` is a tensor"); + assert(isFunction(res.gradFunc), () => "The function f passed in customGrad(f) must return an object where `obj.gradFunc` is a function."); + return res.value; + }; + const backwardsFunc = (dy, saved) => { + const gradRes = res.gradFunc(dy, saved); + const grads2 = Array.isArray(gradRes) ? gradRes : [gradRes]; + assert(grads2.length === inputs.length, () => "The function f passed in customGrad(f) must return an object where `obj.gradFunc` is a function that returns the same number of tensors as inputs passed to f(...)."); + assert(grads2.every((t) => t instanceof Tensor), () => "The function f passed in customGrad(f) must return an object where `obj.gradFunc` is a function that returns a list of only tensors."); + const gradMap = {}; + grads2.forEach((grad2, i) => { + gradMap[i] = () => grad2; + }); + return gradMap; + }; + return this.runKernelFunc({ + forwardFunc, + backwardsFunc, + inputs: inputMap + }); + }; + } + readSync(dataId) { + const info2 = this.state.tensorInfo.get(dataId); + return info2.backend.readSync(dataId); + } + read(dataId) { + const info2 = this.state.tensorInfo.get(dataId); + return info2.backend.read(dataId); + } + async time(query) { + const start = now2(); + const timingInfo = await this.backend.time(query); + timingInfo.wallMs = now2() - start; + return timingInfo; + } + track(result) { + if (this.state.activeScope != null) { + result.scopeId = this.state.activeScope.id; + this.state.activeScope.track.push(result); + } + return result; + } + get registeredVariables() { + return this.state.registeredVariables; + } + reset() { + this.pendingBackendInitId++; + this.state.dispose(); + this.ENV.reset(); + this.state = new EngineState(); + for (const backendName in this.registry) { + this.disposeRegisteredKernels(backendName); + this.registry[backendName].dispose(); + delete this.registry[backendName]; + } + this.backendName = null; + this.backendInstance = null; + this.pendingBackendInit = null; + } + }; + Engine.nextTensorId = 0; + Engine.nextVariableId = 0; + function ones(shape) { + const values = makeOnesTypedArray(sizeFromShape(shape), "float32"); + return ENGINE.makeTensor(values, shape, "float32"); + } + function getOrMakeEngine() { + const ns = getGlobalNamespace(); + if (ns._tfengine == null) { + const environment = new Environment(ns); + ns._tfengine = new Engine(environment); + } + setEnvironmentGlobal(ns._tfengine.ENV); + setTensorTracker(() => ns._tfengine); + return ns._tfengine; + } + var ENGINE = getOrMakeEngine(); + function add(a, b) { + const inputs = {a, b}; + return ENGINE.runKernel(Add, inputs); + } + var device_util_exports = {}; + __export2(device_util_exports, { + isBrowser: () => isBrowser, + isMobile: () => isMobile + }); + /** + * @license + * Copyright 2017 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + function _isNavigatorDefined() { + return typeof navigator !== "undefined" && navigator != null; + } + function isMobile() { + if (_isNavigatorDefined()) { + const a = navigator.userAgent || navigator.vendor || window.opera; + return /(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(a) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(a.substr(0, 4)); + } + return false; + } + function isBrowser() { + return typeof window !== "undefined" && window.document != null || typeof WorkerGlobalScope !== "undefined"; + } + /** + * @license + * Copyright 2019 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var ENV2 = env(); + ENV2.registerFlag("DEBUG", () => false, (debugValue) => { + if (debugValue) { + console.warn("Debugging mode is ON. The output of every math call will be downloaded to CPU and checked for NaNs. This significantly impacts performance."); + } + }); + ENV2.registerFlag("IS_BROWSER", () => isBrowser()); + ENV2.registerFlag("IS_NODE", () => typeof process !== "undefined" && typeof process.versions !== "undefined" && typeof process.versions.node !== "undefined"); + ENV2.registerFlag("IS_CHROME", () => typeof navigator !== "undefined" && navigator != null && navigator.userAgent != null && /Chrome/.test(navigator.userAgent) && /Google Inc/.test(navigator.vendor)); + ENV2.registerFlag("PROD", () => false); + ENV2.registerFlag("TENSORLIKE_CHECK_SHAPE_CONSISTENCY", () => ENV2.getBool("DEBUG")); + ENV2.registerFlag("DEPRECATION_WARNINGS_ENABLED", () => true); + ENV2.registerFlag("IS_TEST", () => false); + ENV2.registerFlag("CHECK_COMPUTATION_FOR_ERRORS", () => true); + ENV2.registerFlag("WRAP_TO_IMAGEBITMAP", () => false); + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + function inferShape(val, dtype) { + let firstElem = val; + if (isTypedArray(val)) { + return dtype === "string" ? [] : [val.length]; + } + if (!Array.isArray(val)) { + return []; + } + const shape = []; + while (Array.isArray(firstElem) || isTypedArray(firstElem) && dtype !== "string") { + shape.push(firstElem.length); + firstElem = firstElem[0]; + } + if (Array.isArray(val) && env().getBool("TENSORLIKE_CHECK_SHAPE_CONSISTENCY")) { + deepAssertShapeConsistency(val, shape, []); + } + return shape; + } + function deepAssertShapeConsistency(val, shape, indices) { + indices = indices || []; + if (!Array.isArray(val) && !isTypedArray(val)) { + assert(shape.length === 0, () => `Element arr[${indices.join("][")}] is a primitive, but should be an array/TypedArray of ${shape[0]} elements`); + return; + } + assert(shape.length > 0, () => `Element arr[${indices.join("][")}] should be a primitive, but is an array of ${val.length} elements`); + assert(val.length === shape[0], () => `Element arr[${indices.join("][")}] should have ${shape[0]} elements, but has ${val.length} elements`); + const subShape = shape.slice(1); + for (let i = 0; i < val.length; ++i) { + deepAssertShapeConsistency(val[i], subShape, indices.concat(i)); + } + } + function assertDtype(expectedDtype, actualDType, argName, functionName) { + if (expectedDtype === "string_or_numeric") { + return; + } + if (expectedDtype == null) { + throw new Error(`Expected dtype cannot be null.`); + } + if (expectedDtype !== "numeric" && expectedDtype !== actualDType || expectedDtype === "numeric" && actualDType === "string") { + throw new Error(`Argument '${argName}' passed to '${functionName}' must be ${expectedDtype} tensor, but got ${actualDType} tensor`); + } + } + function convertToTensor(x, argName, functionName, parseAsDtype = "numeric") { + if (x instanceof Tensor) { + assertDtype(parseAsDtype, x.dtype, argName, functionName); + return x; + } + let inferredDtype = inferDtype(x); + if (inferredDtype !== "string" && ["bool", "int32", "float32"].indexOf(parseAsDtype) >= 0) { + inferredDtype = parseAsDtype; + } + assertDtype(parseAsDtype, inferredDtype, argName, functionName); + if (x == null || !isTypedArray(x) && !Array.isArray(x) && typeof x !== "number" && typeof x !== "boolean" && typeof x !== "string") { + const type = x == null ? "null" : x.constructor.name; + throw new Error(`Argument '${argName}' passed to '${functionName}' must be a Tensor or TensorLike, but got '${type}'`); + } + const inferredShape = inferShape(x, inferredDtype); + if (!isTypedArray(x) && !Array.isArray(x)) { + x = [x]; + } + const skipTypedArray = true; + const values = inferredDtype !== "string" ? toTypedArray(x, inferredDtype) : flatten(x, [], skipTypedArray); + return ENGINE.makeTensor(values, inferredShape, inferredDtype); + } + function convertToTensorArray(arg, argName, functionName, parseAsDtype = "numeric") { + if (!Array.isArray(arg)) { + throw new Error(`Argument ${argName} passed to ${functionName} must be a \`Tensor[]\` or \`TensorLike[]\``); + } + const tensors = arg; + return tensors.map((t, i) => convertToTensor(t, `${argName}[${i}]`, functionName, parseAsDtype)); + } + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var OP_SCOPE_SUFFIX = "__op"; + function op(f) { + const keys = Object.keys(f); + if (keys.length !== 1) { + throw new Error(`Please provide an object with a single key (operation name) mapping to a function. Got an object with ${keys.length} keys.`); + } + let opName = keys[0]; + const fn = f[opName]; + if (opName.endsWith("_")) { + opName = opName.substring(0, opName.length - 1); + } + opName = opName + OP_SCOPE_SUFFIX; + const f2 = (...args) => { + ENGINE.startScope(opName); + try { + const result = fn(...args); + if (isPromise(result)) { + console.error("Cannot return a Promise inside of tidy."); + } + ENGINE.endScope(result); + return result; + } catch (ex) { + ENGINE.endScope(null); + throw ex; + } + }; + Object.defineProperty(f2, "name", {value: opName, configurable: true}); + return f2; + } + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + function complex_(real4, imag4) { + const $real = convertToTensor(real4, "real", "complex"); + const $imag = convertToTensor(imag4, "imag", "complex"); + assertShapesMatch($real.shape, $imag.shape, `real and imag shapes, ${$real.shape} and ${$imag.shape}, must match in call to tf.complex().`); + const inputs = {real: $real, imag: $imag}; + return ENGINE.runKernel(Complex, inputs); + } + var complex = op({complex_}); + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + function makeTensor(values, shape, inferredShape, dtype) { + if (dtype == null) { + dtype = inferDtype(values); + } + if (dtype === "complex64") { + throw new Error(`Cannot construct a complex64 tensor directly. Please use tf.complex(real, imag).`); + } + if (!isTypedArray(values) && !Array.isArray(values) && typeof values !== "number" && typeof values !== "boolean" && typeof values !== "string") { + throw new Error("values passed to tensor(values) must be a number/boolean/string or an array of numbers/booleans/strings, or a TypedArray"); + } + if (shape != null) { + assertNonNegativeIntegerDimensions(shape); + const providedSize = sizeFromShape(shape); + const inferredSize = sizeFromShape(inferredShape); + assert(providedSize === inferredSize, () => `Based on the provided shape, [${shape}], the tensor should have ${providedSize} values but has ${inferredSize}`); + for (let i = 0; i < inferredShape.length; ++i) { + const inferred = inferredShape[i]; + const flatDimsDontMatch = i === inferredShape.length - 1 ? inferred !== sizeFromShape(shape.slice(i)) : true; + assert(inferredShape[i] === shape[i] || !flatDimsDontMatch, () => `Error creating a new Tensor. Inferred shape (${inferredShape}) does not match the provided shape (${shape}). `); + } + } + if (!isTypedArray(values) && !Array.isArray(values)) { + values = [values]; + } + shape = shape || inferredShape; + values = dtype !== "string" ? toTypedArray(values, dtype) : flatten(values, [], true); + return ENGINE.makeTensor(values, shape, dtype); + } + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + function tensor(values, shape, dtype) { + const inferredShape = inferShape(values, dtype); + return makeTensor(values, shape, inferredShape, dtype); + } + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var DTYPE_VALUE_SIZE_MAP = { + float32: 4, + float16: 2, + int32: 4, + uint16: 2, + uint8: 1, + bool: 1, + complex64: 8 + }; + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var NUM_BYTES_STRING_LENGTH = 4; + async function encodeWeights(tensors, group) { + const specs = []; + const dataPromises = []; + const names = Array.isArray(tensors) ? tensors.map((tensor2) => tensor2.name) : Object.keys(tensors); + for (let i = 0; i < names.length; ++i) { + const name = names[i]; + const t = Array.isArray(tensors) ? tensors[i].tensor : tensors[name]; + if (t.dtype !== "float32" && t.dtype !== "int32" && t.dtype !== "bool" && t.dtype !== "string" && t.dtype !== "complex64") { + throw new Error(`Unsupported dtype in weight '${name}': ${t.dtype}`); + } + const spec = {name, shape: t.shape, dtype: t.dtype}; + if (t.dtype === "string") { + const utf8bytes = new Promise(async (resolve) => { + const vals = await t.bytes(); + const totalNumBytes = vals.reduce((p2, c) => p2 + c.length, 0) + NUM_BYTES_STRING_LENGTH * vals.length; + const bytes = new Uint8Array(totalNumBytes); + let offset = 0; + for (let i2 = 0; i2 < vals.length; i2++) { + const val = vals[i2]; + const bytesOfLength = new Uint8Array(new Uint32Array([val.length]).buffer); + bytes.set(bytesOfLength, offset); + offset += NUM_BYTES_STRING_LENGTH; + bytes.set(val, offset); + offset += val.length; + } + resolve(bytes); + }); + dataPromises.push(utf8bytes); + } else { + dataPromises.push(t.data()); + } + if (group != null) { + spec.group = group; + } + specs.push(spec); + } + const tensorValues = await Promise.all(dataPromises); + return {data: concatenateTypedArrays(tensorValues), specs}; + } + function decodeWeights(buffer2, specs) { + const out = {}; + let float16Decode; + let offset = 0; + for (const spec of specs) { + const name = spec.name; + const dtype = spec.dtype; + const shape = spec.shape; + const size = sizeFromShape(shape); + let values; + if ("quantization" in spec) { + const quantization = spec.quantization; + if (quantization.dtype === "uint8" || quantization.dtype === "uint16") { + if (!("min" in quantization && "scale" in quantization)) { + throw new Error(`Weight ${spec.name} with quantization ${quantization.dtype} doesn't have corresponding metadata min and scale.`); + } + } else if (quantization.dtype === "float16") { + if (dtype !== "float32") { + throw new Error(`Weight ${spec.name} is quantized with ${quantization.dtype} which only supports weights of type float32 not ${dtype}.`); + } + } else { + throw new Error(`Weight ${spec.name} has unknown quantization dtype ${quantization.dtype}. Supported quantization dtypes are: 'uint8', 'uint16', and 'float16'.`); + } + const quantizationSizeFactor = DTYPE_VALUE_SIZE_MAP[quantization.dtype]; + const byteBuffer = buffer2.slice(offset, offset + size * quantizationSizeFactor); + const quantizedArray = quantization.dtype === "uint8" ? new Uint8Array(byteBuffer) : new Uint16Array(byteBuffer); + if (dtype === "float32") { + if (quantization.dtype === "uint8" || quantization.dtype === "uint16") { + values = new Float32Array(quantizedArray.length); + for (let i = 0; i < quantizedArray.length; i++) { + const v = quantizedArray[i]; + values[i] = v * quantization.scale + quantization.min; + } + } else if (quantization.dtype === "float16") { + if (float16Decode === void 0) { + float16Decode = getFloat16Decoder(); + } + values = float16Decode(quantizedArray); + } else { + throw new Error(`Unsupported quantization type ${quantization.dtype} for weight type float32.`); + } + } else if (dtype === "int32") { + if (quantization.dtype !== "uint8" && quantization.dtype !== "uint16") { + throw new Error(`Unsupported quantization type ${quantization.dtype} for weight type int32.`); + } + values = new Int32Array(quantizedArray.length); + for (let i = 0; i < quantizedArray.length; i++) { + const v = quantizedArray[i]; + values[i] = Math.round(v * quantization.scale + quantization.min); + } + } else { + throw new Error(`Unsupported dtype in weight '${name}': ${dtype}`); + } + offset += size * quantizationSizeFactor; + } else if (dtype === "string") { + const size2 = sizeFromShape(spec.shape); + values = []; + for (let i = 0; i < size2; i++) { + const byteLength = new Uint32Array(buffer2.slice(offset, offset + NUM_BYTES_STRING_LENGTH))[0]; + offset += NUM_BYTES_STRING_LENGTH; + const bytes = new Uint8Array(buffer2.slice(offset, offset + byteLength)); + values.push(bytes); + offset += byteLength; + } + } else { + const dtypeFactor = DTYPE_VALUE_SIZE_MAP[dtype]; + const byteBuffer = buffer2.slice(offset, offset + size * dtypeFactor); + if (dtype === "float32") { + values = new Float32Array(byteBuffer); + } else if (dtype === "int32") { + values = new Int32Array(byteBuffer); + } else if (dtype === "bool") { + values = new Uint8Array(byteBuffer); + } else if (dtype === "complex64") { + values = new Float32Array(byteBuffer); + const real4 = new Float32Array(values.length / 2); + const image3 = new Float32Array(values.length / 2); + for (let i = 0; i < real4.length; i++) { + real4[i] = values[i * 2]; + image3[i] = values[i * 2 + 1]; + } + const realTensor = tensor(real4, shape, "float32"); + const imageTensor = tensor(image3, shape, "float32"); + out[name] = complex(realTensor, imageTensor); + realTensor.dispose(); + imageTensor.dispose(); + } else { + throw new Error(`Unsupported dtype in weight '${name}': ${dtype}`); + } + offset += size * dtypeFactor; + } + if (dtype !== "complex64") { + out[name] = tensor(values, shape, dtype); + } + } + return out; + } + function concatenateTypedArrays(xs) { + if (xs === null) { + throw new Error(`Invalid input value: ${JSON.stringify(xs)}`); + } + let totalByteLength = 0; + const normalizedXs = []; + xs.forEach((x) => { + totalByteLength += x.byteLength; + normalizedXs.push(x.byteLength === x.buffer.byteLength ? x : new x.constructor(x)); + if (!(x instanceof Float32Array || x instanceof Int32Array || x instanceof Uint8Array)) { + throw new Error(`Unsupported TypedArray subtype: ${x.constructor.name}`); + } + }); + const y = new Uint8Array(totalByteLength); + let offset = 0; + normalizedXs.forEach((x) => { + y.set(new Uint8Array(x.buffer), offset); + offset += x.byteLength; + }); + return y.buffer; + } + var useNodeBuffer = typeof Buffer !== "undefined" && (typeof Blob === "undefined" || typeof atob === "undefined" || typeof btoa === "undefined"); + function stringByteLength(str) { + if (useNodeBuffer) { + return Buffer.byteLength(str); + } + return new Blob([str]).size; + } + function arrayBufferToBase64String(buffer2) { + if (useNodeBuffer) { + return Buffer.from(buffer2).toString("base64"); + } + const buf = new Uint8Array(buffer2); + let s = ""; + for (let i = 0, l = buf.length; i < l; i++) { + s += String.fromCharCode(buf[i]); + } + return btoa(s); + } + function base64StringToArrayBuffer(str) { + if (useNodeBuffer) { + const buf = Buffer.from(str, "base64"); + return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength); + } + const s = atob(str); + const buffer2 = new Uint8Array(s.length); + for (let i = 0; i < s.length; ++i) { + buffer2.set([s.charCodeAt(i)], i); + } + return buffer2.buffer; + } + function concatenateArrayBuffers(buffers) { + if (buffers.length === 1) { + return buffers[0]; + } + let totalByteLength = 0; + buffers.forEach((buffer2) => { + totalByteLength += buffer2.byteLength; + }); + const temp = new Uint8Array(totalByteLength); + let offset = 0; + buffers.forEach((buffer2) => { + temp.set(new Uint8Array(buffer2), offset); + offset += buffer2.byteLength; + }); + return temp.buffer; + } + function basename(path) { + const SEPARATOR = "/"; + path = path.trim(); + while (path.endsWith(SEPARATOR)) { + path = path.slice(0, path.length - 1); + } + const items = path.split(SEPARATOR); + return items[items.length - 1]; + } + function getModelArtifactsInfoForJSON(modelArtifacts) { + if (modelArtifacts.modelTopology instanceof ArrayBuffer) { + throw new Error("Expected JSON model topology, received ArrayBuffer."); + } + return { + dateSaved: new Date(), + modelTopologyType: "JSON", + modelTopologyBytes: modelArtifacts.modelTopology == null ? 0 : stringByteLength(JSON.stringify(modelArtifacts.modelTopology)), + weightSpecsBytes: modelArtifacts.weightSpecs == null ? 0 : stringByteLength(JSON.stringify(modelArtifacts.weightSpecs)), + weightDataBytes: modelArtifacts.weightData == null ? 0 : modelArtifacts.weightData.byteLength + }; + } + function computeFloat16MantisaTable() { + const convertMantissa = (i) => { + let m = i << 13; + let e = 0; + while ((m & 8388608) === 0) { + e -= 8388608; + m <<= 1; + } + m &= ~8388608; + e += 947912704; + return m | e; + }; + const mantisaTable = new Uint32Array(2048); + mantisaTable[0] = 0; + for (let i = 1; i < 1024; i++) { + mantisaTable[i] = convertMantissa(i); + } + for (let i = 1024; i < 2048; i++) { + mantisaTable[i] = 939524096 + (i - 1024 << 13); + } + return mantisaTable; + } + function computeFloat16ExponentTable() { + const exponentTable = new Uint32Array(64); + exponentTable[0] = 0; + exponentTable[31] = 1199570944; + exponentTable[32] = 2147483648; + exponentTable[63] = 3347054592; + for (let i = 1; i < 31; i++) { + exponentTable[i] = i << 23; + } + for (let i = 33; i < 63; i++) { + exponentTable[i] = 2147483648 + (i - 32 << 23); + } + return exponentTable; + } + function computeFloat16OffsetTable() { + const offsetTable = new Uint32Array(64); + for (let i = 0; i < 64; i++) { + offsetTable[i] = 1024; + } + offsetTable[0] = offsetTable[32] = 0; + return offsetTable; + } + function getFloat16Decoder() { + const mantisaTable = computeFloat16MantisaTable(); + const exponentTable = computeFloat16ExponentTable(); + const offsetTable = computeFloat16OffsetTable(); + return (quantizedArray) => { + const buffer2 = new ArrayBuffer(4 * quantizedArray.length); + const bufferUint32View = new Uint32Array(buffer2); + for (let index = 0; index < quantizedArray.length; index++) { + const float16Bits = quantizedArray[index]; + const float32Bits = mantisaTable[offsetTable[float16Bits >> 10] + (float16Bits & 1023)] + exponentTable[float16Bits >> 10]; + bufferUint32View[index] = float32Bits; + } + return new Float32Array(buffer2); + }; + } + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var IORouterRegistry = class { + constructor() { + this.saveRouters = []; + this.loadRouters = []; + } + static getInstance() { + if (IORouterRegistry.instance == null) { + IORouterRegistry.instance = new IORouterRegistry(); + } + return IORouterRegistry.instance; + } + static registerSaveRouter(saveRouter) { + IORouterRegistry.getInstance().saveRouters.push(saveRouter); + } + static registerLoadRouter(loadRouter) { + IORouterRegistry.getInstance().loadRouters.push(loadRouter); + } + static getSaveHandlers(url) { + return IORouterRegistry.getHandlers(url, "save"); + } + static getLoadHandlers(url, loadOptions) { + return IORouterRegistry.getHandlers(url, "load", loadOptions); + } + static getHandlers(url, handlerType, loadOptions) { + const validHandlers = []; + const routers = handlerType === "load" ? IORouterRegistry.getInstance().loadRouters : IORouterRegistry.getInstance().saveRouters; + routers.forEach((router) => { + const handler = router(url, loadOptions); + if (handler !== null) { + validHandlers.push(handler); + } + }); + return validHandlers; + } + }; + var registerSaveRouter = (loudRouter) => IORouterRegistry.registerSaveRouter(loudRouter); + var registerLoadRouter = (loudRouter) => IORouterRegistry.registerLoadRouter(loudRouter); + var getSaveHandlers = (url) => IORouterRegistry.getSaveHandlers(url); + var getLoadHandlers = (url, loadOptions) => IORouterRegistry.getLoadHandlers(url, loadOptions); + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var DATABASE_NAME = "tensorflowjs"; + var DATABASE_VERSION = 1; + var MODEL_STORE_NAME = "models_store"; + var INFO_STORE_NAME = "model_info_store"; + function getIndexedDBFactory() { + if (!env().getBool("IS_BROWSER")) { + throw new Error("Failed to obtain IndexedDB factory because the current environmentis not a web browser."); + } + const theWindow = typeof window === "undefined" ? self : window; + const factory = theWindow.indexedDB || theWindow.mozIndexedDB || theWindow.webkitIndexedDB || theWindow.msIndexedDB || theWindow.shimIndexedDB; + if (factory == null) { + throw new Error("The current browser does not appear to support IndexedDB."); + } + return factory; + } + function setUpDatabase(openRequest) { + const db = openRequest.result; + db.createObjectStore(MODEL_STORE_NAME, {keyPath: "modelPath"}); + db.createObjectStore(INFO_STORE_NAME, {keyPath: "modelPath"}); + } + var BrowserIndexedDB = class { + constructor(modelPath) { + this.indexedDB = getIndexedDBFactory(); + if (modelPath == null || !modelPath) { + throw new Error("For IndexedDB, modelPath must not be null, undefined or empty."); + } + this.modelPath = modelPath; + } + async save(modelArtifacts) { + if (modelArtifacts.modelTopology instanceof ArrayBuffer) { + throw new Error("BrowserLocalStorage.save() does not support saving model topology in binary formats yet."); + } + return this.databaseAction(this.modelPath, modelArtifacts); + } + async load() { + return this.databaseAction(this.modelPath); + } + databaseAction(modelPath, modelArtifacts) { + return new Promise((resolve, reject) => { + const openRequest = this.indexedDB.open(DATABASE_NAME, DATABASE_VERSION); + openRequest.onupgradeneeded = () => setUpDatabase(openRequest); + openRequest.onsuccess = () => { + const db = openRequest.result; + if (modelArtifacts == null) { + const modelTx = db.transaction(MODEL_STORE_NAME, "readonly"); + const modelStore = modelTx.objectStore(MODEL_STORE_NAME); + const getRequest = modelStore.get(this.modelPath); + getRequest.onsuccess = () => { + if (getRequest.result == null) { + db.close(); + return reject(new Error(`Cannot find model with path '${this.modelPath}' in IndexedDB.`)); + } else { + resolve(getRequest.result.modelArtifacts); + } + }; + getRequest.onerror = (error) => { + db.close(); + return reject(getRequest.error); + }; + modelTx.oncomplete = () => db.close(); + } else { + const modelArtifactsInfo = getModelArtifactsInfoForJSON(modelArtifacts); + const infoTx = db.transaction(INFO_STORE_NAME, "readwrite"); + let infoStore = infoTx.objectStore(INFO_STORE_NAME); + const putInfoRequest = infoStore.put({modelPath: this.modelPath, modelArtifactsInfo}); + let modelTx; + putInfoRequest.onsuccess = () => { + modelTx = db.transaction(MODEL_STORE_NAME, "readwrite"); + const modelStore = modelTx.objectStore(MODEL_STORE_NAME); + const putModelRequest = modelStore.put({ + modelPath: this.modelPath, + modelArtifacts, + modelArtifactsInfo + }); + putModelRequest.onsuccess = () => resolve({modelArtifactsInfo}); + putModelRequest.onerror = (error) => { + infoStore = infoTx.objectStore(INFO_STORE_NAME); + const deleteInfoRequest = infoStore.delete(this.modelPath); + deleteInfoRequest.onsuccess = () => { + db.close(); + return reject(putModelRequest.error); + }; + deleteInfoRequest.onerror = (error2) => { + db.close(); + return reject(putModelRequest.error); + }; + }; + }; + putInfoRequest.onerror = (error) => { + db.close(); + return reject(putInfoRequest.error); + }; + infoTx.oncomplete = () => { + if (modelTx == null) { + db.close(); + } else { + modelTx.oncomplete = () => db.close(); + } + }; + } + }; + openRequest.onerror = (error) => reject(openRequest.error); + }); + } + }; + BrowserIndexedDB.URL_SCHEME = "indexeddb://"; + var indexedDBRouter = (url) => { + if (!env().getBool("IS_BROWSER")) { + return null; + } else { + if (!Array.isArray(url) && url.startsWith(BrowserIndexedDB.URL_SCHEME)) { + return browserIndexedDB(url.slice(BrowserIndexedDB.URL_SCHEME.length)); + } else { + return null; + } + } + }; + IORouterRegistry.registerSaveRouter(indexedDBRouter); + IORouterRegistry.registerLoadRouter(indexedDBRouter); + function browserIndexedDB(modelPath) { + return new BrowserIndexedDB(modelPath); + } + function maybeStripScheme(key) { + return key.startsWith(BrowserIndexedDB.URL_SCHEME) ? key.slice(BrowserIndexedDB.URL_SCHEME.length) : key; + } + var BrowserIndexedDBManager = class { + constructor() { + this.indexedDB = getIndexedDBFactory(); + } + async listModels() { + return new Promise((resolve, reject) => { + const openRequest = this.indexedDB.open(DATABASE_NAME, DATABASE_VERSION); + openRequest.onupgradeneeded = () => setUpDatabase(openRequest); + openRequest.onsuccess = () => { + const db = openRequest.result; + const tx = db.transaction(INFO_STORE_NAME, "readonly"); + const store = tx.objectStore(INFO_STORE_NAME); + const getAllInfoRequest = store.getAll(); + getAllInfoRequest.onsuccess = () => { + const out = {}; + for (const item of getAllInfoRequest.result) { + out[item.modelPath] = item.modelArtifactsInfo; + } + resolve(out); + }; + getAllInfoRequest.onerror = (error) => { + db.close(); + return reject(getAllInfoRequest.error); + }; + tx.oncomplete = () => db.close(); + }; + openRequest.onerror = (error) => reject(openRequest.error); + }); + } + async removeModel(path) { + path = maybeStripScheme(path); + return new Promise((resolve, reject) => { + const openRequest = this.indexedDB.open(DATABASE_NAME, DATABASE_VERSION); + openRequest.onupgradeneeded = () => setUpDatabase(openRequest); + openRequest.onsuccess = () => { + const db = openRequest.result; + const infoTx = db.transaction(INFO_STORE_NAME, "readwrite"); + const infoStore = infoTx.objectStore(INFO_STORE_NAME); + const getInfoRequest = infoStore.get(path); + let modelTx; + getInfoRequest.onsuccess = () => { + if (getInfoRequest.result == null) { + db.close(); + return reject(new Error(`Cannot find model with path '${path}' in IndexedDB.`)); + } else { + const deleteInfoRequest = infoStore.delete(path); + const deleteModelData = () => { + modelTx = db.transaction(MODEL_STORE_NAME, "readwrite"); + const modelStore = modelTx.objectStore(MODEL_STORE_NAME); + const deleteModelRequest = modelStore.delete(path); + deleteModelRequest.onsuccess = () => resolve(getInfoRequest.result.modelArtifactsInfo); + deleteModelRequest.onerror = (error) => reject(getInfoRequest.error); + }; + deleteInfoRequest.onsuccess = deleteModelData; + deleteInfoRequest.onerror = (error) => { + deleteModelData(); + db.close(); + return reject(getInfoRequest.error); + }; + } + }; + getInfoRequest.onerror = (error) => { + db.close(); + return reject(getInfoRequest.error); + }; + infoTx.oncomplete = () => { + if (modelTx == null) { + db.close(); + } else { + modelTx.oncomplete = () => db.close(); + } + }; + }; + openRequest.onerror = (error) => reject(openRequest.error); + }); + } + }; + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var PATH_SEPARATOR = "/"; + var PATH_PREFIX = "tensorflowjs_models"; + var INFO_SUFFIX = "info"; + var MODEL_TOPOLOGY_SUFFIX = "model_topology"; + var WEIGHT_SPECS_SUFFIX = "weight_specs"; + var WEIGHT_DATA_SUFFIX = "weight_data"; + var MODEL_METADATA_SUFFIX = "model_metadata"; + function getModelKeys(path) { + return { + info: [PATH_PREFIX, path, INFO_SUFFIX].join(PATH_SEPARATOR), + topology: [PATH_PREFIX, path, MODEL_TOPOLOGY_SUFFIX].join(PATH_SEPARATOR), + weightSpecs: [PATH_PREFIX, path, WEIGHT_SPECS_SUFFIX].join(PATH_SEPARATOR), + weightData: [PATH_PREFIX, path, WEIGHT_DATA_SUFFIX].join(PATH_SEPARATOR), + modelMetadata: [PATH_PREFIX, path, MODEL_METADATA_SUFFIX].join(PATH_SEPARATOR) + }; + } + function getModelPathFromKey(key) { + const items = key.split(PATH_SEPARATOR); + if (items.length < 3) { + throw new Error(`Invalid key format: ${key}`); + } + return items.slice(1, items.length - 1).join(PATH_SEPARATOR); + } + function maybeStripScheme2(key) { + return key.startsWith(BrowserLocalStorage.URL_SCHEME) ? key.slice(BrowserLocalStorage.URL_SCHEME.length) : key; + } + var BrowserLocalStorage = class { + constructor(modelPath) { + if (!env().getBool("IS_BROWSER") || typeof window === "undefined" || typeof window.localStorage === "undefined") { + throw new Error("The current environment does not support local storage."); + } + this.LS = window.localStorage; + if (modelPath == null || !modelPath) { + throw new Error("For local storage, modelPath must not be null, undefined or empty."); + } + this.modelPath = modelPath; + this.keys = getModelKeys(this.modelPath); + } + async save(modelArtifacts) { + if (modelArtifacts.modelTopology instanceof ArrayBuffer) { + throw new Error("BrowserLocalStorage.save() does not support saving model topology in binary formats yet."); + } else { + const topology = JSON.stringify(modelArtifacts.modelTopology); + const weightSpecs = JSON.stringify(modelArtifacts.weightSpecs); + const modelArtifactsInfo = getModelArtifactsInfoForJSON(modelArtifacts); + try { + this.LS.setItem(this.keys.info, JSON.stringify(modelArtifactsInfo)); + this.LS.setItem(this.keys.topology, topology); + this.LS.setItem(this.keys.weightSpecs, weightSpecs); + this.LS.setItem(this.keys.weightData, arrayBufferToBase64String(modelArtifacts.weightData)); + const result = { + format: modelArtifacts.format, + generatedBy: modelArtifacts.generatedBy, + convertedBy: modelArtifacts.convertedBy + }; + if (modelArtifacts.signature != null) { + result.signature = modelArtifacts.signature; + } + if (modelArtifacts.userDefinedMetadata != null) { + result.userDefinedMetadata = modelArtifacts.userDefinedMetadata; + } + if (modelArtifacts.modelInitializer != null) { + result.modelInitializer = modelArtifacts.modelInitializer; + } + this.LS.setItem(this.keys.modelMetadata, JSON.stringify(result)); + return {modelArtifactsInfo}; + } catch (err) { + this.LS.removeItem(this.keys.info); + this.LS.removeItem(this.keys.topology); + this.LS.removeItem(this.keys.weightSpecs); + this.LS.removeItem(this.keys.weightData); + this.LS.removeItem(this.keys.modelMetadata); + throw new Error(`Failed to save model '${this.modelPath}' to local storage: size quota being exceeded is a possible cause of this failure: modelTopologyBytes=${modelArtifactsInfo.modelTopologyBytes}, weightSpecsBytes=${modelArtifactsInfo.weightSpecsBytes}, weightDataBytes=${modelArtifactsInfo.weightDataBytes}.`); + } + } + } + async load() { + const info2 = JSON.parse(this.LS.getItem(this.keys.info)); + if (info2 == null) { + throw new Error(`In local storage, there is no model with name '${this.modelPath}'`); + } + if (info2.modelTopologyType !== "JSON") { + throw new Error("BrowserLocalStorage does not support loading non-JSON model topology yet."); + } + const out = {}; + const topology = JSON.parse(this.LS.getItem(this.keys.topology)); + if (topology == null) { + throw new Error(`In local storage, the topology of model '${this.modelPath}' is missing.`); + } + out.modelTopology = topology; + const weightSpecs = JSON.parse(this.LS.getItem(this.keys.weightSpecs)); + if (weightSpecs == null) { + throw new Error(`In local storage, the weight specs of model '${this.modelPath}' are missing.`); + } + out.weightSpecs = weightSpecs; + const metadataString = this.LS.getItem(this.keys.modelMetadata); + if (metadataString != null) { + const metadata = JSON.parse(metadataString); + out.format = metadata["format"]; + out.generatedBy = metadata["generatedBy"]; + out.convertedBy = metadata["convertedBy"]; + if (metadata["signature"] != null) { + out.signature = metadata["signature"]; + } + if (metadata["userDefinedMetadata"] != null) { + out.userDefinedMetadata = metadata["userDefinedMetadata"]; + } + if (metadata["modelInitializer"] != null) { + out.modelInitializer = metadata["modelInitializer"]; + } + } + const weightDataBase64 = this.LS.getItem(this.keys.weightData); + if (weightDataBase64 == null) { + throw new Error(`In local storage, the binary weight values of model '${this.modelPath}' are missing.`); + } + out.weightData = base64StringToArrayBuffer(weightDataBase64); + return out; + } + }; + BrowserLocalStorage.URL_SCHEME = "localstorage://"; + var localStorageRouter = (url) => { + if (!env().getBool("IS_BROWSER")) { + return null; + } else { + if (!Array.isArray(url) && url.startsWith(BrowserLocalStorage.URL_SCHEME)) { + return browserLocalStorage(url.slice(BrowserLocalStorage.URL_SCHEME.length)); + } else { + return null; + } + } + }; + IORouterRegistry.registerSaveRouter(localStorageRouter); + IORouterRegistry.registerLoadRouter(localStorageRouter); + function browserLocalStorage(modelPath) { + return new BrowserLocalStorage(modelPath); + } + var BrowserLocalStorageManager = class { + constructor() { + assert(env().getBool("IS_BROWSER"), () => "Current environment is not a web browser"); + assert(typeof window === "undefined" || typeof window.localStorage !== "undefined", () => "Current browser does not appear to support localStorage"); + this.LS = window.localStorage; + } + async listModels() { + const out = {}; + const prefix = PATH_PREFIX + PATH_SEPARATOR; + const suffix = PATH_SEPARATOR + INFO_SUFFIX; + for (let i = 0; i < this.LS.length; ++i) { + const key = this.LS.key(i); + if (key.startsWith(prefix) && key.endsWith(suffix)) { + const modelPath = getModelPathFromKey(key); + out[modelPath] = JSON.parse(this.LS.getItem(key)); + } + } + return out; + } + async removeModel(path) { + path = maybeStripScheme2(path); + const keys = getModelKeys(path); + if (this.LS.getItem(keys.info) == null) { + throw new Error(`Cannot find model at path '${path}'`); + } + const info2 = JSON.parse(this.LS.getItem(keys.info)); + this.LS.removeItem(keys.info); + this.LS.removeItem(keys.topology); + this.LS.removeItem(keys.weightSpecs); + this.LS.removeItem(keys.weightData); + return info2; + } + }; + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var URL_SCHEME_SUFFIX = "://"; + var ModelStoreManagerRegistry = class { + constructor() { + this.managers = {}; + } + static getInstance() { + if (ModelStoreManagerRegistry.instance == null) { + ModelStoreManagerRegistry.instance = new ModelStoreManagerRegistry(); + } + return ModelStoreManagerRegistry.instance; + } + static registerManager(scheme, manager) { + assert(scheme != null, () => "scheme must not be undefined or null."); + if (scheme.endsWith(URL_SCHEME_SUFFIX)) { + scheme = scheme.slice(0, scheme.indexOf(URL_SCHEME_SUFFIX)); + } + assert(scheme.length > 0, () => "scheme must not be an empty string."); + const registry = ModelStoreManagerRegistry.getInstance(); + assert(registry.managers[scheme] == null, () => `A model store manager is already registered for scheme '${scheme}'.`); + registry.managers[scheme] = manager; + } + static getManager(scheme) { + const manager = this.getInstance().managers[scheme]; + if (manager == null) { + throw new Error(`Cannot find model manager for scheme '${scheme}'`); + } + return manager; + } + static getSchemes() { + return Object.keys(this.getInstance().managers); + } + }; + function parseURL(url) { + if (url.indexOf(URL_SCHEME_SUFFIX) === -1) { + throw new Error(`The url string provided does not contain a scheme. Supported schemes are: ${ModelStoreManagerRegistry.getSchemes().join(",")}`); + } + return { + scheme: url.split(URL_SCHEME_SUFFIX)[0], + path: url.split(URL_SCHEME_SUFFIX)[1] + }; + } + async function cloneModelInternal(sourceURL, destURL, deleteSource = false) { + assert(sourceURL !== destURL, () => `Old path and new path are the same: '${sourceURL}'`); + const loadHandlers = IORouterRegistry.getLoadHandlers(sourceURL); + assert(loadHandlers.length > 0, () => `Copying failed because no load handler is found for source URL ${sourceURL}.`); + assert(loadHandlers.length < 2, () => `Copying failed because more than one (${loadHandlers.length}) load handlers for source URL ${sourceURL}.`); + const loadHandler = loadHandlers[0]; + const saveHandlers = IORouterRegistry.getSaveHandlers(destURL); + assert(saveHandlers.length > 0, () => `Copying failed because no save handler is found for destination URL ${destURL}.`); + assert(saveHandlers.length < 2, () => `Copying failed because more than one (${loadHandlers.length}) save handlers for destination URL ${destURL}.`); + const saveHandler = saveHandlers[0]; + const sourceScheme = parseURL(sourceURL).scheme; + const sourcePath = parseURL(sourceURL).path; + const sameMedium = sourceScheme === parseURL(sourceURL).scheme; + const modelArtifacts = await loadHandler.load(); + if (deleteSource && sameMedium) { + await ModelStoreManagerRegistry.getManager(sourceScheme).removeModel(sourcePath); + } + const saveResult = await saveHandler.save(modelArtifacts); + if (deleteSource && !sameMedium) { + await ModelStoreManagerRegistry.getManager(sourceScheme).removeModel(sourcePath); + } + return saveResult.modelArtifactsInfo; + } + async function listModels() { + const schemes = ModelStoreManagerRegistry.getSchemes(); + const out = {}; + for (const scheme of schemes) { + const schemeOut = await ModelStoreManagerRegistry.getManager(scheme).listModels(); + for (const path in schemeOut) { + const url = scheme + URL_SCHEME_SUFFIX + path; + out[url] = schemeOut[path]; + } + } + return out; + } + async function removeModel(url) { + const schemeAndPath = parseURL(url); + const manager = ModelStoreManagerRegistry.getManager(schemeAndPath.scheme); + return manager.removeModel(schemeAndPath.path); + } + async function copyModel(sourceURL, destURL) { + const deleteSource = false; + return cloneModelInternal(sourceURL, destURL, deleteSource); + } + async function moveModel(sourceURL, destURL) { + const deleteSource = true; + return cloneModelInternal(sourceURL, destURL, deleteSource); + } + /** + * @license + * Copyright 2019 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var PlatformBrowser = class { + fetch(path, init2) { + return fetch(path, init2); + } + now() { + return performance.now(); + } + encode(text, encoding) { + if (encoding !== "utf-8" && encoding !== "utf8") { + throw new Error(`Browser's encoder only supports utf-8, but got ${encoding}`); + } + if (this.textEncoder == null) { + this.textEncoder = new TextEncoder(); + } + return this.textEncoder.encode(text); + } + decode(bytes, encoding) { + return new TextDecoder(encoding).decode(bytes); + } + }; + if (env().get("IS_BROWSER")) { + env().setPlatform("browser", new PlatformBrowser()); + try { + ModelStoreManagerRegistry.registerManager(BrowserLocalStorage.URL_SCHEME, new BrowserLocalStorageManager()); + } catch (err) { + } + try { + ModelStoreManagerRegistry.registerManager(BrowserIndexedDB.URL_SCHEME, new BrowserIndexedDBManager()); + } catch (err) { + } + } + /** + * @license + * Copyright 2019 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var getNodeFetch = { + importFetch: () => require_browser() + }; + var systemFetch; + var PlatformNode = class { + constructor() { + this.util = require("util"); + this.textEncoder = new this.util.TextEncoder(); + } + fetch(path, requestInits) { + if (env().global.fetch != null) { + return env().global.fetch(path, requestInits); + } + if (systemFetch == null) { + systemFetch = getNodeFetch.importFetch(); + } + return systemFetch(path, requestInits); + } + now() { + const time2 = process.hrtime(); + return time2[0] * 1e3 + time2[1] / 1e6; + } + encode(text, encoding) { + if (encoding !== "utf-8" && encoding !== "utf8") { + throw new Error(`Node built-in encoder only supports utf-8, but got ${encoding}`); + } + return this.textEncoder.encode(text); + } + decode(bytes, encoding) { + if (bytes.length === 0) { + return ""; + } + return new this.util.TextDecoder(encoding).decode(bytes); + } + }; + if (env().get("IS_NODE")) { + env().setPlatform("node", new PlatformNode()); + } + /** + * @license + * Copyright 2020 Google Inc. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + function buffer(shape, dtype = "float32", values) { + dtype = dtype || "float32"; + assertNonNegativeIntegerDimensions(shape); + return new TensorBuffer(shape, dtype, values); + } + /** + * @license + * Copyright 2020 Google Inc. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + function cast_(x, dtype) { + const $x = convertToTensor(x, "x", "cast"); + if (!isValidDtype(dtype)) { + throw new Error(`Failed to cast to unknown dtype ${dtype}`); + } + if (dtype === "string" && $x.dtype !== "string" || dtype !== "string" && $x.dtype === "string") { + throw new Error("Only strings can be casted to strings"); + } + const inputs = {x: $x}; + const attrs = {dtype}; + return ENGINE.runKernel(Cast, inputs, attrs); + } + var cast = op({cast_}); + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + function clone_(x) { + const $x = convertToTensor(x, "x", "clone", "string_or_numeric"); + const inputs = {x: $x}; + return ENGINE.runKernel(Identity, inputs); + } + var clone = op({clone_}); + /** + * @license + * Copyright 2020 Google Inc. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + function print2(x, verbose = false) { + console.log(x.toString(verbose)); + } + /** + * @license + * Copyright 2020 Google Inc. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + getOrMakeEngine(); + var opHandler2 = { + buffer, + cast, + clone, + print: print2 + }; + setOpHandler(opHandler2); + var io_exports = {}; + __export2(io_exports, { + browserFiles: () => browserFiles, + browserHTTPRequest: () => browserHTTPRequest, + concatenateArrayBuffers: () => concatenateArrayBuffers, + copyModel: () => copyModel, + decodeWeights: () => decodeWeights, + encodeWeights: () => encodeWeights, + fromMemory: () => fromMemory, + getLoadHandlers: () => getLoadHandlers, + getModelArtifactsInfoForJSON: () => getModelArtifactsInfoForJSON, + getSaveHandlers: () => getSaveHandlers, + http: () => http, + isHTTPScheme: () => isHTTPScheme, + listModels: () => listModels, + loadWeights: () => loadWeights, + moveModel: () => moveModel, + registerLoadRouter: () => registerLoadRouter, + registerSaveRouter: () => registerSaveRouter, + removeModel: () => removeModel, + weightsLoaderFactory: () => weightsLoaderFactory, + withSaveHandler: () => withSaveHandler + }); + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var DEFAULT_FILE_NAME_PREFIX = "model"; + var DEFAULT_JSON_EXTENSION_NAME = ".json"; + var DEFAULT_WEIGHT_DATA_EXTENSION_NAME = ".weights.bin"; + function defer(f) { + return new Promise((resolve) => setTimeout(resolve)).then(f); + } + var BrowserDownloads = class { + constructor(fileNamePrefix) { + if (!env().getBool("IS_BROWSER")) { + throw new Error("browserDownloads() cannot proceed because the current environment is not a browser."); + } + if (fileNamePrefix.startsWith(BrowserDownloads.URL_SCHEME)) { + fileNamePrefix = fileNamePrefix.slice(BrowserDownloads.URL_SCHEME.length); + } + if (fileNamePrefix == null || fileNamePrefix.length === 0) { + fileNamePrefix = DEFAULT_FILE_NAME_PREFIX; + } + this.modelTopologyFileName = fileNamePrefix + DEFAULT_JSON_EXTENSION_NAME; + this.weightDataFileName = fileNamePrefix + DEFAULT_WEIGHT_DATA_EXTENSION_NAME; + } + async save(modelArtifacts) { + if (typeof document === "undefined") { + throw new Error("Browser downloads are not supported in this environment since `document` is not present"); + } + const weightsURL = window.URL.createObjectURL(new Blob([modelArtifacts.weightData], {type: "application/octet-stream"})); + if (modelArtifacts.modelTopology instanceof ArrayBuffer) { + throw new Error("BrowserDownloads.save() does not support saving model topology in binary formats yet."); + } else { + const weightsManifest = [{ + paths: ["./" + this.weightDataFileName], + weights: modelArtifacts.weightSpecs + }]; + const modelTopologyAndWeightManifest = { + modelTopology: modelArtifacts.modelTopology, + format: modelArtifacts.format, + generatedBy: modelArtifacts.generatedBy, + convertedBy: modelArtifacts.convertedBy, + weightsManifest + }; + if (modelArtifacts.signature != null) { + modelTopologyAndWeightManifest.signature = modelArtifacts.signature; + } + if (modelArtifacts.userDefinedMetadata != null) { + modelTopologyAndWeightManifest.userDefinedMetadata = modelArtifacts.userDefinedMetadata; + } + if (modelArtifacts.modelInitializer != null) { + modelTopologyAndWeightManifest.modelInitializer = modelArtifacts.modelInitializer; + } + const modelTopologyAndWeightManifestURL = window.URL.createObjectURL(new Blob([JSON.stringify(modelTopologyAndWeightManifest)], {type: "application/json"})); + const jsonAnchor = this.jsonAnchor == null ? document.createElement("a") : this.jsonAnchor; + jsonAnchor.download = this.modelTopologyFileName; + jsonAnchor.href = modelTopologyAndWeightManifestURL; + await defer(() => jsonAnchor.dispatchEvent(new MouseEvent("click"))); + if (modelArtifacts.weightData != null) { + const weightDataAnchor = this.weightDataAnchor == null ? document.createElement("a") : this.weightDataAnchor; + weightDataAnchor.download = this.weightDataFileName; + weightDataAnchor.href = weightsURL; + await defer(() => weightDataAnchor.dispatchEvent(new MouseEvent("click"))); + } + return {modelArtifactsInfo: getModelArtifactsInfoForJSON(modelArtifacts)}; + } + } + }; + BrowserDownloads.URL_SCHEME = "downloads://"; + var BrowserFiles = class { + constructor(files) { + if (files == null || files.length < 1) { + throw new Error(`When calling browserFiles, at least 1 file is required, but received ${files}`); + } + this.files = files; + } + async load() { + const jsonFile = this.files[0]; + const weightFiles = this.files.slice(1); + return new Promise((resolve, reject) => { + const jsonReader = new FileReader(); + jsonReader.onload = (event) => { + const modelJSON = JSON.parse(event.target.result); + const modelTopology = modelJSON.modelTopology; + if (modelTopology == null) { + reject(new Error(`modelTopology field is missing from file ${jsonFile.name}`)); + return; + } + if (weightFiles.length === 0) { + resolve({modelTopology}); + } + const weightsManifest = modelJSON.weightsManifest; + if (weightsManifest == null) { + reject(new Error(`weightManifest field is missing from file ${jsonFile.name}`)); + return; + } + let pathToFile; + try { + pathToFile = this.checkManifestAndWeightFiles(weightsManifest, weightFiles); + } catch (err) { + reject(err); + return; + } + const weightSpecs = []; + const paths = []; + const perFileBuffers = []; + weightsManifest.forEach((weightsGroup) => { + weightsGroup.paths.forEach((path) => { + paths.push(path); + perFileBuffers.push(null); + }); + weightSpecs.push(...weightsGroup.weights); + }); + weightsManifest.forEach((weightsGroup) => { + weightsGroup.paths.forEach((path) => { + const weightFileReader = new FileReader(); + weightFileReader.onload = (event2) => { + const weightData = event2.target.result; + const index = paths.indexOf(path); + perFileBuffers[index] = weightData; + if (perFileBuffers.indexOf(null) === -1) { + const result = { + modelTopology, + weightSpecs, + weightData: concatenateArrayBuffers(perFileBuffers), + format: modelJSON.format, + generatedBy: modelJSON.generatedBy, + convertedBy: modelJSON.convertedBy + }; + if (modelJSON.signature != null) { + result.signature = modelJSON.signature; + } + if (modelJSON.userDefinedMetadata != null) { + result.userDefinedMetadata = modelJSON.userDefinedMetadata; + } + if (modelJSON.modelInitializer != null) { + result.modelInitializer = modelJSON.modelInitializer; + } + resolve(result); + } + }; + weightFileReader.onerror = (error) => reject(`Failed to weights data from file of path '${path}'.`); + weightFileReader.readAsArrayBuffer(pathToFile[path]); + }); + }); + }; + jsonReader.onerror = (error) => reject(`Failed to read model topology and weights manifest JSON from file '${jsonFile.name}'. BrowserFiles supports loading Keras-style tf.Model artifacts only.`); + jsonReader.readAsText(jsonFile); + }); + } + checkManifestAndWeightFiles(manifest, files) { + const basenames = []; + const fileNames = files.map((file) => basename(file.name)); + const pathToFile = {}; + for (const group of manifest) { + group.paths.forEach((path) => { + const pathBasename = basename(path); + if (basenames.indexOf(pathBasename) !== -1) { + throw new Error(`Duplicate file basename found in weights manifest: '${pathBasename}'`); + } + basenames.push(pathBasename); + if (fileNames.indexOf(pathBasename) === -1) { + throw new Error(`Weight file with basename '${pathBasename}' is not provided.`); + } else { + pathToFile[path] = files[fileNames.indexOf(pathBasename)]; + } + }); + } + if (basenames.length !== files.length) { + throw new Error(`Mismatch in the number of files in weights manifest (${basenames.length}) and the number of weight files provided (${files.length}).`); + } + return pathToFile; + } + }; + var browserDownloadsRouter = (url) => { + if (!env().getBool("IS_BROWSER")) { + return null; + } else { + if (!Array.isArray(url) && url.startsWith(BrowserDownloads.URL_SCHEME)) { + return browserDownloads(url.slice(BrowserDownloads.URL_SCHEME.length)); + } else { + return null; + } + } + }; + IORouterRegistry.registerSaveRouter(browserDownloadsRouter); + function browserDownloads(fileNamePrefix = "model") { + return new BrowserDownloads(fileNamePrefix); + } + function browserFiles(files) { + return new BrowserFiles(files); + } + /** + * @license + * Copyright 2019 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + function monitorPromisesProgress(promises, onProgress, startFraction, endFraction) { + checkPromises(promises); + startFraction = startFraction == null ? 0 : startFraction; + endFraction = endFraction == null ? 1 : endFraction; + checkFraction(startFraction, endFraction); + let resolvedPromise = 0; + const registerMonitor = (promise) => { + promise.then((value) => { + const fraction = startFraction + ++resolvedPromise / promises.length * (endFraction - startFraction); + onProgress(fraction); + return value; + }); + return promise; + }; + function checkPromises(promises2) { + assert(promises2 != null && Array.isArray(promises2) && promises2.length > 0, () => "promises must be a none empty array"); + } + function checkFraction(startFraction2, endFraction2) { + assert(startFraction2 >= 0 && startFraction2 <= 1, () => `Progress fraction must be in range [0, 1], but got startFraction ${startFraction2}`); + assert(endFraction2 >= 0 && endFraction2 <= 1, () => `Progress fraction must be in range [0, 1], but got endFraction ${endFraction2}`); + assert(endFraction2 >= startFraction2, () => `startFraction must be no more than endFraction, but got startFraction ${startFraction2} and endFraction ${endFraction2}`); + } + return Promise.all(promises.map(registerMonitor)); + } + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + async function loadWeightsAsArrayBuffer(fetchURLs, loadOptions) { + if (loadOptions == null) { + loadOptions = {}; + } + const fetchFunc = loadOptions.fetchFunc == null ? env().platform.fetch : loadOptions.fetchFunc; + const requests = fetchURLs.map((fetchURL) => fetchFunc(fetchURL, loadOptions.requestInit, {isBinary: true})); + const fetchStartFraction = 0; + const fetchEndFraction = 0.5; + const responses = loadOptions.onProgress == null ? await Promise.all(requests) : await monitorPromisesProgress(requests, loadOptions.onProgress, fetchStartFraction, fetchEndFraction); + const bufferPromises = responses.map((response) => response.arrayBuffer()); + const bufferStartFraction = 0.5; + const bufferEndFraction = 1; + const buffers = loadOptions.onProgress == null ? await Promise.all(bufferPromises) : await monitorPromisesProgress(bufferPromises, loadOptions.onProgress, bufferStartFraction, bufferEndFraction); + return buffers; + } + async function loadWeights(manifest, filePathPrefix = "", weightNames, requestInit) { + const fetchWeights = (fetchUrls) => loadWeightsAsArrayBuffer(fetchUrls, {requestInit}); + const loadWeights2 = weightsLoaderFactory(fetchWeights); + return loadWeights2(manifest, filePathPrefix, weightNames); + } + function weightsLoaderFactory(fetchWeightsFunction) { + return async (manifest, filePathPrefix = "", weightNames) => { + const groupIndicesToFetchMap = manifest.map(() => false); + const groupWeightsToFetch = {}; + const weightsFound = weightNames != null ? weightNames.map(() => false) : []; + const allManifestWeightNames = []; + manifest.forEach((manifestGroupConfig, groupIndex) => { + let groupOffset = 0; + manifestGroupConfig.weights.forEach((weightsEntry) => { + const rawDtype = "quantization" in weightsEntry ? weightsEntry.quantization.dtype : weightsEntry.dtype; + const weightsBytes = DTYPE_VALUE_SIZE_MAP[rawDtype] * sizeFromShape(weightsEntry.shape); + const enqueueWeightsForFetchingFn = () => { + groupIndicesToFetchMap[groupIndex] = true; + if (groupWeightsToFetch[groupIndex] == null) { + groupWeightsToFetch[groupIndex] = []; + } + groupWeightsToFetch[groupIndex].push({ + manifestEntry: weightsEntry, + groupOffset, + sizeBytes: weightsBytes + }); + }; + if (weightNames != null) { + weightNames.forEach((weightName, weightIndex) => { + if (weightName === weightsEntry.name) { + enqueueWeightsForFetchingFn(); + weightsFound[weightIndex] = true; + } + }); + } else { + enqueueWeightsForFetchingFn(); + } + allManifestWeightNames.push(weightsEntry.name); + groupOffset += weightsBytes; + }); + }); + if (!weightsFound.every((found) => found)) { + const weightsNotFound = weightNames.filter((_, i) => !weightsFound[i]); + throw new Error(`Could not find weights in manifest with names: ${weightsNotFound.join(", ")}. +Manifest JSON has weights with names: ${allManifestWeightNames.join(", ")}.`); + } + const groupIndicesToFetch = groupIndicesToFetchMap.reduce((accumulator, shouldFetch, i) => { + if (shouldFetch) { + accumulator.push(i); + } + return accumulator; + }, []); + const fetchUrls = []; + groupIndicesToFetch.forEach((i) => { + manifest[i].paths.forEach((filepath) => { + const fetchUrl = filePathPrefix + (!filePathPrefix.endsWith("/") ? "/" : "") + filepath; + fetchUrls.push(fetchUrl); + }); + }); + const buffers = await fetchWeightsFunction(fetchUrls); + const weightsTensorMap = {}; + let bufferIndexOffset = 0; + groupIndicesToFetch.forEach((i) => { + const numBuffers = manifest[i].paths.length; + let groupBytes = 0; + for (let i2 = 0; i2 < numBuffers; i2++) { + groupBytes += buffers[bufferIndexOffset + i2].byteLength; + } + const groupBuffer = new ArrayBuffer(groupBytes); + const groupByteBuffer = new Uint8Array(groupBuffer); + let groupBufferOffset = 0; + for (let i2 = 0; i2 < numBuffers; i2++) { + const buffer2 = new Uint8Array(buffers[bufferIndexOffset + i2]); + groupByteBuffer.set(buffer2, groupBufferOffset); + groupBufferOffset += buffer2.byteLength; + } + const weightsEntries = groupWeightsToFetch[i]; + weightsEntries.forEach((weightsEntry) => { + const byteBuffer = groupBuffer.slice(weightsEntry.groupOffset, weightsEntry.groupOffset + weightsEntry.sizeBytes); + const nameToTensorMap = decodeWeights(byteBuffer, [weightsEntry.manifestEntry]); + for (const name in nameToTensorMap) { + weightsTensorMap[name] = nameToTensorMap[name]; + } + }); + bufferIndexOffset += numBuffers; + }); + return weightsTensorMap; + }; + } + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var OCTET_STREAM_MIME_TYPE = "application/octet-stream"; + var JSON_TYPE = "application/json"; + var HTTPRequest = class { + constructor(path, loadOptions) { + this.DEFAULT_METHOD = "POST"; + if (loadOptions == null) { + loadOptions = {}; + } + this.weightPathPrefix = loadOptions.weightPathPrefix; + this.onProgress = loadOptions.onProgress; + this.weightUrlConverter = loadOptions.weightUrlConverter; + if (loadOptions.fetchFunc != null) { + assert(typeof loadOptions.fetchFunc === "function", () => "Must pass a function that matches the signature of `fetch` (see https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API)"); + this.fetch = loadOptions.fetchFunc; + } else { + this.fetch = env().platform.fetch; + } + assert(path != null && path.length > 0, () => "URL path for http must not be null, undefined or empty."); + if (Array.isArray(path)) { + assert(path.length === 2, () => `URL paths for http must have a length of 2, (actual length is ${path.length}).`); + } + this.path = path; + if (loadOptions.requestInit != null && loadOptions.requestInit.body != null) { + throw new Error("requestInit is expected to have no pre-existing body, but has one."); + } + this.requestInit = loadOptions.requestInit || {}; + } + async save(modelArtifacts) { + if (modelArtifacts.modelTopology instanceof ArrayBuffer) { + throw new Error("BrowserHTTPRequest.save() does not support saving model topology in binary formats yet."); + } + const init2 = Object.assign({method: this.DEFAULT_METHOD}, this.requestInit); + init2.body = new FormData(); + const weightsManifest = [{ + paths: ["./model.weights.bin"], + weights: modelArtifacts.weightSpecs + }]; + const modelTopologyAndWeightManifest = { + modelTopology: modelArtifacts.modelTopology, + format: modelArtifacts.format, + generatedBy: modelArtifacts.generatedBy, + convertedBy: modelArtifacts.convertedBy, + weightsManifest + }; + if (modelArtifacts.signature != null) { + modelTopologyAndWeightManifest.signature = modelArtifacts.signature; + } + if (modelArtifacts.userDefinedMetadata != null) { + modelTopologyAndWeightManifest.userDefinedMetadata = modelArtifacts.userDefinedMetadata; + } + if (modelArtifacts.modelInitializer != null) { + modelTopologyAndWeightManifest.modelInitializer = modelArtifacts.modelInitializer; + } + init2.body.append("model.json", new Blob([JSON.stringify(modelTopologyAndWeightManifest)], {type: JSON_TYPE}), "model.json"); + if (modelArtifacts.weightData != null) { + init2.body.append("model.weights.bin", new Blob([modelArtifacts.weightData], {type: OCTET_STREAM_MIME_TYPE}), "model.weights.bin"); + } + const response = await this.fetch(this.path, init2); + if (response.ok) { + return { + modelArtifactsInfo: getModelArtifactsInfoForJSON(modelArtifacts), + responses: [response] + }; + } else { + throw new Error(`BrowserHTTPRequest.save() failed due to HTTP response status ${response.status}.`); + } + } + async load() { + const modelConfigRequest = await this.fetch(this.path, this.requestInit); + if (!modelConfigRequest.ok) { + throw new Error(`Request to ${this.path} failed with status code ${modelConfigRequest.status}. Please verify this URL points to the model JSON of the model to load.`); + } + let modelConfig; + try { + modelConfig = await modelConfigRequest.json(); + } catch (e) { + let message = `Failed to parse model JSON of response from ${this.path}.`; + if (this.path.endsWith(".pb")) { + message += " Your path contains a .pb file extension. Support for .pb models have been removed in TensorFlow.js 1.0 in favor of .json models. You can re-convert your Python TensorFlow model using the TensorFlow.js 1.0 conversion scripts or you can convert your.pb models with the 'pb2json'NPM script in the tensorflow/tfjs-converter repository."; + } else { + message += " Please make sure the server is serving valid JSON for this request."; + } + throw new Error(message); + } + const modelTopology = modelConfig.modelTopology; + const weightsManifest = modelConfig.weightsManifest; + const generatedBy = modelConfig.generatedBy; + const convertedBy = modelConfig.convertedBy; + const format = modelConfig.format; + const signature = modelConfig.signature; + const userDefinedMetadata = modelConfig.userDefinedMetadata; + if (modelTopology == null && weightsManifest == null) { + throw new Error(`The JSON from HTTP path ${this.path} contains neither model topology or manifest for weights.`); + } + let weightSpecs; + let weightData; + if (weightsManifest != null) { + const results = await this.loadWeights(weightsManifest); + [weightSpecs, weightData] = results; + } + const artifacts = { + modelTopology, + weightSpecs, + weightData, + generatedBy, + convertedBy, + format + }; + if (signature != null) { + artifacts.signature = signature; + } + if (userDefinedMetadata != null) { + artifacts.userDefinedMetadata = userDefinedMetadata; + } + const initializer = modelConfig.modelInitializer; + if (initializer) { + artifacts.modelInitializer = initializer; + } + return artifacts; + } + async loadWeights(weightsManifest) { + const weightPath = Array.isArray(this.path) ? this.path[1] : this.path; + const [prefix, suffix] = parseUrl(weightPath); + const pathPrefix = this.weightPathPrefix || prefix; + const weightSpecs = []; + for (const entry of weightsManifest) { + weightSpecs.push(...entry.weights); + } + const fetchURLs = []; + const urlPromises = []; + for (const weightsGroup of weightsManifest) { + for (const path of weightsGroup.paths) { + if (this.weightUrlConverter != null) { + urlPromises.push(this.weightUrlConverter(path)); + } else { + fetchURLs.push(pathPrefix + path + suffix); + } + } + } + if (this.weightUrlConverter) { + fetchURLs.push(...await Promise.all(urlPromises)); + } + const buffers = await loadWeightsAsArrayBuffer(fetchURLs, { + requestInit: this.requestInit, + fetchFunc: this.fetch, + onProgress: this.onProgress + }); + return [weightSpecs, concatenateArrayBuffers(buffers)]; + } + }; + HTTPRequest.URL_SCHEME_REGEX = /^https?:\/\//; + function parseUrl(url) { + const lastSlash = url.lastIndexOf("/"); + const lastSearchParam = url.lastIndexOf("?"); + const prefix = url.substring(0, lastSlash); + const suffix = lastSearchParam > lastSlash ? url.substring(lastSearchParam) : ""; + return [prefix + "/", suffix]; + } + function isHTTPScheme(url) { + return url.match(HTTPRequest.URL_SCHEME_REGEX) != null; + } + var httpRouter = (url, loadOptions) => { + if (typeof fetch === "undefined" && (loadOptions == null || loadOptions.fetchFunc == null)) { + return null; + } else { + let isHTTP = true; + if (Array.isArray(url)) { + isHTTP = url.every((urlItem) => isHTTPScheme(urlItem)); + } else { + isHTTP = isHTTPScheme(url); + } + if (isHTTP) { + return http(url, loadOptions); + } + } + return null; + }; + IORouterRegistry.registerSaveRouter(httpRouter); + IORouterRegistry.registerLoadRouter(httpRouter); + function http(path, loadOptions) { + return new HTTPRequest(path, loadOptions); + } + function browserHTTPRequest(path, loadOptions) { + return http(path, loadOptions); + } + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var PassthroughLoader = class { + constructor(modelArtifacts) { + this.modelArtifacts = modelArtifacts; + } + async load() { + return this.modelArtifacts; + } + }; + var PassthroughSaver = class { + constructor(saveHandler) { + this.saveHandler = saveHandler; + } + async save(modelArtifacts) { + return this.saveHandler(modelArtifacts); + } + }; + function fromMemory(modelArtifacts, weightSpecs, weightData, trainingConfig) { + if (arguments.length === 1) { + const isModelArtifacts = modelArtifacts.modelTopology != null || modelArtifacts.weightSpecs != null; + if (isModelArtifacts) { + return new PassthroughLoader(modelArtifacts); + } else { + console.warn("Please call tf.io.fromMemory() with only one argument. The argument should be of type ModelArtifacts. The multi-argument signature of tf.io.fromMemory() has been deprecated and will be removed in a future release."); + return new PassthroughLoader({modelTopology: modelArtifacts}); + } + } else { + console.warn("Please call tf.io.fromMemory() with only one argument. The argument should be of type ModelArtifacts. The multi-argument signature of tf.io.fromMemory() has been deprecated and will be removed in a future release."); + return new PassthroughLoader({ + modelTopology: modelArtifacts, + weightSpecs, + weightData, + trainingConfig + }); + } + } + function withSaveHandler(saveHandler) { + return new PassthroughSaver(saveHandler); + } + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var math_exports = {}; + __export2(math_exports, { + confusionMatrix: () => confusionMatrix + }); + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + function matMul_(a, b, transposeA = false, transposeB = false) { + let $a = convertToTensor(a, "a", "matMul"); + let $b = convertToTensor(b, "b", "matMul"); + [$a, $b] = makeTypesMatch($a, $b); + const inputs = {a: $a, b: $b}; + const attrs = {transposeA, transposeB}; + return ENGINE.runKernel(BatchMatMul, inputs, attrs); + } + var matMul = op({matMul_}); + /** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + function oneHot_(indices, depth, onValue = 1, offValue = 0) { + if (depth < 2) { + throw new Error(`Error in oneHot: depth must be >=2, but it is ${depth}`); + } + const $indices = convertToTensor(indices, "indices", "oneHot", "int32"); + const inputs = {indices: $indices}; + const attrs = {depth, onValue, offValue}; + return ENGINE.runKernel(OneHot, inputs, attrs); + } + var oneHot = op({oneHot_}); + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + function transpose_(x, perm) { + const $x = convertToTensor(x, "x", "transpose"); + if (perm == null) { + perm = $x.shape.map((s, i) => i).reverse(); + } + assert($x.rank === perm.length, () => `Error in transpose: rank of input ${$x.rank} must match length of perm ${perm}.`); + perm.forEach((axis) => { + assert(axis >= 0 && axis < $x.rank, () => `All entries in 'perm' must be between 0 and ${$x.rank - 1} but got ${perm}`); + }); + if ($x.rank <= 1) { + return $x.clone(); + } + const inputs = {x: $x}; + const attrs = {perm}; + return ENGINE.runKernel(Transpose, inputs, attrs); + } + var transpose = op({transpose_}); + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + function confusionMatrix_(labels2, predictions, numClasses) { + const $labels = convertToTensor(labels2, "labels", "confusionMatrix"); + const $predictions = convertToTensor(predictions, "predictions", "confusionMatrix"); + assert(numClasses == null || numClasses > 0 && Number.isInteger(numClasses), () => `If provided, numClasses must be a positive integer, but got ${numClasses}`); + assert($labels.rank === 1, () => `Expected the rank of labels to be 1, but got ${$labels.rank}`); + assert($predictions.rank === 1, () => `Expected the rank of predictions to be 1, but got ${$predictions.rank}`); + assert($labels.shape[0] === $predictions.shape[0], () => `Mismatch in the number of examples: ${$labels.shape[0]} vs. ${$predictions.shape[0]}. Labels and predictions should have the same number of elements.`); + assert(numClasses > 0 && Number.isInteger(numClasses), () => `numClasses is required to be a positive integer, but got ${numClasses}`); + const oneHotLabels = oneHot(cast($labels, "int32"), numClasses); + const oneHotPredictions = oneHot(cast($predictions, "int32"), numClasses); + const oneHotLabelsT = transpose(oneHotLabels); + const product = matMul(oneHotLabelsT, oneHotPredictions); + return cast(product, "int32"); + } + var confusionMatrix = op({confusionMatrix_}); + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var browser_exports = {}; + __export2(browser_exports, { + fromPixels: () => fromPixels, + fromPixelsAsync: () => fromPixelsAsync, + toPixels: () => toPixels + }); + /** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + function tensor3d(values, shape, dtype) { + assertNonNull(values); + if (shape != null && shape.length !== 3) { + throw new Error("tensor3d() requires shape to have three numbers"); + } + const inferredShape = inferShape(values, dtype); + if (inferredShape.length !== 3 && inferredShape.length !== 1) { + throw new Error("tensor3d() requires values to be number[][][] or flat/TypedArray"); + } + if (inferredShape.length === 1 && shape == null) { + throw new Error("tensor3d() requires shape to be provided when `values` are a flat array"); + } + return makeTensor(values, shape, inferredShape, dtype); + } + /** + * @license + * Copyright 2019 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + var fromPixels2DContext; + function fromPixels_(pixels, numChannels = 3) { + if (numChannels > 4) { + throw new Error("Cannot construct Tensor with more than 4 channels from pixels."); + } + if (pixels == null) { + throw new Error("pixels passed to tf.browser.fromPixels() can not be null"); + } + let isPixelData2 = false; + let isImageData = false; + let isVideo = false; + let isImage = false; + let isCanvasLike = false; + let isImageBitmap = false; + if (pixels.data instanceof Uint8Array) { + isPixelData2 = true; + } else if (typeof ImageData !== "undefined" && pixels instanceof ImageData) { + isImageData = true; + } else if (typeof HTMLVideoElement !== "undefined" && pixels instanceof HTMLVideoElement) { + isVideo = true; + } else if (typeof HTMLImageElement !== "undefined" && pixels instanceof HTMLImageElement) { + isImage = true; + } else if (pixels.getContext != null) { + isCanvasLike = true; + } else if (typeof ImageBitmap !== "undefined" && pixels instanceof ImageBitmap) { + isImageBitmap = true; + } else { + throw new Error(`pixels passed to tf.browser.fromPixels() must be either an HTMLVideoElement, HTMLImageElement, HTMLCanvasElement, ImageData in browser, or OffscreenCanvas, ImageData in webworker or {data: Uint32Array, width: number, height: number}, but was ${pixels.constructor.name}`); + } + if (isVideo) { + const HAVE_CURRENT_DATA_READY_STATE = 2; + if (isVideo && pixels.readyState < HAVE_CURRENT_DATA_READY_STATE) { + throw new Error("The video element has not loaded data yet. Please wait for `loadeddata` event on the